From f055db6cce2d2ce3cb86c5bede849254994fc259 Mon Sep 17 00:00:00 2001
From: Florian Hoelzl <hoelzl@fortiss.org>
Date: Wed, 22 Jun 2011 17:39:45 +0000
Subject: [PATCH] unde/redo actions finally work some clean up

---
 .../base/ui/editpart/GraphicalEditPartBase.java      | 12 ++++++++++++
 .../tooling/kernel/ui/base/EObjectActionBase.java    |  1 -
 .../kernel/ui/base/ModelElementHandlerBase.java      |  1 -
 .../tooling/kernel/ui/base/PropertySectionBase.java  |  1 -
 .../interfaces/IBindingEditorPageChangeListener.java |  1 -
 .../kernel/ui/interfaces/ICustomMenuContributor.java |  1 -
 .../tooling/kernel/ui/interfaces/IEditorBinding.java |  1 -
 .../tooling/kernel/ui/internal/ActionService.java    | 12 +++++++++---
 .../kernel/ui/internal/ContextMenuService.java       |  1 -
 .../kernel/ui/internal/ModelElementService.java      |  2 +-
 .../tooling/kernel/ui/internal/NavigatorService.java |  2 +-
 .../kernel/ui/internal/PropertiesService.java        |  4 ++--
 .../kernel/ui/internal/views/LibraryView.java        |  1 -
 .../tooling/kernel/ui/services/IActionService.java   | 12 ++++++++----
 .../kernel/ui/services/IContextMenuService.java      |  3 +--
 .../kernel/ui/services/IEditPartFactoryService.java  |  2 +-
 .../tooling/kernel/ui/services/IEditorService.java   |  2 +-
 .../kernel/ui/services/IModelElementService.java     |  2 +-
 .../kernel/ui/services/INavigatorService.java        |  3 +--
 .../kernel/ui/services/IPropertiesService.java       |  2 +-
 .../tooling/kernel/ui/util/DataBindingUtils.java     |  5 +----
 .../kernel/ui/util/EObjectSelectionUtils.java        | 12 +++++++++---
 22 files changed, 49 insertions(+), 34 deletions(-)

diff --git a/org.fortiss.tooling.base.ui/trunk/src/org/fortiss/tooling/base/ui/editpart/GraphicalEditPartBase.java b/org.fortiss.tooling.base.ui/trunk/src/org/fortiss/tooling/base/ui/editpart/GraphicalEditPartBase.java
index 3ca726740..c5c7c4000 100644
--- a/org.fortiss.tooling.base.ui/trunk/src/org/fortiss/tooling/base/ui/editpart/GraphicalEditPartBase.java
+++ b/org.fortiss.tooling.base.ui/trunk/src/org/fortiss/tooling/base/ui/editpart/GraphicalEditPartBase.java
@@ -86,4 +86,16 @@ public abstract class GraphicalEditPartBase<T extends EObject> extends
 		modelElement.eAdapters().remove(fullRefreshAdapter);
 		super.deactivate();
 	}
+
+	/** {@inheritDoc} */
+	@SuppressWarnings("rawtypes")
+	@Override
+	public Object getAdapter(Class key) {
+		// EObjectSelectionUtils requires us to adapt to EObject, since
+		// graphical edit parts can be provided as selection as well.
+		if (key == EObject.class) {
+			return modelElement;
+		}
+		return super.getAdapter(key);
+	}
 }
diff --git a/org.fortiss.tooling.kernel.ui/trunk/src/org/fortiss/tooling/kernel/ui/base/EObjectActionBase.java b/org.fortiss.tooling.kernel.ui/trunk/src/org/fortiss/tooling/kernel/ui/base/EObjectActionBase.java
index 3dc3e03d5..8408679ce 100644
--- a/org.fortiss.tooling.kernel.ui/trunk/src/org/fortiss/tooling/kernel/ui/base/EObjectActionBase.java
+++ b/org.fortiss.tooling.kernel.ui/trunk/src/org/fortiss/tooling/kernel/ui/base/EObjectActionBase.java
@@ -29,7 +29,6 @@ import org.eclipse.jface.resource.ImageDescriptor;
  * @version $Rev$
  * @ConQAT.Rating YELLOW Hash: 39A7CCEBD43D310CCB0F78BF6714E3AE
  */
