From 61736b6ae2d26ce69f9e371569d6599c4ba2d331 Mon Sep 17 00:00:00 2001
From: Florian Hoelzl <hoelzl@fortiss.org>
Date: Mon, 28 Nov 2011 16:43:14 +0000
Subject: [PATCH] ExtendableMultiPageEditor is returned as IModelEditor if it
 is the active editor (and no sub-editor is instance of IModelEditor). refs
 331

---
 .../kernel/ui/extension/IModelEditor.java     |  5 +--
 .../internal/ModelEditorBindingService.java   | 13 +++++---
 .../editor/ExtendableMultiPageEditor.java     | 31 +++++++++++++++++--
 .../service/IModelEditorBindingService.java   |  4 +--
 4 files changed, 41 insertions(+), 12 deletions(-)

diff --git a/org.fortiss.tooling.kernel.ui/trunk/src/org/fortiss/tooling/kernel/ui/extension/IModelEditor.java b/org.fortiss.tooling.kernel.ui/trunk/src/org/fortiss/tooling/kernel/ui/extension/IModelEditor.java
index ac8290e00..3caba2c5e 100644
--- a/org.fortiss.tooling.kernel.ui/trunk/src/org/fortiss/tooling/kernel/ui/extension/IModelEditor.java
+++ b/org.fortiss.tooling.kernel.ui/trunk/src/org/fortiss/tooling/kernel/ui/extension/IModelEditor.java
@@ -26,11 +26,9 @@ import org.eclipse.ui.IEditorPart;
  * @author hoelzl
  * @author $Author$
  * @version $Rev$
