From 84257888c02ab9ffa942ff6e268bb5e90e799aba Mon Sep 17 00:00:00 2001 From: Florian Hoelzl <hoelzl@fortiss.org> Date: Wed, 22 Jun 2011 16:52:16 +0000 Subject: [PATCH] more trial with undo/redo actions --- .../kernel/ui/internal/ActionService.java | 31 ++++++++++++++++++- .../kernel/ui/internal/NavigatorService.java | 1 - .../internal/editor/BindingContributor.java | 9 +----- .../ITopLevelElementChangeListener.java | 4 +-- 4 files changed, 33 insertions(+), 12 deletions(-) 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 f929e7ba3..14c3016a5 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 08fc34ec9..bedb37ba6 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 935be9db1..effb2e0b3 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 0f411504d..82f747e0a 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); } -- GitLab