diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/attribute/AbstractAttribute.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/attribute/AbstractAttribute.java index 67a47dd5d78b54d5420c382fc5209447de17ed5b..0de1ef287ce66ad14499141c51fe22e03cea03e6 100644 --- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/attribute/AbstractAttribute.java +++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/attribute/AbstractAttribute.java @@ -135,12 +135,15 @@ public abstract class AbstractAttribute implements IPropertySource, Cloneable { } public void setValue(Object value) { - setValue(value, true); + setValue(value, true, true); } - public void setValue(Object value, Boolean firePropertyChange) { + public void setValue(Object value, Boolean firePropertyChange, + Boolean setInitVal) { Object oldVal = this.value; this.value = value; + if (setInitVal) + this.initValue = value; if (firePropertyChange && control != null) control.getListeners().firePropertyChange(getID(), oldVal, value); } diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/model/BControl.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/model/BControl.java index 019ad1abd5b82355127dca9f8f40165990f645e9..5b69d5695fd63a38b6925aa1825dfb410b7a1386 100644 --- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/model/BControl.java +++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/model/BControl.java @@ -228,11 +228,16 @@ public abstract class BControl implements IAdaptable, Cloneable { } public boolean setAttributeValue(String attributeID, Object value) { - return setAttributeValue(attributeID, value, true); + return setAttributeValue(attributeID, value, true, true); } public boolean setAttributeValue(String attributeID, Object value, Boolean firePropertyChange) { + return setAttributeValue(attributeID, value, firePropertyChange, true); + } + + public boolean setAttributeValue(String attributeID, Object value, + Boolean firePropertyChange, Boolean setInitVal) { AbstractAttribute atr = attributes.get(attributeID); @@ -247,7 +252,7 @@ public abstract class BControl implements IAdaptable, Cloneable { || !atr.isEditable()) return true; - atr.setValue(value, firePropertyChange); + atr.setValue(value, firePropertyChange, setInitVal); return true; diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/observer/wizard/WizardObserverCSwitchCoordinates.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/observer/wizard/WizardObserverCSwitchCoordinates.java index 6df01de5a50d435b92bd3ce6b7f0214055af63df..38305895ce7b0dc8bf14daf12637378cd77d9eb9 100644 --- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/observer/wizard/WizardObserverCSwitchCoordinates.java +++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/observer/wizard/WizardObserverCSwitchCoordinates.java @@ -94,8 +94,10 @@ public class WizardObserverCSwitchCoordinates extends ObserverWizard { .getBcontrol(); BControl bControl = control.getChild(controlID); if (bControl != null) { - bControl.setAttributeValue(attributeX, x); - bControl.setAttributeValue(attributeY, y); + bControl.setAttributeValue(attributeX, x, + true, false); + bControl.setAttributeValue(attributeY, y, + true, false); } lastChangedControlID = controlID; } diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/observer/wizard/WizardObserverListenOperationByPredicate.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/observer/wizard/WizardObserverListenOperationByPredicate.java index 5042f6a77c25818953c8acc3e05b6b58ae22affd..e5bf19cf76510f3bfe7df16a056fc6c5a3239c65 100644 --- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/observer/wizard/WizardObserverListenOperationByPredicate.java +++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/observer/wizard/WizardObserverListenOperationByPredicate.java @@ -20,11 +20,13 @@ import org.eclipse.jface.dialogs.MessageDialog; import org.eclipse.jface.viewers.CellEditor; import org.eclipse.jface.viewers.ComboBoxViewerCellEditor; import org.eclipse.jface.viewers.EditingSupport; +import org.eclipse.jface.viewers.ISelectionChangedListener; import org.eclipse.jface.viewers.IStructuredSelection; import org.eclipse.jface.viewers.ITableColorProvider; import org.eclipse.jface.viewers.ITableFontProvider; import org.eclipse.jface.viewers.ITableLabelProvider; import org.eclipse.jface.viewers.LabelProvider; +import org.eclipse.jface.viewers.SelectionChangedEvent; import org.eclipse.jface.viewers.StructuredSelection; import org.eclipse.jface.viewers.TableViewer; import org.eclipse.jface.viewers.TableViewerColumn; @@ -56,6 +58,7 @@ import de.bmotionstudio.gef.editor.edit.PredicateEditingSupport; import de.bmotionstudio.gef.editor.model.BControl; import de.bmotionstudio.gef.editor.observer.ListenOperationByPredicate; import de.bmotionstudio.gef.editor.observer.Observer; +import de.bmotionstudio.gef.editor.observer.ObserverEvalObject; import de.bmotionstudio.gef.editor.observer.ObserverWizard; import de.bmotionstudio.gef.editor.property.CheckboxCellEditorHelper; import de.bmotionstudio.gef.editor.scheduler.PredicateOperation; @@ -63,6 +66,8 @@ import de.bmotionstudio.gef.editor.util.BMotionWizardUtil; public class WizardObserverListenOperationByPredicate extends ObserverWizard { + private String lastChangedAttributeID; + private class ObserverListenOperationByPredicatePage extends WizardPage { private TableViewer tableViewer; @@ -83,6 +88,35 @@ public class WizardObserverListenOperationByPredicate extends ObserverWizard { tableViewer = BMotionWizardUtil.createBMotionWizardTableViewer( container, PredicateOperation.class, ((BMotionAbstractWizard) getWizard()).getName()); + tableViewer + .addSelectionChangedListener(new ISelectionChangedListener() { + + @Override + public void selectionChanged(SelectionChangedEvent event) { + IStructuredSelection selection = (IStructuredSelection) event + .getSelection(); + Object firstElement = selection.getFirstElement(); + if (firstElement instanceof ObserverEvalObject) { + + ObserverEvalObject observerEvalObject = (ObserverEvalObject) firstElement; + BControl control = getBControl(); + + if (lastChangedAttributeID != null) + control.restoreDefaultValue(lastChangedAttributeID); + + PredicateOperation obj = (PredicateOperation) observerEvalObject; + String attribute = obj + .getAttribute(); + Object value = obj.getValue(); + control.setAttributeValue(attribute, value, + true, false); + + lastChangedAttributeID = attribute; + + } + } + + }); TableViewerColumn column = new TableViewerColumn(tableViewer, SWT.NONE); @@ -315,8 +349,15 @@ public class WizardObserverListenOperationByPredicate extends ObserverWizard { "ObserverListenOperationByPredicatePage")); } + @Override + public boolean performCancel() { + getBControl().restoreDefaultValue(lastChangedAttributeID); + return super.performCancel(); + } + @Override protected Boolean prepareToFinish() { + getBControl().restoreDefaultValue(lastChangedAttributeID); if (((ListenOperationByPredicate) getObserver()).getList().size() == 0) { setObserverDelete(true); } else { diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/observer/wizard/WizardObserverSetAttribute.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/observer/wizard/WizardObserverSetAttribute.java index 737d8d6632968599bcb59ec2d4bf874ba9891e15..fae15b93d5eb8f872d7481ec19c451c0a67c2588 100644 --- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/observer/wizard/WizardObserverSetAttribute.java +++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/observer/wizard/WizardObserverSetAttribute.java @@ -115,7 +115,8 @@ public class WizardObserverSetAttribute extends ObserverWizard { String attribute = setAttributeObj .getAttribute(); Object value = setAttributeObj.getValue(); - control.setAttributeValue(attribute, value); + control.setAttributeValue(attribute, value, + true, false); lastChangedAttributeID = attribute; diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/observer/wizard/WizardObserverSwitchCoordinates.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/observer/wizard/WizardObserverSwitchCoordinates.java index 6915a2c1658ef89ab358ae982bb18312dee1d799..b0082eefde87049d99f7c320587a2c3916b47636 100644 --- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/observer/wizard/WizardObserverSwitchCoordinates.java +++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/observer/wizard/WizardObserverSwitchCoordinates.java @@ -89,8 +89,10 @@ public class WizardObserverSwitchCoordinates extends ObserverWizard { String attributeY = AttributeConstants.ATTRIBUTE_Y; String x = toggleObjectCoordinates.getX(); String y = toggleObjectCoordinates.getY(); - control.setAttributeValue(attributeX, x); - control.setAttributeValue(attributeY, y); + control.setAttributeValue(attributeX, x, true, + false); + control.setAttributeValue(attributeY, y, true, + false); } } diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/observer/wizard/WizardObserverSwitchImage.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/observer/wizard/WizardObserverSwitchImage.java index b351ab0855b25b5cba5e4d2b55594aab52e411ac..b9e689f1bb1cbeb0da42dc59d61602594492e33a 100644 --- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/observer/wizard/WizardObserverSwitchImage.java +++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/observer/wizard/WizardObserverSwitchImage.java @@ -88,7 +88,8 @@ public class WizardObserverSwitchImage extends ObserverWizard { ToggleObjectImage toggleObjImage = (ToggleObjectImage) observerEvalObject; String attribute = AttributeConstants.ATTRIBUTE_IMAGE; String image = toggleObjImage.getImage(); - control.setAttributeValue(attribute, image); + control.setAttributeValue(attribute, image, + true, false); } }