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