added revert handler + ctor for abstract controller
diff --git a/org.eclipse.emf.emfstore.client.ui/plugin.xml b/org.eclipse.emf.emfstore.client.ui/plugin.xml
index 678b54f..c044cb5 100644
--- a/org.eclipse.emf.emfstore.client.ui/plugin.xml
+++ b/org.eclipse.emf.emfstore.client.ui/plugin.xml
@@ -6,7 +6,7 @@
   <extension
         point="org.eclipse.ui.handlers">
       <handler
-            class="org.eclipse.emf.emfstore.client.ui.commands.RevertHandler"
+            class="org.eclipse.emf.emfstore.client.ui.commands.handler.handler.RevertHandler"
             commandId="org.eclipse.emf.emfstore.client.ui.revert">
          <enabledWhen>
             <and>
diff --git a/org.eclipse.emf.emfstore.client.ui/src/org/eclipse/emf/emfstore/client/ui/commands/handler/AbstractEMFStoreUIController.java b/org.eclipse.emf.emfstore.client.ui/src/org/eclipse/emf/emfstore/client/ui/commands/handler/AbstractEMFStoreUIController.java
index 739d504..0e5d7d1 100644
--- a/org.eclipse.emf.emfstore.client.ui/src/org/eclipse/emf/emfstore/client/ui/commands/handler/AbstractEMFStoreUIController.java
+++ b/org.eclipse.emf.emfstore.client.ui/src/org/eclipse/emf/emfstore/client/ui/commands/handler/AbstractEMFStoreUIController.java
@@ -12,7 +12,11 @@
 public abstract class AbstractEMFStoreUIController implements GenericCallback {

 

 	protected Shell shell;

-	protected ProgressMonitorDialog progressDialog;

+	private ProgressMonitorDialog progressDialog;

+

+	public AbstractEMFStoreUIController(Shell shell) {

+		setShell(shell);

+	}

 

 	public Shell getShell() {

 		return shell;

@@ -31,7 +35,7 @@
 		closeProgress();

 	}

 

-	protected ProgressMonitorDialog getProgressMonitorDialog() {

+	protected ProgressMonitorDialog openProgress() {

 		progressDialog = new ProgressMonitorDialog(getShell());

 		progressDialog.open();

 		progressDialog.setCancelable(true);

diff --git a/org.eclipse.emf.emfstore.client.ui/src/org/eclipse/emf/emfstore/client/ui/commands/handler/controller/UIRevertController.java b/org.eclipse.emf.emfstore.client.ui/src/org/eclipse/emf/emfstore/client/ui/commands/handler/controller/UIRevertController.java
new file mode 100644
index 0000000..470c778
--- /dev/null
+++ b/org.eclipse.emf.emfstore.client.ui/src/org/eclipse/emf/emfstore/client/ui/commands/handler/controller/UIRevertController.java
@@ -0,0 +1,37 @@
+package org.eclipse.emf.emfstore.client.ui.commands.handler.controller;

+

+import org.eclipse.emf.emfstore.client.model.ProjectSpace;

+import org.eclipse.emf.emfstore.client.ui.commands.handler.AbstractEMFStoreUIController;

+import org.eclipse.jface.dialogs.MessageDialog;

+import org.eclipse.jface.window.Window;

+import org.eclipse.swt.widgets.Shell;

+

+public class UIRevertController extends AbstractEMFStoreUIController {

+

+	public UIRevertController(Shell shell) {

+		super(shell);

+	}

+

+	public void revert(ProjectSpace projectSpace) {

+		Boolean resultValue = false;

+		MessageDialog dialog = new MessageDialog(null, "Confirmation", null,

+			"Do you really want to revert all your changes on project " + projectSpace.getProjectName(),

+			MessageDialog.QUESTION, new String[] { "Yes", "No" }, 0);

+		int result = dialog.open();

+		if (result == Window.OK) {

+			getProgressMonitor().beginTask("Revert project...", 100);

+			getProgressMonitor().worked(10);

+			// BEGIN SUPRESS CATCH EXCEPTION

+			try {

+				projectSpace.revert();

+				resultValue = true;

+			} catch (RuntimeException e) {

+				handleException(e);

+			}

+		}

+

+		if (resultValue) {

+			MessageDialog.openInformation(null, "Revert", "Reverted project ");

+		}

+	}

+}

diff --git a/org.eclipse.emf.emfstore.client.ui/src/org/eclipse/emf/emfstore/client/ui/commands/handler/controller/UIShareProjectController.java b/org.eclipse.emf.emfstore.client.ui/src/org/eclipse/emf/emfstore/client/ui/commands/handler/controller/UIShareProjectController.java
index 2dca5f2..a1dbe2b 100644
--- a/org.eclipse.emf.emfstore.client.ui/src/org/eclipse/emf/emfstore/client/ui/commands/handler/controller/UIShareProjectController.java
+++ b/org.eclipse.emf.emfstore.client.ui/src/org/eclipse/emf/emfstore/client/ui/commands/handler/controller/UIShareProjectController.java
@@ -7,17 +7,18 @@
 import org.eclipse.emf.emfstore.client.model.impl.ProjectSpaceImpl;

 import org.eclipse.emf.emfstore.client.ui.commands.handler.AbstractEMFStoreUIController;

 import org.eclipse.jface.dialogs.MessageDialog;

+import org.eclipse.jface.dialogs.ProgressMonitorDialog;

 import org.eclipse.swt.widgets.Shell;

 

 public class UIShareProjectController extends AbstractEMFStoreUIController implements GenericCallback {

 

 	public UIShareProjectController(Shell shell) {

-		setShell(shell);

+		super(shell);

 	}

 

 	public void share(ProjectSpace projectSpace) {

-		getProgressMonitorDialog();

-		((ProjectSpaceImpl) projectSpace).shareProject(null, this, getProgressMonitor());

+		ProgressMonitorDialog progressDialog = openProgress();

+		((ProjectSpaceImpl) projectSpace).shareProject(null, this, progressDialog.getProgressMonitor());

 	}

 

 	public void shareCompleted(ProjectSpace projectSpace, boolean successful) {

diff --git a/org.eclipse.emf.emfstore.client.ui/src/org/eclipse/emf/emfstore/client/ui/commands/handler/controller/UIUpdateProjectController.java b/org.eclipse.emf.emfstore.client.ui/src/org/eclipse/emf/emfstore/client/ui/commands/handler/controller/UIUpdateProjectController.java
index 4018ca1..f4736e3 100644
--- a/org.eclipse.emf.emfstore.client.ui/src/org/eclipse/emf/emfstore/client/ui/commands/handler/controller/UIUpdateProjectController.java
+++ b/org.eclipse.emf.emfstore.client.ui/src/org/eclipse/emf/emfstore/client/ui/commands/handler/controller/UIUpdateProjectController.java
@@ -23,7 +23,7 @@
 public class UIUpdateProjectController extends AbstractEMFStoreUIController implements UpdateCallback {

 

 	public UIUpdateProjectController(Shell shell) {

-		this.setShell(shell);

+		super(shell);

 	}

 

 	public void update(ProjectSpace projectSpace) {

@@ -32,7 +32,7 @@
 

 	public void update(ProjectSpace projectSpace, VersionSpec version) {

 		// TODO sanity check projectspace (is null, is shared)

-		getProgressMonitorDialog();

+		openProgress();

 		projectSpace.update(version, this, getProgressMonitor());

 	}

 

diff --git a/org.eclipse.emf.emfstore.client.ui/src/org/eclipse/emf/emfstore/client/ui/commands/handler/handler/RevertHandler.java b/org.eclipse.emf.emfstore.client.ui/src/org/eclipse/emf/emfstore/client/ui/commands/handler/handler/RevertHandler.java
new file mode 100644
index 0000000..7d76bc9
--- /dev/null
+++ b/org.eclipse.emf.emfstore.client.ui/src/org/eclipse/emf/emfstore/client/ui/commands/handler/handler/RevertHandler.java
@@ -0,0 +1,15 @@
+package org.eclipse.emf.emfstore.client.ui.commands.handler.handler;

+

+import org.eclipse.emf.emfstore.client.model.ProjectSpace;

+import org.eclipse.emf.emfstore.client.ui.commands.handler.AbstractEMFStoreHandler;

+import org.eclipse.emf.emfstore.client.ui.commands.handler.controller.UIRevertController;

+

+public class RevertHandler extends AbstractEMFStoreHandler {

+

+	@Override

+	public Object doExecute() {

+		new UIRevertController(getShell()).revert(requireSelection(ProjectSpace.class));

+		return null;

+	}

+

+}

diff --git a/org.eclipse.emf.emfstore.client.ui/src/org/eclipse/emf/emfstore/client/ui/commands/handler/handler/UpdateProjectHandler.java b/org.eclipse.emf.emfstore.client.ui/src/org/eclipse/emf/emfstore/client/ui/commands/handler/handler/UpdateProjectHandler.java
index 586d87b..b4ed62c 100644
--- a/org.eclipse.emf.emfstore.client.ui/src/org/eclipse/emf/emfstore/client/ui/commands/handler/handler/UpdateProjectHandler.java
+++ b/org.eclipse.emf.emfstore.client.ui/src/org/eclipse/emf/emfstore/client/ui/commands/handler/handler/UpdateProjectHandler.java
@@ -13,6 +13,7 @@
 			@Override

 			protected void doRun() {

 				new UIUpdateProjectController(getShell()).update(requireSelection(ProjectSpace.class));

+				// EMFStore.update(requireSelection(ProjectSpace.class));

 			}

 		}.run(true);

 		return null;