public class CommandStack
extends java.lang.Object
Commands
. Executed commands are pushed onto a
a stack for undoing later. Commands which are undone are pushed onto a redo
stack. Whenever a new command is executed, the redo stack is flushed.
A CommandStack contains a dirty property. This property can be used to
determine when persisting changes is required. The stack is dirty whenever
the last executed or redone command is different than the command that was at
the top of the undo stack when markSaveLocation()
was last called.
Initially, the undo stack is empty, and not dirty.
Modifier and Type | Field and Description |
---|---|
protected java.util.List |
listeners
Deprecated.
This field should not be referenced, use
notifyListeners() |
static int |
POST_EXECUTE
Constant indicating notification after a command has been executed.
|
static int |
POST_FLUSH
Constant indicating notification after flushing the stack.
|
static int |
POST_MARK_SAVE
Constant indicating notification after marking the save location of the
stack.
|
static int |
POST_MASK
A bit-mask indicating notification after the command stack has changed.
|
static int |
POST_REDO
Constant indicating notification after a command has been redone.
|
static int |
POST_UNDO
Constant indicating notification after a command has been undone.
|
static int |
PRE_EXECUTE
Constant indicating notification prior to executing a command.
|
static int |
PRE_FLUSH
Constant indicating notification prior to flushing the stack.
|
static int |
PRE_MARK_SAVE
Constant indicating notification prior to marking the save location of
the stack.
|
static int |
PRE_MASK
A bit-mask indicating notification before the command stack is changed.
|
static int |
PRE_REDO
Constant indicating notification prior to redoing a command.
|
static int |
PRE_UNDO
Constant indicating notification prior to undoing a command.
|
Constructor and Description |
---|
CommandStack()
Constructs a new command stack.
|
Modifier and Type | Method and Description |
---|---|
void |
addCommandStackEventListener(CommandStackEventListener listener)
Appends the listener to the list of command stack listeners.
|
void |
addCommandStackListener(CommandStackListener listener)
Deprecated.
|
boolean |
canRedo() |
boolean |
canUndo() |
void |
dispose()
This will
dispose() all the commands in both the undo and
redo stack. |
void |
execute(Command command)
Executes the specified Command if possible.
|
void |
flush()
Flushes the entire stack and resets the save location to zero.
|
java.lang.Object[] |
getCommands() |
Command |
getRedoCommand()
Peeks at the top of the redo stack.
|
Command |
getUndoCommand()
Peeks at the top of the undo stack.
|
int |
getUndoLimit()
Returns the undo limit.
|
boolean |
isDirty()
Returns true if the stack is dirty.
|
void |
markSaveLocation()
Marks the last executed or redone Command as the point at which the
changes were saved.
|
protected void |
notifyListeners()
Deprecated.
Use
notifyListeners(Command, int) instead. |
protected void |
notifyListeners(Command command,
int state)
Notifies command stack event listeners that the command stack has changed
to the specified state.
|
void |
redo()
Calls redo on the Command at the top of the redo stack, and pushes
that Command onto the undo stack.
|
void |
removeCommandStackEventListener(CommandStackEventListener listener)
Removes the first occurrence of the specified listener.
|
void |
removeCommandStackListener(CommandStackListener listener)
Deprecated.
Use
CommandStackEventListener instead. |
void |
setUndoLimit(int undoLimit)
Sets the undo limit.
|
void |
undo()
Undoes the most recently executed (or redone) Command.
|
public static final int POST_EXECUTE
public static final int POST_REDO
public static final int POST_UNDO
public static final int POST_FLUSH
public static final int POST_MARK_SAVE
public static final int POST_MASK
Usage
if ((commandStackEvent.getDetail() & CommandStack.POST_MASK) != 0) { // Do something, like: stopBatchingChanges(); }
public static final int PRE_EXECUTE
public static final int PRE_REDO
public static final int PRE_UNDO
public static final int PRE_FLUSH
public static final int PRE_MARK_SAVE
public static final int PRE_MASK
Usage
if ((commandStackEvent.getDetail() & CommandStack.PRE_MASK) != 0) { // Do something, like: startBatchingChanges(); }
protected java.util.List listeners
notifyListeners()
CommandStackListener
s.public CommandStack()
false
.public void addCommandStackEventListener(CommandStackEventListener listener)
listener
- the event listenerpublic void addCommandStackListener(CommandStackListener listener)
addCommandStackEventListener(CommandStackEventListener)
instead.listener
- the listenerpublic boolean canRedo()
true
if it is appropriate to call redo()
.public boolean canUndo()
true
if undo()
can be calledpublic void dispose()
dispose()
all the commands in both the undo and
redo stack. Both stacks will be empty afterwards.public void execute(Command command)
PRE_EXECUTE
will be fired to
event listeners. Similarly, after attempting to execute the command, an
event for POST_EXECUTE
will be fired. If the execution of the
command completely normally, stack listeners will receive
stackChanged
notification.
If the command is null
or cannot be executed, nothing
happens.
command
- the Command to executeCommandStackEventListener
public void flush()
public java.lang.Object[] getCommands()
public Command getRedoCommand()
Command
has a
label describing it.null
public Command getUndoCommand()
Command
has a
label describing it.null
public int getUndoLimit()
-1
is used to indicate no
limit.public boolean isDirty()
markSaveLocation()
was last called.true
if the stack is dirtypublic void markSaveLocation()
isDirty()
will be based on
this checkpoint.protected void notifyListeners()
notifyListeners(Command, int)
instead.CommandStackListener
s.protected void notifyListeners(Command command, int state)
command
- the commandstate
- the current stack statepublic void redo()
canUndo()
returns true
.public void removeCommandStackEventListener(CommandStackEventListener listener)
listener
- the listenerpublic void removeCommandStackListener(CommandStackListener listener)
CommandStackEventListener
instead.listener
- the listenerpublic void setUndoLimit(int undoLimit)
-1
is used to indicate no
limit.undoLimit
- the undo limitpublic void undo()
canUndo()
returns true
.Copyright (c) IBM Corp. and others 2000, 2011. All Rights Reserved.