diff --git a/org.fortiss.tooling.kernel/trunk/src/org/fortiss/tooling/kernel/internal/CommandStackService.java b/org.fortiss.tooling.kernel/trunk/src/org/fortiss/tooling/kernel/internal/CommandStackService.java index 7609c5d7cecab4bb54b51e5caa976efcb13c64ba..e0b8351b4423f2f41b2fb2a02f506de630205857 100644 --- a/org.fortiss.tooling.kernel/trunk/src/org/fortiss/tooling/kernel/internal/CommandStackService.java +++ b/org.fortiss.tooling.kernel/trunk/src/org/fortiss/tooling/kernel/internal/CommandStackService.java @@ -17,7 +17,9 @@ $Id$ +--------------------------------------------------------------------------*/ package org.fortiss.tooling.kernel.internal; +import org.eclipse.emf.common.command.CommandStack; import org.eclipse.emf.ecore.EObject; +import org.fortiss.tooling.kernel.interfaces.IStorageProvider; import org.fortiss.tooling.kernel.services.ICommandStackService; import org.fortiss.tooling.kernel.services.IPersistencyService; @@ -34,31 +36,41 @@ public class CommandStackService implements ICommandStackService { /** {@inheritDoc} */ @Override public void runAsCommand(EObject target, Runnable runner) { - IPersistencyService.INSTANCE.getStorageProviderFor(target) - .runAsCommand(target, runner); + IStorageProvider provider = IPersistencyService.INSTANCE + .getStorageProviderFor(target); + if (provider != null) { + provider.runAsCommand(target, runner); + } } /** {@inheritDoc} */ @Override public boolean canUndo(EObject target) { - return IPersistencyService.INSTANCE.getCommandStack(target).canUndo(); + CommandStack stack = getCommandStack(target); + return stack != null && stack.canUndo(); } /** {@inheritDoc} */ @Override public boolean canRedo(EObject target) { - return IPersistencyService.INSTANCE.getCommandStack(target).canRedo(); + CommandStack stack = getCommandStack(target); + return stack != null && stack.canRedo(); } /** {@inheritDoc} */ @Override public void undo(EObject target) { - IPersistencyService.INSTANCE.getCommandStack(target).undo(); + getCommandStack(target).undo(); } /** {@inheritDoc} */ @Override public void redo(EObject target) { - IPersistencyService.INSTANCE.getCommandStack(target).redo(); + getCommandStack(target).redo(); + } + + /** Fetches command stack from persistency service. */ + private CommandStack getCommandStack(EObject target) { + return IPersistencyService.INSTANCE.getCommandStack(target); } }