G
Gast2
Gast
Hallo zusammen,
mal wieder ne Frage zu Undo/Redo und dem EMF Databinding
Ich habe ein Textfeld1 wenn man in diesem was eingibt soll Textfeld 2 automatisch mit einem Wert befüllt werden. Nur leider bekommt mein ModifyListener immer den falschen Wert im Model d.h. das Model ist noch nicht geupdatet. Wenn ich ein Update einbaue bekomme ich aber zuviel undo Events nämlich für jedes Attribut, welches im Model geupdatet wird. In diesem Fall 4. Da ist natürlich auch unschön. Darum meine Frage was ist falsche?
2. Oder sollte ich gar nicht auf das textfeld1 einen Listener setzen sondern ein Adapter als Listener auf das Model setzen und dann den wert ändern?
mal wieder ne Frage zu Undo/Redo und dem EMF Databinding
Ich habe ein Textfeld1 wenn man in diesem was eingibt soll Textfeld 2 automatisch mit einem Wert befüllt werden. Nur leider bekommt mein ModifyListener immer den falschen Wert im Model d.h. das Model ist noch nicht geupdatet. Wenn ich ein Update einbaue bekomme ich aber zuviel undo Events nämlich für jedes Attribut, welches im Model geupdatet wird. In diesem Fall 4. Da ist natürlich auch unschön. Darum meine Frage was ist falsche?
Java:
private void bindValue(){
DataBindingContext bindingContext = new EMFDataBindingContext();
bindingContext.bindValue(WidgetProperties.text(SWT.Modify).observe(textfield1),
EMFProperties.value(MyObjectPackage.Literals.OBJECT__ATT2).observe(myObject));
bindingContext.bindValue(WidgetProperties.text(SWT.Modify).observe(textfield2),
EMFProperties.value(MyObjectPackage.Literals.OBJECT__ATT1).observe(myObject));
bindingContext.bindValue(WidgetProperties.text(SWT.Modify).observe(textfield3),
EMFProperties.value(MyObjectPackage.Literals.OBJECT__ATT3).observe(myObject));
bindingContext.bindValue(WidgetProperties.text(SWT.Modify).observe(textfield4),
EMFProperties.value(MyObjectPackage.Literals.OBJECT__ATT4).observe(myObject));
textfield1.addModifyListener(new ModifyListener() {
@Override
public void modifyText(ModifyEvent e) {
// bindingContext.updateModels();
// Att1 hat noch den falschen Wert
Double double1 = myObject.getAtt1() * 0.66;
myObject.setAtt2(double1);
}
});
}
2. Oder sollte ich gar nicht auf das textfeld1 einen Listener setzen sondern ein Adapter als Listener auf das Model setzen und dann den wert ändern?
Zuletzt bearbeitet von einem Moderator: