|
|
|
|
org.eclipse.emf.transaction
Class RecordingCommand
java.lang.Object
org.eclipse.emf.common.command.AbstractCommand
org.eclipse.emf.transaction.RecordingCommand
-
All Implemented Interfaces:
-
Command,
ConditionalRedoCommand
-
public abstract class RecordingCommand
- extends
AbstractCommand
- implements
ConditionalRedoCommand
A partial
Command implementation that
records the changes made by a subclass's direct manipulation of objects via
the metamodel's API. This simplifies the programming model for complex
commands (not requiring composition of set/add/remove commands) while
still providing automatic undo/redo support.
Subclasses are simply required to implement the
doExecute() method
to make the desired changes to the model. Note that, because changes are
recorded for automatic undo/redo, the concrete command must not make any
changes that cannot be recorded by EMF (unless it does not matter that they
will not be undone).
Method Summary
|
boolean
|
canRedo
()
I can be redone if I successfully recorded the changes that I executed. |
boolean
|
canUndo
()
I can be undone if I successfully recorded the changes that I executed. |
Command
|
chain
(
Command command)
|
void
|
dispose
()
Extends the inherited implementation by disposing my change description,
if any. |
protected abstract void
|
doExecute
()
Implemented by subclasses to perform the necessary changes in the model. |
void
|
execute
()
Implements the execution with automatic recording of undo information. |
protected boolean
|
prepare
()
Subclasses should override this if they have more preparation to do. |
void
|
redo
()
Redoes the changes that I recorded. |
void
|
undo
()
Undoes the changes that I recorded. |
RecordingCommand
public RecordingCommand(
TransactionalEditingDomain domain)
- Initializes me with the editing domain in which I am to be executed.
-
Parameters:
-
domain - my domain
RecordingCommand
public RecordingCommand(
TransactionalEditingDomain domain,
String label)
- Initializes me with my editing domain and a human-readable label.
-
Parameters:
-
domain - my domain -
label - my user-friendly label
RecordingCommand
public RecordingCommand(
TransactionalEditingDomain domain,
String label,
String description)
- Initializes me with my editing domain, label, and more expansive
description.
-
Parameters:
-
domain - my domain -
label - my label -
description - my long description
prepare
protected boolean prepare()
- Subclasses should override this if they have more preparation to do.
By default, the result is just
true .
-
-
Overrides:
-
prepare
in class
AbstractCommand
-
execute
public final void execute()
- Implements the execution with automatic recording of undo information.
Delegates the actual model changes to the subclass's implementation of
the
doExecute() method.
-
-
Specified by:
-
execute
in interface
Command
-
-
See Also:
-
doExecute()
canUndo
public boolean canUndo()
- I can be undone if I successfully recorded the changes that I executed.
Subclasses would not normally need to override this method.
-
-
Specified by:
-
canUndo
in interface
Command
-
Overrides:
-
canUndo
in class
AbstractCommand
-
canRedo
public boolean canRedo()
- I can be redone if I successfully recorded the changes that I executed.
Subclasses would not normally need to override this method.
-
-
Specified by:
-
canRedo
in interface
ConditionalRedoCommand
-
-
Returns:
-
true if I can be redone; false ,
otherwise
undo
public final void undo()
- Undoes the changes that I recorded.
Subclasses would not normally need to override this method.
-
-
Specified by:
-
undo
in interface
Command
-
Overrides:
-
undo
in class
AbstractCommand
-
-
Throws:
-
IllegalStateException
- if I am not
undoable
-
See Also:
-
canUndo()
redo
public final void redo()
- Redoes the changes that I recorded.
Subclasses would not normally need to override this method.
-
-
Specified by:
-
redo
in interface
Command
-
-
Throws:
-
IllegalStateException
- if I am not
redoable
-
See Also:
-
canRedo()
doExecute
protected abstract void doExecute()
- Implemented by subclasses to perform the necessary changes in the model.
These changes are applied by direct manipulation of the model objects,
not by executing commands.
-
-
chain
public
Command chain(
Command command)
-
-
Specified by:
-
chain
in interface
Command
-
Overrides:
-
chain
in class
AbstractCommand
-
dispose
public void dispose()
- Extends the inherited implementation by disposing my change description,
if any.
-
-
Specified by:
-
dispose
in interface
Command
-
Overrides:
-
dispose
in class
AbstractCommand
-
|
|
|