Bug 440533 - Undo/Redo should be possible after save

Change-Id: I0e34f4433f789172e670ec29c9cfb79cfb5baecd
Signed-off-by: Fabian Miehe <fabian.miehe@cassidian.com>
diff --git a/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/common/XMIModelResource.java b/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/common/XMIModelResource.java
index 1695e22..bdacafc 100644
--- a/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/common/XMIModelResource.java
+++ b/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/common/XMIModelResource.java
@@ -45,7 +45,7 @@
 	private EditingDomain editingDomain;
 	private Resource resource;
 	private List<ModelListener> listeners = new ArrayList<IModelResource.ModelListener>();
-	private boolean dirty;
+
 	private IObservableList list;
 
 	public XMIModelResource(URI uri) {
@@ -58,7 +58,6 @@
 
 			@Override
 			public void commandStackChanged(EventObject event) {
-				dirty = true;
 				fireDirtyChanged();
 				fireCommandStackChanged();
 			}
@@ -126,7 +125,7 @@
 
 	@Override
 	public boolean isDirty() {
-		return dirty && getEditingDomain().getCommandStack().canUndo();
+		return ((BasicCommandStack) getEditingDomain().getCommandStack()).isSaveNeeded();
 	}
 
 	private void fireDirtyChanged() {
@@ -146,10 +145,13 @@
 		Map<String, String> map = new HashMap<String, String>();
 		try {
 			resource.save(map);
-			editingDomain.getCommandStack().flush();
-			dirty = false;
+
+			BasicCommandStack commandStack = (BasicCommandStack) getEditingDomain().getCommandStack();
+			commandStack.saveIsDone();
+
 			fireDirtyChanged();
 			fireCommandStackChanged();
+
 		} catch (Exception e) {
 			// TODO: handle exception
 			e.printStackTrace();
@@ -157,5 +159,4 @@
 
 		return Status.OK_STATUS;
 	}
-
 }