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 f929e7ba3fd48d57467a6b760a78ef2289d8ba56..14c3016a50f4838c027cfc575094256176b9bef2 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 @@ -17,6 +17,9 @@ $Id$ +--------------------------------------------------------------------------*/ package org.fortiss.tooling.kernel.ui.internal; +import java.util.EventObject; + +import org.eclipse.emf.common.command.CommandStackListener; import org.eclipse.emf.ecore.EObject; import org.eclipse.emf.ecore.util.EcoreUtil; import org.eclipse.jface.action.IMenuManager; @@ -24,6 +27,8 @@ import org.eclipse.ui.IActionBars; import org.eclipse.ui.ISharedImages; import org.eclipse.ui.PlatformUI; import org.eclipse.ui.actions.ActionFactory; +import org.fortiss.tooling.kernel.interfaces.ITopLevelElementChangeListener; +import org.fortiss.tooling.kernel.interfaces.ITopLevelElementContext; import org.fortiss.tooling.kernel.model.IRemovable; import org.fortiss.tooling.kernel.services.ICommandStackService; import org.fortiss.tooling.kernel.services.IPersistencyService; @@ -39,7 +44,8 @@ import org.fortiss.tooling.kernel.ui.util.EObjectSelectionUtils; * @version $Rev$ * @ConQAT.Rating YELLOW Hash: 5DDB14A5557BDA2375928D87F4F4B2BB */ -public class ActionService implements IActionService { +public class ActionService implements IActionService, + ITopLevelElementChangeListener, CommandStackListener { /** The group id of the global default action group. */ public static final String GROUP_GLOBAL_DEFAULTS = "globalDefaults"; @@ -94,6 +100,11 @@ public class ActionService implements IActionService { } }; + /** Constructor. */ + public ActionService() { + + } + /** {@inheritDoc} */ @Override public void addGlobalDefaultActionSectionToMenu(IMenuManager menuManager) { @@ -148,4 +159,22 @@ public class ActionService implements IActionService { globalDeleteAction.setTarget(target); globalDeleteAction.setEnabled(canDelete); } + + /** {@inheritDoc} */ + @Override + public void commandStackChanged(EventObject event) { + refresh(); + } + + /** {@inheritDoc} */ + @Override + public void topLevelElementAdded(ITopLevelElementContext elementContext) { + elementContext.addCommandStackListener(this); + } + + /** {@inheritDoc} */ + @Override + public void topLevelElementRemoved(ITopLevelElementContext elementContext) { + elementContext.removeCommandStackListener(this); + } } 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 08fc34ec90eb5d53a32d08aae88167eda0a11342..bedb37ba6418c7670d7c29eb3657015f481ee62b 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 @@ -49,7 +49,6 @@ import org.fortiss.tooling.kernel.ui.util.EObjectSelectionUtils; * @version $Rev$ * @ConQAT.Rating YELLOW Hash: 0DBA8B19BC7741F646B0FECB369E177F */ -// TODO (FH): move UI parts public class NavigatorService implements INavigatorService, ITopLevelElementChangeListener, CommandStackListener { diff --git a/org.fortiss.tooling.kernel.ui/trunk/src/org/fortiss/tooling/kernel/ui/internal/editor/BindingContributor.java b/org.fortiss.tooling.kernel.ui/trunk/src/org/fortiss/tooling/kernel/ui/internal/editor/BindingContributor.java index 935be9db111ad122bd6bab3788636eca8c2b2b0b..effb2e0b33521f1d996b5408d824801adb95a217 100644 --- a/org.fortiss.tooling.kernel.ui/trunk/src/org/fortiss/tooling/kernel/ui/internal/editor/BindingContributor.java +++ b/org.fortiss.tooling.kernel.ui/trunk/src/org/fortiss/tooling/kernel/ui/internal/editor/BindingContributor.java @@ -20,10 +20,8 @@ package org.fortiss.tooling.kernel.ui.internal.editor; import org.conqat.lib.commons.assertion.CCSMPre; import org.eclipse.ui.IActionBars; import org.eclipse.ui.IEditorPart; -import org.eclipse.ui.actions.ActionFactory; import org.eclipse.ui.part.MultiPageEditorActionBarContributor; import org.fortiss.tooling.kernel.ui.interfaces.IActionContributingEditor; -import org.fortiss.tooling.kernel.ui.internal.ActionService; import org.fortiss.tooling.kernel.ui.services.IActionService; /** @@ -50,12 +48,7 @@ public final class BindingContributor extends public void setActiveEditor(IEditorPart part) { CCSMPre.isTrue(part instanceof BindingEditor, "This contributor may only be used for CCTSBindingEditors!"); - IActionBars bars = getActionBars(); - bars.setGlobalActionHandler(ActionFactory.UNDO.getId(), - ((ActionService) IActionService.INSTANCE).globalUndoAction); - bars.setGlobalActionHandler(ActionFactory.REDO.getId(), - ((ActionService) IActionService.INSTANCE).globalRedoAction); - bars.updateActionBars(); + IActionService.INSTANCE.registerGlobalActions(getActionBars()); super.setActiveEditor(part); } diff --git a/org.fortiss.tooling.kernel/trunk/src/org/fortiss/tooling/kernel/interfaces/ITopLevelElementChangeListener.java b/org.fortiss.tooling.kernel/trunk/src/org/fortiss/tooling/kernel/interfaces/ITopLevelElementChangeListener.java index 0f411504d503069b5b8d800107ef9765d952662d..82f747e0af678ad5598f6615ae0e70c48f356158 100644 --- a/org.fortiss.tooling.kernel/trunk/src/org/fortiss/tooling/kernel/interfaces/ITopLevelElementChangeListener.java +++ b/org.fortiss.tooling.kernel/trunk/src/org/fortiss/tooling/kernel/interfaces/ITopLevelElementChangeListener.java @@ -29,8 +29,8 @@ package org.fortiss.tooling.kernel.interfaces; public interface ITopLevelElementChangeListener { /** Notifies the listener about the adding of the given element. */ - void topLevelElementAdded(ITopLevelElementContext elmentContext); + void topLevelElementAdded(ITopLevelElementContext elementContext); /** Notifies the listener about the removal of the given element. */ - void topLevelElementRemoved(ITopLevelElementContext elmentContext); + void topLevelElementRemoved(ITopLevelElementContext elementContext); }