From 987956b81e1efbb4dc049e02569922dfaee4c38e Mon Sep 17 00:00:00 2001
From: Florian Hoelzl <hoelzl@fortiss.org>
Date: Wed, 2 Mar 2011 13:53:02 +0000
Subject: [PATCH] reworked open editor code added open after new menu
 composition

---
 .../kernel/internal/EditorService.java        | 22 +++++++++++++++++++
 .../internal/navigator/NavigatorViewPart.java | 21 ++----------------
 .../kernel/internal/navigator/NewMenu.java    |  3 ++-
 .../kernel/services/IEditorService.java       |  3 +++
 4 files changed, 29 insertions(+), 20 deletions(-)

diff --git a/org.fortiss.tooling.kernel/trunk/src/org/fortiss/tooling/kernel/internal/EditorService.java b/org.fortiss.tooling.kernel/trunk/src/org/fortiss/tooling/kernel/internal/EditorService.java
index a8ca54c0e..d64760dcb 100644
--- a/org.fortiss.tooling.kernel/trunk/src/org/fortiss/tooling/kernel/internal/EditorService.java
+++ b/org.fortiss.tooling.kernel/trunk/src/org/fortiss/tooling/kernel/internal/EditorService.java
@@ -21,9 +21,15 @@ import java.util.Collections;
 import java.util.Comparator;
 import java.util.List;
 
+import org.conqat.ide.commons.ui.logging.LoggingUtils;
 import org.conqat.lib.commons.collections.CollectionUtils;
 import org.eclipse.emf.ecore.EObject;
+import org.eclipse.ui.PartInitException;
+import org.eclipse.ui.PlatformUI;
+import org.fortiss.tooling.kernel.ToolingKernelActivator;
 import org.fortiss.tooling.kernel.interfaces.IEditorBinding;
+import org.fortiss.tooling.kernel.internal.editor.BindingEditor;
+import org.fortiss.tooling.kernel.internal.editor.ModelElementEditorInput;
 import org.fortiss.tooling.kernel.services.IEditorService;
 
 /**
@@ -56,6 +62,22 @@ public class EditorService extends EObjectAwareService<IEditorBinding<EObject>>
 		}
 	}
 
+	/** {@inheritDoc} */
+	@Override
+	public void openInEditor(EObject element) {
+		try {
+			PlatformUI
+					.getWorkbench()
+					.getActiveWorkbenchWindow()
+					.getActivePage()
+					.openEditor(new ModelElementEditorInput(element),
+							BindingEditor.ID);
+		} catch (final PartInitException e) {
+			LoggingUtils.error(ToolingKernelActivator.getDefault(),
+					"Could not open editor with ID " + BindingEditor.ID, e);
+		}
+	}
+
 	/** {@inheritDoc} */
 	@Override
 	public List<IEditorBinding<EObject>> getBindings(EObject element) {
diff --git a/org.fortiss.tooling.kernel/trunk/src/org/fortiss/tooling/kernel/internal/navigator/NavigatorViewPart.java b/org.fortiss.tooling.kernel/trunk/src/org/fortiss/tooling/kernel/internal/navigator/NavigatorViewPart.java
index 6339b8d4c..90f8a3293 100644
--- a/org.fortiss.tooling.kernel/trunk/src/org/fortiss/tooling/kernel/internal/navigator/NavigatorViewPart.java
+++ b/org.fortiss.tooling.kernel/trunk/src/org/fortiss/tooling/kernel/internal/navigator/NavigatorViewPart.java
@@ -42,13 +42,11 @@ import org.eclipse.ui.IDecoratorManager;
 import org.eclipse.ui.ISelectionListener;
 import org.eclipse.ui.IWorkbenchActionConstants;
 import org.eclipse.ui.IWorkbenchPart;
-import org.eclipse.ui.PartInitException;
 import org.eclipse.ui.PlatformUI;
 import org.eclipse.ui.part.ViewPart;
 import org.eclipse.ui.progress.UIJob;
 import org.fortiss.tooling.kernel.ToolingKernelActivator;
-import org.fortiss.tooling.kernel.internal.editor.BindingEditor;
-import org.fortiss.tooling.kernel.internal.editor.ModelElementEditorInput;
+import org.fortiss.tooling.kernel.services.IEditorService;
 import org.fortiss.tooling.kernel.util.EObjectSelectionUtils;
 import org.unicase.ecp.model.ECPWorkspaceManager;
 import org.unicase.ecp.model.NoWorkspaceException;
@@ -273,23 +271,8 @@ public final class NavigatorViewPart extends ViewPart implements
 			EObject element = EObjectSelectionUtils.getFirstElement(event
 					.getSelection());
 			if (element != null) {
-				openInEditor(element);
+				IEditorService.INSTANCE.openInEditor(element);
 			}
 		}
 	}
