org.eclipse.emf.transaction
Class RecordingCommand

java.lang.Object
  extended byorg.eclipse.emf.common.command.AbstractCommand
      extended byorg.eclipse.emf.transaction.RecordingCommand
All Implemented Interfaces:
org.eclipse.emf.common.command.Command, ConditionalRedoCommand

public abstract class RecordingCommand
extends org.eclipse.emf.common.command.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 RecordingCommand.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).


Nested Class Summary
 
Nested classes inherited from class org.eclipse.emf.common.command.AbstractCommand
org.eclipse.emf.common.command.AbstractCommand.NonDirtying
 
Nested classes inherited from class org.eclipse.emf.transaction.util.ConditionalRedoCommand
ConditionalRedoCommand.Compound
 
Field Summary
 
Fields inherited from class org.eclipse.emf.common.command.AbstractCommand
description, isExecutable, isPrepared, label
 
Constructor Summary
RecordingCommand(TransactionalEditingDomain domain)
          Initializes me with the editing domain in which I am to be executed.
RecordingCommand(TransactionalEditingDomain domain, java.lang.String label)
          Initializes me with my editing domain and a human-readable label.
RecordingCommand(TransactionalEditingDomain domain, java.lang.String label, java.lang.String description)
          Initializes me with my editing domain, label, and more expansive description.
 
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.
 org.eclipse.emf.common.command.Command chain(org.eclipse.emf.common.command.Command command)
           
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.
 
Methods inherited from class org.eclipse.emf.common.command.AbstractCommand
canExecute, dispose, getAffectedObjects, getDescription, getLabel, getResult, setDescription, setLabel, toString
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 
Methods inherited from interface org.eclipse.emf.common.command.Command
canExecute, dispose, getAffectedObjects, getDescription, getLabel, getResult
 

Constructor Detail

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,
                        java.lang.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,
                        java.lang.String label,
                        java.lang.String description)
Initializes me with my editing domain, label, and more expansive description.

Parameters:
domain - my domain
label - my label
description - my long description
Method Detail

prepare

protected boolean prepare()
Subclasses should override this if they have more preparation to do. By default, the result is just true.


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 RecordingCommand.doExecute() method.

Specified by:
execute in interface org.eclipse.emf.common.command.Command
See Also:
RecordingCommand.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 org.eclipse.emf.common.command.Command

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 org.eclipse.emf.common.command.Command

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 org.eclipse.emf.common.command.Command

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 org.eclipse.emf.common.command.Command chain(org.eclipse.emf.common.command.Command command)
Specified by:
chain in interface org.eclipse.emf.common.command.Command

Copyright 2002, 2006 IBM Corporation and others.
All Rights Reserved.