Class CompoundCommand

  • Direct Known Subclasses:
    ForwardUndoCompoundCommand

    public class CompoundCommand
    extends Command
    An aggregation of multiple Commands. A CompoundCommand is executable if all of its contained Commands are executable, and it has at least one contained Command. The same is true for undo. When undo is called, the contained Commands are undone in the reverse order in which they were executed.

    An empty CompoundCommand is not executable.

    A CompoundCommand can be unwrapped. Unwrapping returns the simplest equivalent form of the CompoundCommand. So, if a CompoundCommand contains just one Command, that Command is returned.

    • Constructor Detail

      • CompoundCommand

        public CompoundCommand()
        Constructs an empty CompoundCommand
        Since:
        2.0
      • CompoundCommand

        public CompoundCommand​(java.lang.String label)
        Constructs an empty CompoundCommand with the specified label.
        Parameters:
        label - the label for the Command
    • Method Detail

      • add

        public void add​(Command command)
        Adds the specified command if it is not null.
        Parameters:
        command - null or a Command
      • canRedo

        public boolean canRedo()
        Overrides:
        canRedo in class Command
        Returns:
        true if the command can be redone. This method should only be called after undo() has been called.
        Since:
        3.10
        See Also:
        Command.canRedo()
      • canUndo

        public boolean canUndo()
        Overrides:
        canUndo in class Command
        Returns:
        true if the command can be undone. This method should only be called after execute() or redo() has been called.
        See Also:
        Command.canUndo()
      • execute

        public void execute()
        Execute the command.For a compound command this means executing all of the commands that it contains.
        Overrides:
        execute in class Command
      • getChildren

        public java.lang.Object[] getChildren()
        This is useful when implementing ITreeContentProvider.getChildren(Object) to display the Command's nested structure.
        Returns:
        returns the Commands as an array of Objects.
      • getCommands

        public java.util.List getCommands()
        Returns:
        the List of contained Commands
      • getLabel

        public java.lang.String getLabel()
        Overrides:
        getLabel in class Command
        Returns:
        a String used to describe this command to the User
        See Also:
        Command.getLabel()
      • isEmpty

        public boolean isEmpty()
        Returns:
        true if the CompoundCommand is empty
      • redo

        public void redo()
        Description copied from class: Command
        Re-executes the Command. This method should only be called after undo() has been called.
        Overrides:
        redo in class Command
        See Also:
        Command.redo()
      • size

        public int size()
        Returns:
        the number of contained Commands
      • undo

        public void undo()
        Description copied from class: Command
        Undoes the changes performed during execute(). This method should only be called after execute has been called, and only when canUndo() returns true.
        Overrides:
        undo in class Command
        See Also:
        Command.undo()
      • unwrap

        public Command unwrap()
        Returns the simplest form of this Command that is equivalent. This is useful for removing unnecessary nesting of Commands.
        Returns:
        the simplest form of this Command that is equivalent