boolean oldFieldState = m_field;
m_field = newFieldState;
//
final String oldVariable = getVariableIdentifier();
setVariableIdentifier(newVariable);
final TypeDeclaration rootNode = JavaInfoUtils.getTypeDeclaration(javaInfoRoot);
//
if (!oldFieldState && newFieldState) {
ExecutionUtils.run(javaInfoRoot, new RunnableEx() {
public void run() throws Exception {
BodyDeclarationTarget fieldTarget = new BodyDeclarationTarget(rootNode, null, true);
javaInfoRoot.getEditor().addFieldDeclaration(
"private " + type + " " + newVariable + ";",
fieldTarget);
}
});
} else if (oldFieldState && !newFieldState) {
ExecutionUtils.run(javaInfoRoot, new RunnableEx() {
public void run() throws Exception {
for (FieldDeclaration field : rootNode.getFields()) {
VariableDeclarationFragment fragment = DomGenerics.fragments(field).get(0);
if (fragment.getName().getIdentifier().equals(oldVariable)) {
javaInfoRoot.getEditor().removeBodyDeclaration(field);
return;
}
}
Assert.fail("Undefine binding field: " + oldVariable);
}
});
} else if (oldFieldState && newFieldState) {
ExecutionUtils.run(javaInfoRoot, new RunnableEx() {
public void run() throws Exception {
for (FieldDeclaration field : rootNode.getFields()) {
VariableDeclarationFragment fragment = DomGenerics.fragments(field).get(0);
if (fragment.getName().getIdentifier().equals(oldVariable)) {
javaInfoRoot.getEditor().setIdentifier(fragment.getName(), newVariable);
return;
}