-// TODO (FH): move to UI
 public abstract class EObjectActionBase extends Action {
 
 	/** Stores the target {@link EObject}. */
diff --git a/org.fortiss.tooling.kernel.ui/trunk/src/org/fortiss/tooling/kernel/ui/base/ModelElementHandlerBase.java b/org.fortiss.tooling.kernel.ui/trunk/src/org/fortiss/tooling/kernel/ui/base/ModelElementHandlerBase.java
index 59ad1fdfb..d7c1dfbbb 100644
--- a/org.fortiss.tooling.kernel.ui/trunk/src/org/fortiss/tooling/kernel/ui/base/ModelElementHandlerBase.java
+++ b/org.fortiss.tooling.kernel.ui/trunk/src/org/fortiss/tooling/kernel/ui/base/ModelElementHandlerBase.java
@@ -33,7 +33,6 @@ import org.fortiss.tooling.kernel.ui.interfaces.IModelElementHandler;
  * @version $Rev$
  * @ConQAT.Rating YELLOW Hash: D35DD317B0C9AB5C153A5FEB5BC870EE
  */
-// TODO (FH): move UI parts
 public abstract class ModelElementHandlerBase<T extends EObject> implements
 		IModelElementHandler<T> {
 
diff --git a/org.fortiss.tooling.kernel.ui/trunk/src/org/fortiss/tooling/kernel/ui/base/PropertySectionBase.java b/org.fortiss.tooling.kernel.ui/trunk/src/org/fortiss/tooling/kernel/ui/base/PropertySectionBase.java
index a48aad7cf..1136f50ee 100644
--- a/org.fortiss.tooling.kernel.ui/trunk/src/org/fortiss/tooling/kernel/ui/base/PropertySectionBase.java
+++ b/org.fortiss.tooling.kernel.ui/trunk/src/org/fortiss/tooling/kernel/ui/base/PropertySectionBase.java
@@ -43,7 +43,6 @@ import org.eclipse.ui.views.properties.tabbed.TabbedPropertySheetPage;
  * @version $Rev$
  * @ConQAT.Rating RED Hash: 52DBB44E0AFA61A036B9C2A5297E3BA5
  */
-// TODO (FH): move to UI
 public abstract class PropertySectionBase extends AbstractPropertySection {
 
 	/** Label width. */
diff --git a/org.fortiss.tooling.kernel.ui/trunk/src/org/fortiss/tooling/kernel/ui/interfaces/IBindingEditorPageChangeListener.java b/org.fortiss.tooling.kernel.ui/trunk/src/org/fortiss/tooling/kernel/ui/interfaces/IBindingEditorPageChangeListener.java
index d94372892..2d826a9e7 100644
--- a/org.fortiss.tooling.kernel.ui/trunk/src/org/fortiss/tooling/kernel/ui/interfaces/IBindingEditorPageChangeListener.java
+++ b/org.fortiss.tooling.kernel.ui/trunk/src/org/fortiss/tooling/kernel/ui/interfaces/IBindingEditorPageChangeListener.java
@@ -27,7 +27,6 @@ import org.fortiss.tooling.kernel.ui.internal.editor.BindingEditor;
  * @version $Rev: 18709 $
  * @ConQAT.Rating YELLOW Hash: 6A3E42B1BE8519EA4B528FBF2E8D3F0A
  */
-// TODO (FH): move to UI
 public interface IBindingEditorPageChangeListener {
 
 	/** Indicates a page change. */
diff --git a/org.fortiss.tooling.kernel.ui/trunk/src/org/fortiss/tooling/kernel/ui/interfaces/ICustomMenuContributor.java b/org.fortiss.tooling.kernel.ui/trunk/src/org/fortiss/tooling/kernel/ui/interfaces/ICustomMenuContributor.java
index 8f4c12a9c..dd3a07746 100644
--- a/org.fortiss.tooling.kernel.ui/trunk/src/org/fortiss/tooling/kernel/ui/interfaces/ICustomMenuContributor.java
+++ b/org.fortiss.tooling.kernel.ui/trunk/src/org/fortiss/tooling/kernel/ui/interfaces/ICustomMenuContributor.java
@@ -31,7 +31,6 @@ import org.fortiss.tooling.kernel.ui.services.IContextMenuService;
  * @version $Rev$
  * @ConQAT.Rating RED Hash: 2EACD5609822D5747074DB89E6956349
  */
-// TODO (FH): move to UI
 public interface ICustomMenuContributor {
 
 	/** Returns the contributed items, i.e., actions or menus. */
diff --git a/org.fortiss.tooling.kernel.ui/trunk/src/org/fortiss/tooling/kernel/ui/interfaces/IEditorBinding.java b/org.fortiss.tooling.kernel.ui/trunk/src/org/fortiss/tooling/kernel/ui/interfaces/IEditorBinding.java
index 5e5d4710b..0660e2ecb 100644
--- a/org.fortiss.tooling.kernel.ui/trunk/src/org/fortiss/tooling/kernel/ui/interfaces/IEditorBinding.java
+++ b/org.fortiss.tooling.kernel.ui/trunk/src/org/fortiss/tooling/kernel/ui/interfaces/IEditorBinding.java
@@ -29,7 +29,6 @@ import org.fortiss.tooling.kernel.interfaces.IEObjectAware;
  * @version $Rev$
  * @ConQAT.Rating YELLOW Hash: 4AC49B113174D91D434A480C3456423F
  */
-// TODO (FH): move to UI
 public interface IEditorBinding<T extends EObject> extends
 		IEObjectAware<EObject> {
 
diff --git a/org.fortiss.tooling.kernel.ui/trunk/src/org/fortiss/tooling/kernel/ui/internal/ActionService.java b/org.fortiss.tooling.kernel.ui/trunk/src/org/fortiss/tooling/kernel/ui/internal/ActionService.java
index 14c3016a5..0580ef230 100644
--- a/org.fortiss.tooling.kernel.ui/trunk/src/org/fortiss/tooling/kernel/ui/internal/ActionService.java
+++ b/org.fortiss.tooling.kernel.ui/trunk/src/org/fortiss/tooling/kernel/ui/internal/ActionService.java
@@ -42,7 +42,7 @@ import org.fortiss.tooling.kernel.ui.util.EObjectSelectionUtils;
  * @author hoelzlf
  * @author $Author$
  * @version $Rev$
- * @ConQAT.Rating YELLOW Hash: 5DDB14A5557BDA2375928D87F4F4B2BB
+ * @ConQAT.Rating YELLOW Hash: 0DEA10AF5172CF62CC2C422274B84220
  */
 public class ActionService implements IActionService,
 		ITopLevelElementChangeListener, CommandStackListener {
@@ -102,7 +102,15 @@ public class ActionService implements IActionService,
 
 	/** Constructor. */
 	public ActionService() {
+		globalUndoAction.setId(ActionFactory.UNDO.getId());
+		globalRedoAction.setId(ActionFactory.REDO.getId());
+		globalDeleteAction.setId(ActionFactory.DELETE.getId());
 
+		for (ITopLevelElementContext context : IPersistencyService.INSTANCE
+				.getTopLevelElementContexts()) {
+			context.addCommandStackListener(this);
+		}
+		IPersistencyService.INSTANCE.addTopLevelElementListener(this);
 	}
 
 	/** {@inheritDoc} */
@@ -116,13 +124,11 @@ public class ActionService implements IActionService,
 	/** {@inheritDoc} */
 	@Override
 	public void registerGlobalActions(IActionBars actionBars) {
-		globalUndoAction.setId(ActionFactory.UNDO.getId());
 		globalUndoAction.setActionDefinitionId(ActionFactory.UNDO
 				.getCommandId());
 		actionBars.setGlobalActionHandler(ActionFactory.UNDO.getId(),
 				globalUndoAction);
 
-		globalRedoAction.setId(ActionFactory.REDO.getId());
 		globalRedoAction.setActionDefinitionId(ActionFactory.REDO
 				.getCommandId());
 		actionBars.setGlobalActionHandler(ActionFactory.REDO.getId(),
diff --git a/org.fortiss.tooling.kernel.ui/trunk/src/org/fortiss/tooling/kernel/ui/internal/ContextMenuService.java b/org.fortiss.tooling.kernel.ui/trunk/src/org/fortiss/tooling/kernel/ui/internal/ContextMenuService.java
index 6c83e19fe..8e7d8b961 100644
--- a/org.fortiss.tooling.kernel.ui/trunk/src/org/fortiss/tooling/kernel/ui/internal/ContextMenuService.java
+++ b/org.fortiss.tooling.kernel.ui/trunk/src/org/fortiss/tooling/kernel/ui/internal/ContextMenuService.java
@@ -35,7 +35,6 @@ import org.fortiss.tooling.kernel.ui.services.IContextMenuService;
  * @version $Rev$
  * @ConQAT.Rating RED Hash: 28C94C43A9B4498417187CD8F0EFBC57
  */
-// TODO (FH): move to UI
 public class ContextMenuService implements IContextMenuService {
 
 	/** {@inheritDoc} */
diff --git a/org.fortiss.tooling.kernel.ui/trunk/src/org/fortiss/tooling/kernel/ui/internal/ModelElementService.java b/org.fortiss.tooling.kernel.ui/trunk/src/org/fortiss/tooling/kernel/ui/internal/ModelElementService.java
index 111ca96fb..a11d78054 100644
--- a/org.fortiss.tooling.kernel.ui/trunk/src/org/fortiss/tooling/kernel/ui/internal/ModelElementService.java
+++ b/org.fortiss.tooling.kernel.ui/trunk/src/org/fortiss/tooling/kernel/ui/internal/ModelElementService.java
@@ -33,7 +33,7 @@ import org.fortiss.tooling.kernel.ui.services.IModelElementService;
  * @author hoelzl
  * @author $Author$
  * @version $Rev$
- * @ConQAT.Rating RED Hash: BF8801A688B2F4465A25325299BF0215
+ * @ConQAT.Rating YELLOW Hash: 9D99C615FF981BE0831593DC3600D498
  */
 public class ModelElementService extends
 		EObjectAwareServiceBase<IModelElementHandler<EObject>> implements
diff --git a/org.fortiss.tooling.kernel.ui/trunk/src/org/fortiss/tooling/kernel/ui/internal/NavigatorService.java b/org.fortiss.tooling.kernel.ui/trunk/src/org/fortiss/tooling/kernel/ui/internal/NavigatorService.java
index bedb37ba6..06ed176cb 100644
--- a/org.fortiss.tooling.kernel.ui/trunk/src/org/fortiss/tooling/kernel/ui/internal/NavigatorService.java
+++ b/org.fortiss.tooling.kernel.ui/trunk/src/org/fortiss/tooling/kernel/ui/internal/NavigatorService.java
@@ -47,7 +47,7 @@ import org.fortiss.tooling.kernel.ui.util.EObjectSelectionUtils;
  * @author hoelzl
  * @author $Author$
  * @version $Rev$
- * @ConQAT.Rating YELLOW Hash: 0DBA8B19BC7741F646B0FECB369E177F
+ * @ConQAT.Rating YELLOW Hash: B7F899DC2CFB74320D2F7A19A2D5FEBB
  */
 public class NavigatorService implements INavigatorService,
 		ITopLevelElementChangeListener, CommandStackListener {
diff --git a/org.fortiss.tooling.kernel.ui/trunk/src/org/fortiss/tooling/kernel/ui/internal/PropertiesService.java b/org.fortiss.tooling.kernel.ui/trunk/src/org/fortiss/tooling/kernel/ui/internal/PropertiesService.java
index 3e7fdb56f..6480e05a1 100644
--- a/org.fortiss.tooling.kernel.ui/trunk/src/org/fortiss/tooling/kernel/ui/internal/PropertiesService.java
+++ b/org.fortiss.tooling.kernel.ui/trunk/src/org/fortiss/tooling/kernel/ui/internal/PropertiesService.java
@@ -25,9 +25,9 @@ import org.fortiss.tooling.kernel.ui.services.IPropertiesService;
  * @author hoelzl
  * @author $Author$
  * @version $Rev$
- * @ConQAT.Rating RED Hash: 923634855866E1E514EC11821EC8506A
+ * @ConQAT.Rating YELLOW Hash: 37CDABB5D03E1D2F534D83EB55855351
  * 
  */
 public class PropertiesService implements IPropertiesService {
-
+	// nothing to do yet
 }
diff --git a/org.fortiss.tooling.kernel.ui/trunk/src/org/fortiss/tooling/kernel/ui/internal/views/LibraryView.java b/org.fortiss.tooling.kernel.ui/trunk/src/org/fortiss/tooling/kernel/ui/internal/views/LibraryView.java
index f059fa805..a0da50398 100644
--- a/org.fortiss.tooling.kernel.ui/trunk/src/org/fortiss/tooling/kernel/ui/internal/views/LibraryView.java
+++ b/org.fortiss.tooling.kernel.ui/trunk/src/org/fortiss/tooling/kernel/ui/internal/views/LibraryView.java
@@ -55,7 +55,6 @@ import org.fortiss.tooling.kernel.ui.services.IModelElementService;
  * @version $Rev: 18709 $
  * @ConQAT.Rating RED Hash: A43DAF31B100FF92B123EA6A31C86CBA
  */
-// TODO (FH): move to UI
 public class LibraryView extends ViewPart {
 
 	/** The viewer. */
diff --git a/org.fortiss.tooling.kernel.ui/trunk/src/org/fortiss/tooling/kernel/ui/services/IActionService.java b/org.fortiss.tooling.kernel.ui/trunk/src/org/fortiss/tooling/kernel/ui/services/IActionService.java
index 1593a250e..ae6a8d302 100644
--- a/org.fortiss.tooling.kernel.ui/trunk/src/org/fortiss/tooling/kernel/ui/services/IActionService.java
+++ b/org.fortiss.tooling.kernel.ui/trunk/src/org/fortiss/tooling/kernel/ui/services/IActionService.java
@@ -23,12 +23,12 @@ import org.fortiss.tooling.kernel.ui.internal.ActionService;
 
 /**
  * The action service manages registration and execution of actions including
- * global actions like undo and redo.
+ * global actions like undo, redo, and delete.
  * 
  * @author hoelzl
  * @author $Author$
  * @version $Rev$
- * @ConQAT.Rating YELLOW Hash: 11C327F4AFE805D0DA6CB14BF7021FB9
+ * @ConQAT.Rating YELLOW Hash: 2B3895F36532E6A497B12746C07D91D8
  */
 public interface IActionService {
 
@@ -38,9 +38,13 @@ public interface IActionService {
 	/** Registers global actions with the given {@link IActionBars}. */
 	void registerGlobalActions(IActionBars actionBars);
 
-	/** Adds the global default actions like undo to the given context menu. */
+	/** Adds the global default actions to the given context menu. */
 	void addGlobalDefaultActionSectionToMenu(IMenuManager menuManager);
 
-	/** Refreshes the enabled state of the global actions. */
+	/**
+	 * Refreshes the enabled state of the global actions. This method should be
+	 * called when a selection changes. It is automatically called by the action
+	 * service when any command stack changes.
+	 */
 	void refresh();
 }
diff --git a/org.fortiss.tooling.kernel.ui/trunk/src/org/fortiss/tooling/kernel/ui/services/IContextMenuService.java b/org.fortiss.tooling.kernel.ui/trunk/src/org/fortiss/tooling/kernel/ui/services/IContextMenuService.java
index c85a935a2..462608686 100644
--- a/org.fortiss.tooling.kernel.ui/trunk/src/org/fortiss/tooling/kernel/ui/services/IContextMenuService.java
+++ b/org.fortiss.tooling.kernel.ui/trunk/src/org/fortiss/tooling/kernel/ui/services/IContextMenuService.java
@@ -28,9 +28,8 @@ import org.fortiss.tooling.kernel.ui.internal.ContextMenuService;
  * @author hoelzl
  * @author $Author$
  * @version $Rev$
- * @ConQAT.Rating YELLOW Hash: 6DC07C7AF82987C8C1B81DF8C2CABCEF
+ * @ConQAT.Rating YELLOW Hash: 898966F83FD7AF20C4620A8AAB017EC0
  */
-// TODO (FH): move to UI
 public interface IContextMenuService {
 
 	/** Custom menu section separator id. */
diff --git a/org.fortiss.tooling.kernel.ui/trunk/src/org/fortiss/tooling/kernel/ui/services/IEditPartFactoryService.java b/org.fortiss.tooling.kernel.ui/trunk/src/org/fortiss/tooling/kernel/ui/services/IEditPartFactoryService.java
index 271fa601d..39f15065b 100644
--- a/org.fortiss.tooling.kernel.ui/trunk/src/org/fortiss/tooling/kernel/ui/services/IEditPartFactoryService.java
+++ b/org.fortiss.tooling.kernel.ui/trunk/src/org/fortiss/tooling/kernel/ui/services/IEditPartFactoryService.java
@@ -27,7 +27,7 @@ import org.fortiss.tooling.kernel.ui.internal.EditPartFactoryService;
  * @author hoelzl
  * @author $Author$
  * @version $Rev$
- * @ConQAT.Rating YELLOW Hash: A052488068BAE9406F9BEAD648E70BD7
+ * @ConQAT.Rating YELLOW Hash: F01D48DCA4F80858F39646340CE0E5F2
  */
 public interface IEditPartFactoryService extends EditPartFactory {
 
diff --git a/org.fortiss.tooling.kernel.ui/trunk/src/org/fortiss/tooling/kernel/ui/services/IEditorService.java b/org.fortiss.tooling.kernel.ui/trunk/src/org/fortiss/tooling/kernel/ui/services/IEditorService.java
index 968aec710..8b9f5abd5 100644
--- a/org.fortiss.tooling.kernel.ui/trunk/src/org/fortiss/tooling/kernel/ui/services/IEditorService.java
+++ b/org.fortiss.tooling.kernel.ui/trunk/src/org/fortiss/tooling/kernel/ui/services/IEditorService.java
@@ -29,7 +29,7 @@ import org.fortiss.tooling.kernel.ui.internal.EditorService;
  * @author hoelzl
  * @author $Author$
  * @version $Rev$
- * @ConQAT.Rating YELLOW Hash: 0345494D4037310F62B12BB3806E9C77
+ * @ConQAT.Rating YELLOW Hash: 2C420A3D582F2726FBC96D141CEAEF81
  */
 public interface IEditorService {
 
diff --git a/org.fortiss.tooling.kernel.ui/trunk/src/org/fortiss/tooling/kernel/ui/services/IModelElementService.java b/org.fortiss.tooling.kernel.ui/trunk/src/org/fortiss/tooling/kernel/ui/services/IModelElementService.java
index d4a06451f..828a5136e 100644
--- a/org.fortiss.tooling.kernel.ui/trunk/src/org/fortiss/tooling/kernel/ui/services/IModelElementService.java
+++ b/org.fortiss.tooling.kernel.ui/trunk/src/org/fortiss/tooling/kernel/ui/services/IModelElementService.java
@@ -28,7 +28,7 @@ import org.fortiss.tooling.kernel.ui.internal.ModelElementService;
  * @author hoelzl
  * @author $Author$
  * @version $Rev$
- * @ConQAT.Rating YELLOW Hash: 4FEBCD30257311CA3D9D20F66CC2B1FA
+ * @ConQAT.Rating YELLOW Hash: 84FA1569F479C2625D09D0CA2C9A170D
  */
 public interface IModelElementService {
 
diff --git a/org.fortiss.tooling.kernel.ui/trunk/src/org/fortiss/tooling/kernel/ui/services/INavigatorService.java b/org.fortiss.tooling.kernel.ui/trunk/src/org/fortiss/tooling/kernel/ui/services/INavigatorService.java
index c010f5b7d..2fb7b4b73 100644
--- a/org.fortiss.tooling.kernel.ui/trunk/src/org/fortiss/tooling/kernel/ui/services/INavigatorService.java
+++ b/org.fortiss.tooling.kernel.ui/trunk/src/org/fortiss/tooling/kernel/ui/services/INavigatorService.java
@@ -29,9 +29,8 @@ import org.fortiss.tooling.kernel.ui.internal.NavigatorService;
  * @author hoelzl
  * @author $Author$
  * @version $Rev$
- * @ConQAT.Rating RED Hash: 9B9DAAC0BFE14D2AE78C879E96598ED5
+ * @ConQAT.Rating YELLOW Hash: 3C201DC07138A2C1A15C710F8A81A242
  */
-// TODO (FH): move to UI
 public interface INavigatorService {
 	/** Returns the singleton instance of the service. */
 	public static final INavigatorService INSTANCE = new NavigatorService();
diff --git a/org.fortiss.tooling.kernel.ui/trunk/src/org/fortiss/tooling/kernel/ui/services/IPropertiesService.java b/org.fortiss.tooling.kernel.ui/trunk/src/org/fortiss/tooling/kernel/ui/services/IPropertiesService.java
index a88c0acc7..a189acf5b 100644
--- a/org.fortiss.tooling.kernel.ui/trunk/src/org/fortiss/tooling/kernel/ui/services/IPropertiesService.java
+++ b/org.fortiss.tooling.kernel.ui/trunk/src/org/fortiss/tooling/kernel/ui/services/IPropertiesService.java
@@ -25,7 +25,7 @@ import org.fortiss.tooling.kernel.ui.internal.PropertiesService;
  * @author hoelzl
  * @author $Author$
  * @version $Rev$
- * @ConQAT.Rating RED Hash: E340ED4EFA15B122B4074F128F0A330F
+ * @ConQAT.Rating YELLOW Hash: 102C35BC9B6C4C7BFE71810750CD4D20
  */
 public interface IPropertiesService {
 
diff --git a/org.fortiss.tooling.kernel.ui/trunk/src/org/fortiss/tooling/kernel/ui/util/DataBindingUtils.java b/org.fortiss.tooling.kernel.ui/trunk/src/org/fortiss/tooling/kernel/ui/util/DataBindingUtils.java
index 98ad4d38b..e28881672 100644
--- a/org.fortiss.tooling.kernel.ui/trunk/src/org/fortiss/tooling/kernel/ui/util/DataBindingUtils.java
+++ b/org.fortiss.tooling.kernel.ui/trunk/src/org/fortiss/tooling/kernel/ui/util/DataBindingUtils.java
@@ -37,12 +37,9 @@ import org.eclipse.swt.widgets.Control;
  * @version $Rev$
  * @ConQAT.Rating RED Hash: 95D1650431DCD178D61C00A971F6810C
  */
-// TODO (FH): move to UI
 public final class DataBindingUtils {
 
-	/**
-	 * Decoration key for edit feedback.
-	 */
+	/** Decoration key for edit feedback. */
 	public static final String DECORATION_KEY = ControlDecoration.class
 			.getName();
 
diff --git a/org.fortiss.tooling.kernel.ui/trunk/src/org/fortiss/tooling/kernel/ui/util/EObjectSelectionUtils.java b/org.fortiss.tooling.kernel.ui/trunk/src/org/fortiss/tooling/kernel/ui/util/EObjectSelectionUtils.java
index d492fc094..112b75cb7 100644
--- a/org.fortiss.tooling.kernel.ui/trunk/src/org/fortiss/tooling/kernel/ui/util/EObjectSelectionUtils.java
+++ b/org.fortiss.tooling.kernel.ui/trunk/src/org/fortiss/tooling/kernel/ui/util/EObjectSelectionUtils.java
@@ -20,6 +20,7 @@ package org.fortiss.tooling.kernel.ui.util;
 import java.util.ArrayList;
 import java.util.List;
 
+import org.eclipse.core.runtime.IAdaptable;
 import org.eclipse.emf.ecore.EObject;
 import org.eclipse.jface.viewers.ISelection;
 import org.eclipse.jface.viewers.IStructuredSelection;
@@ -32,9 +33,8 @@ import org.eclipse.ui.PlatformUI;
  * @author hoelzl
  * @author $Author$
  * @version $Rev$
- * @ConQAT.Rating YELLOW Hash: 03051CAAB0FB1E7D6A6BA510002D2C58
+ * @ConQAT.Rating YELLOW Hash: C89BCA60DC06B35E1946C57DD21D8769
  */
-// TODO (FH): move to UI
 public final class EObjectSelectionUtils {
 
 	/**
@@ -54,7 +54,8 @@ public final class EObjectSelectionUtils {
 
 	/**
 	 * Returns the first selected EObject or <code>null</code> if no EObject is
-	 * selected.
+	 * selected. If the selection implements {@link IAdaptable}, it is asked to
+	 * adapt to {@link EObject}.
 	 */
 	public static EObject getFirstElement(ISelection selection) {
 		if (selection instanceof IStructuredSelection && !selection.isEmpty()) {
@@ -62,6 +63,11 @@ public final class EObjectSelectionUtils {
 				return (EObject) ((IStructuredSelection) selection)
 						.getFirstElement();
 			}
+			if (((IStructuredSelection) selection).getFirstElement() instanceof IAdaptable) {
+				IAdaptable adaptable = (IAdaptable) ((IStructuredSelection) selection)
+						.getFirstElement();
+				return (EObject) adaptable.getAdapter(EObject.class);
+			}
 		}
 		return null;
 	}
-- 
GitLab