Bug 529998 - [revision] problem to lauch revision mode and create author
diff --git a/plugins/revision/org.eclipse.papyrus.revisiontool/src/org/eclipse/papyrus/revision/tool/advice/AdviceRemove.java b/plugins/revision/org.eclipse.papyrus.revisiontool/src/org/eclipse/papyrus/revision/tool/advice/AdviceRemove.java
index f64a4b0..8d6603a 100755
--- a/plugins/revision/org.eclipse.papyrus.revisiontool/src/org/eclipse/papyrus/revision/tool/advice/AdviceRemove.java
+++ b/plugins/revision/org.eclipse.papyrus.revisiontool/src/org/eclipse/papyrus/revision/tool/advice/AdviceRemove.java
@@ -18,6 +18,7 @@
 import org.eclipse.gmf.runtime.common.core.command.IdentityCommand;
 import org.eclipse.gmf.runtime.emf.type.core.edithelper.AbstractEditHelperAdvice;
 import org.eclipse.gmf.runtime.emf.type.core.requests.DestroyElementRequest;
+import org.eclipse.gmf.runtime.emf.type.core.requests.IEditCommandRequest;
 import org.eclipse.papyrus.infra.emf.gmf.command.EMFtoGMFCommandWrapper;
 import org.eclipse.papyrus.revision.tool.command.PreventRemoveCommand;
 import org.eclipse.papyrus.revision.tool.ui.ReviewsEditor;
diff --git a/plugins/revision/org.eclipse.papyrus.revisiontool/src/org/eclipse/papyrus/revision/tool/core/ReviewResourceManager.java b/plugins/revision/org.eclipse.papyrus.revisiontool/src/org/eclipse/papyrus/revision/tool/core/ReviewResourceManager.java
index 288b6dd..60c1f26 100755
--- a/plugins/revision/org.eclipse.papyrus.revisiontool/src/org/eclipse/papyrus/revision/tool/core/ReviewResourceManager.java
+++ b/plugins/revision/org.eclipse.papyrus.revisiontool/src/org/eclipse/papyrus/revision/tool/core/ReviewResourceManager.java
@@ -253,7 +253,7 @@
 			final Model reviewModel=getCurrentReviewModel();
 			NamedElement author=reviewModel.getPackagedElement(authorName);
 			if( author==null||!(author instanceof Actor)){
-				RecordingCommand cmd= new RecordingCommand(getDomain(), "createReviewModel") {
+				final RecordingCommand cmd= new RecordingCommand(getDomain(), "createReviewModel") {
 					@Override
 					protected void doExecute() {
 						currentAuthor=UMLFactory.eINSTANCE.createActor();
@@ -267,7 +267,9 @@
 						currentAuthor.setValue(authorStereotype, I_VersioningStereotype.AUTHOR_COLOR_ATT, colorString);
 					}
 				};
-				getDomain().getCommandStack().execute(cmd);
+						getDomain().getCommandStack().execute(cmd);
+
+				
 			}
 			else{
 				currentAuthor=(Actor)author;
diff --git a/plugins/revision/org.eclipse.papyrus.revisiontool/src/org/eclipse/papyrus/revision/tool/handlers/LaunchRevisionMode.java b/plugins/revision/org.eclipse.papyrus.revisiontool/src/org/eclipse/papyrus/revision/tool/handlers/LaunchRevisionMode.java
index fd2b9b1..dc58c0c 100755
--- a/plugins/revision/org.eclipse.papyrus.revisiontool/src/org/eclipse/papyrus/revision/tool/handlers/LaunchRevisionMode.java
+++ b/plugins/revision/org.eclipse.papyrus.revisiontool/src/org/eclipse/papyrus/revision/tool/handlers/LaunchRevisionMode.java
@@ -13,30 +13,34 @@
  *****************************************************************************/
 package org.eclipse.papyrus.revision.tool.handlers;
 
+import java.util.Map;
+
 import org.eclipse.core.commands.Command;
 import org.eclipse.core.commands.ExecutionEvent;
 import org.eclipse.core.commands.ExecutionException;
 import org.eclipse.papyrus.revision.tool.ui.ReviewsEditor;
 import org.eclipse.ui.IWorkbenchPart;
 import org.eclipse.ui.PlatformUI;
+import org.eclipse.ui.commands.IElementUpdater;
 import org.eclipse.ui.handlers.HandlerUtil;
+import org.eclipse.ui.menus.UIElement;
 
 /**
  * This handler is used to launch the revision mode
  *
  */
-public class LaunchRevisionMode extends RevisionAbstractHandler {
+public class LaunchRevisionMode extends RevisionAbstractHandler implements IElementUpdater {
 
 	@Override
 	public Object execute(ExecutionEvent event) throws ExecutionException {
 
 		Command command = event.getCommand();
-		boolean oldValue = HandlerUtil.toggleCommandState(command);
+
 		IWorkbenchPart part=PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().findView("org.eclipse.papyrus.revisiontool.commentview");
 		if( part instanceof ReviewsEditor){
-			if(oldValue==false){
+			boolean isRunning = ((ReviewsEditor)part).modeRevisionIsRunning();
+			if(isRunning==false){
 				//now the revison mode is activated
-
 				((ReviewsEditor)part).startModeRevision();
 			}
 			else{
@@ -53,5 +57,18 @@
 		}
 		return true;
 	}
+	@Override
+	public void updateElement(UIElement uiElement, Map map) {
+		IWorkbenchPart part=PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().findView("org.eclipse.papyrus.revisiontool.commentview");
+		if( part instanceof ReviewsEditor){
+			boolean isRunning = ((ReviewsEditor)part).modeRevisionIsRunning();
+			uiElement.setChecked(isRunning);
+		}
+		else {
+			uiElement.setChecked(false);
+		}
+	}
 
 }
+
+
diff --git a/plugins/revision/org.eclipse.papyrus.revisiontool/src/org/eclipse/papyrus/revision/tool/ui/ReviewsEditor.java b/plugins/revision/org.eclipse.papyrus.revisiontool/src/org/eclipse/papyrus/revision/tool/ui/ReviewsEditor.java
index faff9fb..25feb72 100755
--- a/plugins/revision/org.eclipse.papyrus.revisiontool/src/org/eclipse/papyrus/revision/tool/ui/ReviewsEditor.java
+++ b/plugins/revision/org.eclipse.papyrus.revisiontool/src/org/eclipse/papyrus/revision/tool/ui/ReviewsEditor.java
@@ -279,6 +279,7 @@
 		viewer.setInput(reviewResourceManager.getCurrentReviewModel());
 		reviewResourceManager.getDomain().addResourceSetListener(getResourceListener());
 		reviewResourceManager.startModeRevision();
+		reviewResourceManager.getCurrentAuthor();
 	}
 	/**
 	 * stop the model revision and load review model in the editor
@@ -290,6 +291,12 @@
 		
 	}
 	/**
+	 * @return true if the mode revision is running.
+	 */
+	public boolean modeRevisionIsRunning() {
+		return reviewResourceManager.modeRevisionRunning();
+	}
+	/**
 	 * Retrieves the {@link IPropertySheetPage} that his Model Explorer uses.
 	 *
 	 * @return