Class CommandWrapper

java.lang.Object
org.eclipse.emf.common.command.AbstractCommand
org.eclipse.emf.common.command.CommandWrapper
All Implemented Interfaces:
Command

public class CommandWrapper extends AbstractCommand
A command that wraps another command. All the Command methods are delegated to the wrapped command.

There are two typical usage patterns. One typical use for this command is to modify the behaviour of a command that you can't subclass, i.e., a decorator pattern:

   Command decoratedCommand =
     new CommandWrapper(someOtherCommand)
     {
       public void execute()
       {
         doSomethingBeforeExecution();
         super.execute();
         doSomethingAfterExecution();
       }
       public Collection getResult()
       {
         return someOtherResult();
       }
     };
The other typical use is to act as a proxy for a command who's creation is delayed:
   Command proxyCommand =
     new CommandWrapper()
     {
       public Command createCommand()
       {
         return createACommandSomehow();
       }
     };
  • Field Details

    • command

      protected Command command
      The command for which this is a proxy or decorator.
  • Constructor Details

    • CommandWrapper

      public CommandWrapper(Command command)
      Creates a decorator instance for the given command.
      Parameters:
      command - the command to wrap.
    • CommandWrapper

      protected CommandWrapper(String label, Command command)
      Creates a decorator instance with the given label for the given command.
      Parameters:
      label - the label of the wrapper
      command - the command to wrap.
    • CommandWrapper

      public CommandWrapper(String label, String description, Command command)
      Creates a decorator instance with the given label and description for the given command.
      Parameters:
      label - the label of the wrapper
      description - the description of the wrapper
      command - the command to wrap.
    • CommandWrapper

      protected CommandWrapper()
      Creates a commandless proxy instance. The wrapped command will be created by a createCommand() callback. Since a proxy command like this is pointless unless you override some method, this constructor is protected.
    • CommandWrapper

      protected CommandWrapper(String label)
      Creates a commandless proxy instance, with the given label. The command will be created by a createCommand() callback. Since a proxy command like this is pointless unless you override some method, this constructor is protected.
      Parameters:
      label - the label of the wrapper
    • CommandWrapper

      protected CommandWrapper(String label, String description)
      Creates a commandless proxy instance, with the given label and description. The command will be created by a createCommand() callback. Since a proxy command like this is pointless unless you override some method, this constructor is protected.
      Parameters:
      label - the label of the wrapper
      description - the description of the wrapper
  • Method Details

    • getCommand

      public Command getCommand()
      Returns the command for which this is a proxy or decorator. This may be null before createCommand() is called.
      Returns:
      the command for which this is a proxy or decorator.
    • createCommand

      protected Command createCommand()
      Create the command being proxied. This implementation just return null. It is called by prepare().
      Returns:
      the command being proxied.
    • prepare

      protected boolean prepare()
      Returns whether the command can execute. This implementation creates the command being proxied using createCommand(), if the command wasn't given in the constructor.
      Overrides:
      prepare in class AbstractCommand
      Returns:
      whether the command can execute.
    • execute

      public void execute()
      Delegates to the execute method of the command.
    • canUndo

      public boolean canUndo()
      Delegates to the canUndo method of the command.
      Specified by:
      canUndo in interface Command
      Overrides:
      canUndo in class AbstractCommand
      Returns:
      true.
    • undo

      public void undo()
      Delegates to the undo method of the command.
      Specified by:
      undo in interface Command
      Overrides:
      undo in class AbstractCommand
    • redo

      public void redo()
      Delegates to the redo method of the command.
    • getResult

      public Collection<?> getResult()
      Delegates to the getResult method of the command.
      Specified by:
      getResult in interface Command
      Overrides:
      getResult in class AbstractCommand
      Returns:
      the result.
    • getAffectedObjects

      public Collection<?> getAffectedObjects()
      Delegates to the getAffectedObjects method of the command.
      Specified by:
      getAffectedObjects in interface Command
      Overrides:
      getAffectedObjects in class AbstractCommand
      Returns:
      the result.
    • getLabel

      public String getLabel()
      Delegates to the getLabel method of the command.
      Specified by:
      getLabel in interface Command
      Overrides:
      getLabel in class AbstractCommand
      Returns:
      the label.
    • getDescription

      public String getDescription()
      Delegates to the getDescription method of the command.
      Specified by:
      getDescription in interface Command
      Overrides:
      getDescription in class AbstractCommand
      Returns:
      the description.
    • dispose

      public void dispose()
      Delegates to the dispose method of the command.
      Specified by:
      dispose in interface Command
      Overrides:
      dispose in class AbstractCommand
    • toString

      public String toString()
      Description copied from class: AbstractCommand
      Returns an abbreviated name using this object's own class' name, without package qualification, followed by a space separated list of field:value pairs.
      Overrides:
      toString in class AbstractCommand
      Returns:
      string representation.