-
-	/** Opens an editor for the given element. */
-	private void openInEditor(EObject element) {
-		try {
-			PlatformUI
-					.getWorkbench()
-					.getActiveWorkbenchWindow()
-					.getActivePage()
-					.openEditor(new ModelElementEditorInput(element),
-							BindingEditor.ID);
-		} catch (final PartInitException e) {
-			LoggingUtils.error(ToolingKernelActivator.getDefault(),
-					"Could not open editor with ID " + BindingEditor.ID, e);
-		}
-	}
 }
diff --git a/org.fortiss.tooling.kernel/trunk/src/org/fortiss/tooling/kernel/internal/navigator/NewMenu.java b/org.fortiss.tooling.kernel/trunk/src/org/fortiss/tooling/kernel/internal/navigator/NewMenu.java
index 1ffc233f8..54cab87af 100644
--- a/org.fortiss.tooling.kernel/trunk/src/org/fortiss/tooling/kernel/internal/navigator/NewMenu.java
+++ b/org.fortiss.tooling.kernel/trunk/src/org/fortiss/tooling/kernel/internal/navigator/NewMenu.java
@@ -27,6 +27,7 @@ import org.eclipse.ui.actions.CompoundContributionItem;
 import org.fortiss.tooling.kernel.interfaces.IPrototypeProvider;
 import org.fortiss.tooling.kernel.services.ICommandStackService;
 import org.fortiss.tooling.kernel.services.ICompositorService;
+import org.fortiss.tooling.kernel.services.IEditorService;
 import org.fortiss.tooling.kernel.services.IModelElementService;
 import org.fortiss.tooling.kernel.services.IPrototypeService;
 import org.fortiss.tooling.kernel.services.IPrototypeService.Prototype;
@@ -107,7 +108,7 @@ public class NewMenu extends CompoundContributionItem {
 							EObject newObject = prototype.getPrototypeCopy();
 							if (ICompositorService.INSTANCE.compose(container,
 									newObject, null)) {
-								// TODO (FH): open editor
+								IEditorService.INSTANCE.openInEditor(newObject);
 							}
 						}
 					});
diff --git a/org.fortiss.tooling.kernel/trunk/src/org/fortiss/tooling/kernel/services/IEditorService.java b/org.fortiss.tooling.kernel/trunk/src/org/fortiss/tooling/kernel/services/IEditorService.java
index c2eb53a8c..b32094a34 100644
--- a/org.fortiss.tooling.kernel/trunk/src/org/fortiss/tooling/kernel/services/IEditorService.java
+++ b/org.fortiss.tooling.kernel/trunk/src/org/fortiss/tooling/kernel/services/IEditorService.java
@@ -36,6 +36,9 @@ public interface IEditorService {
 	/** Returns the singleton instance of the service. */
 	public static final IEditorService INSTANCE = new EditorService();
 
+	/** Opens an editor for the given element. */
+	void openInEditor(EObject element);
+
 	/** Returns registered editor bindings for the given {@link EObject}. */
 	List<IEditorBinding<EObject>> getBindings(EObject element);
 }
-- 
GitLab