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);
 							}
 						}