- * @ConQAT.Rating RED Hash:
+ * @ConQAT.Rating YELLOW Hash: F0A94041C50D164FB6A321C68DB038D5
  */
 public interface IModelEditor<T extends EObject> extends IEditorPart {
-	// FIXME (FH): define
-
 	/** Returns the edited object. */
 	T getEditedObject();
 
@@ -39,5 +37,4 @@ public interface IModelEditor<T extends EObject> extends IEditorPart {
 
 	/** Clears all highlightings from the editor. */
 	void clearAllHighlights();
-
 }
diff --git a/org.fortiss.tooling.kernel.ui/trunk/src/org/fortiss/tooling/kernel/ui/internal/ModelEditorBindingService.java b/org.fortiss.tooling.kernel.ui/trunk/src/org/fortiss/tooling/kernel/ui/internal/ModelEditorBindingService.java
index 772e569fe..8e0002d40 100644
--- a/org.fortiss.tooling.kernel.ui/trunk/src/org/fortiss/tooling/kernel/ui/internal/ModelEditorBindingService.java
+++ b/org.fortiss.tooling.kernel.ui/trunk/src/org/fortiss/tooling/kernel/ui/internal/ModelEditorBindingService.java
@@ -52,7 +52,7 @@ import org.fortiss.tooling.kernel.utils.ModelElementUtils;
  * @author hoelzl
  * @author $Author$
  * @version $Rev$
- * @ConQAT.Rating YELLOW Hash: D719F4D54DBF1707B1BE0B6FEA65624A
+ * @ConQAT.Rating YELLOW Hash: 3B1883C7F53B739120A1E2B507BCB8AB
  */
 public class ModelEditorBindingService extends
 		EObjectAwareServiceBase<IModelEditorBinding<EObject>> implements
@@ -259,9 +259,14 @@ public class ModelEditorBindingService extends
 		IEditorPart activeEditor = PlatformUI.getWorkbench()
 				.getActiveWorkbenchWindow().getActivePage().getActiveEditor();
 		if (activeEditor instanceof ExtendableMultiPageEditor) {
-			return ((ExtendableMultiPageEditor) activeEditor)
-					.getActiveModelEditor();
-		} else if (activeEditor instanceof IModelEditor) {
+			ExtendableMultiPageEditor extEditor = (ExtendableMultiPageEditor) activeEditor;
+			IModelEditor<EObject> inner = extEditor.getActiveModelEditor();
+			if (inner != null) {
+				return inner;
+			}
+			return extEditor;
+		}
+		if (activeEditor instanceof IModelEditor) {
 			return (IModelEditor<EObject>) activeEditor;
 		}
 		return null;
diff --git a/org.fortiss.tooling.kernel.ui/trunk/src/org/fortiss/tooling/kernel/ui/internal/editor/ExtendableMultiPageEditor.java b/org.fortiss.tooling.kernel.ui/trunk/src/org/fortiss/tooling/kernel/ui/internal/editor/ExtendableMultiPageEditor.java
index 5708234da..5d099560b 100644
--- a/org.fortiss.tooling.kernel.ui/trunk/src/org/fortiss/tooling/kernel/ui/internal/editor/ExtendableMultiPageEditor.java
+++ b/org.fortiss.tooling.kernel.ui/trunk/src/org/fortiss/tooling/kernel/ui/internal/editor/ExtendableMultiPageEditor.java
@@ -61,8 +61,7 @@ import org.fortiss.tooling.kernel.ui.util.PropertiesConstantUtils;
  */
 public class ExtendableMultiPageEditor extends MultiPageEditorPart implements
 		ITabbedPropertySheetPageContributor, CommandStackListener,
-		ISaveablePart {
-
+		ISaveablePart, IModelEditor<EObject> {
 	/** The editor's ID. */
 	public static String ID = ExtendableMultiPageEditor.class.getName();
 
@@ -278,4 +277,32 @@ public class ExtendableMultiPageEditor extends MultiPageEditorPart implements
 		}
 		return null;
 	}
+
+	/** {@inheritDoc} */
+	@Override
+	public EObject getEditedObject() {
+		return editedObject;
+	}
+
+	/** {@inheritDoc} */
+	@SuppressWarnings("rawtypes")
+	@Override
+	public void setHighlight(EObject element, boolean highlighted) {
+		// delegate to active editor
+		IEditorPart part = getActiveEditor();
+		if (part instanceof IModelEditor) {
+			((IModelEditor) part).setHighlight(element, highlighted);
+		}
+	}
+
+	/** {@inheritDoc} */
+	@SuppressWarnings("rawtypes")
+	@Override
+	public void clearAllHighlights() {
+		// delegate to active editor
+		IEditorPart part = getActiveEditor();
+		if (part instanceof IModelEditor) {
+			((IModelEditor) part).clearAllHighlights();
+		}
+	}
 }
diff --git a/org.fortiss.tooling.kernel.ui/trunk/src/org/fortiss/tooling/kernel/ui/service/IModelEditorBindingService.java b/org.fortiss.tooling.kernel.ui/trunk/src/org/fortiss/tooling/kernel/ui/service/IModelEditorBindingService.java
index 6e53554a7..526dbccd8 100644
--- a/org.fortiss.tooling.kernel.ui/trunk/src/org/fortiss/tooling/kernel/ui/service/IModelEditorBindingService.java
+++ b/org.fortiss.tooling.kernel.ui/trunk/src/org/fortiss/tooling/kernel/ui/service/IModelEditorBindingService.java
@@ -33,7 +33,7 @@ import org.fortiss.tooling.kernel.ui.internal.ModelEditorBindingService;
  * @author hoelzl
  * @author $Author$
  * @version $Rev$
- * @ConQAT.Rating YELLOW Hash: 8EFBD4397AB482FDAAD1F96749BBEAE0
+ * @ConQAT.Rating YELLOW Hash: 575EDF6DF5A306410AC134948FAF6D8D
  */
 public interface IModelEditorBindingService {
 
@@ -46,7 +46,7 @@ public interface IModelEditorBindingService {
 	/** Closes editors which depend on the given element or a sub-element. */
 	void closeEditors(EObject parentElement);
 
-	/** Returns the currently editor. */
+	/** Returns the currently active editor. */
 	IModelEditor<EObject> getActiveEditor();
 
 	/**
-- 
GitLab