oracle.ide.controller
Class Command
java.lang.Object
oracle.ide.controller.Command
- Direct Known Subclasses:
- AboutCommand, AddContentCommand, CloseNodeCommand, CommitChangeSetCommand, CopyFileListCommand, DeleteTNodeCommand, EditChangeSetCommand, ExistingChangeSetCommand, ExitCommand, IdeSettingsCommand, LogWindowCommand, MakeDefaultChangeSetCommand, NewChangeSetCommand, NewWorkspaceCommand, NotImplementedCommand, OpenCommand, OpenCommand, OpenEditorCommand, OpenWizardCommand, PreferencesCommand, PropertiesCommand, PropertySetCommand, PropertySetCommand, RemoveChangeSetCommand, RemoveFileCommand, RemoveFromChangeSetCommand, RestartMergeCommand, RevertNodeCommand, SaveAllCommand, SaveAsCommand, SaveCommand, SaveMergeCommand, SetCommentsCommand, SetScopeCommand, TextBufferCommand, ToggleChangeSetsCommand, ToggleCommentsCommand, UndoableEditCommand, UndoWrapperCommand, UnsetDefaultChangeSetCommand, VCSCheckOutNodeCmd, VCSCommand, VersionTreeCompareCommand, ViewChangeListCommand
public abstract class Command
- extends java.lang.Object
The Command
interface defines the interface of all command
objects. This interface consists of a procedure, doit
, to
execute a command. Concrete Command subclasses implement the necessary
behavior to carry out a specific command.
This interface also provides additional methods necessary to implement
the undo service provided by the CommandProcessor
. For the
undo mechanism it is necessary to distinguish three types of commands:
NO_CHANGE
A command that require no undo.
NORMAL
A command that can be undone.
NO_UNDO
A command that cannot be undone, and which
prevents the undo of previously performed
normal commands.
MULTI_NODE
A command that can be undone, but that affects
multiple files.
- See Also:
CommandProcessor
Field Summary |
static int |
CANCEL
Command execution CANCEL status |
protected Context |
context
|
static int |
EXECUTING
Command execution EXECUTING status. |
static int |
MULTI_NODE
Indicates a command that affects multiple Nodes and can be undone. |
static int |
NO_CHANGE
Indicates a command that doesn't affect a model and thus requires no undo. |
static int |
NO_UNDO
Indicates a command that affects one or more Nodes and can't be undone. |
static int |
NORMAL
Indicates a command that affects a single Node and can be undone. |
static int |
OK
Command execution OK status |
protected int |
type
Keeps the command type. |
Constructor Summary |
protected |
Command(int cmdId)
Constructor. |
protected |
Command(int cmdId,
int type)
Constructor. |
protected |
Command(int cmdId,
int type,
java.lang.String name)
Constructor. |
Method Summary |
abstract int |
doit()
Executes the actions associated with a specific command. |
boolean |
enableConfirmation()
Confirmation of undo and redo is standard for a global Command (which includes multi commands). |
Node[] |
getAffectedNodes()
This method should return an array of Nodes affected by the execution
of this command. |
Context |
getContext()
Gets the command's context. |
java.lang.Object |
getData()
Gets the stored command specific data |
int |
getId()
Gets the command identifier |
java.lang.String |
getName()
Gets the name of the command to display as the action to undo |
int |
getType()
Gets the command type. |
boolean |
isGlobal()
Determine whether or not the instance should be treated as global with
respect to any undo/redo mechanics. |
void |
setContext(Context context)
Sets context associated with command. |
void |
setData(java.lang.Object data)
Sets command specific data |
int |
undo()
Called by the CommandProcessor to undo a command. |
Methods inherited from class java.lang.Object |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
NORMAL
public static final int NORMAL
- Indicates a command that affects a single Node and can be undone.
Commands that cause the creation or deletion of a Node, yet
still wish to be undoable, must use the MULTI_NODE type, even when
creating or deleting only a single Node.
- See Also:
- Constant Field Values
NO_CHANGE
public static final int NO_CHANGE
- Indicates a command that doesn't affect a model and thus requires no undo.
- See Also:
- Constant Field Values
NO_UNDO
public static final int NO_UNDO
- Indicates a command that affects one or more Nodes and can't be undone.
This type prevents the undo of any previously performed undoable commands
for each of the affected Nodes.
- See Also:
- Constant Field Values
MULTI_NODE
public static final int MULTI_NODE
- Indicates a command that affects multiple Nodes and can be undone.
Undoable commands that create or delete a Node must return this type,
even if only creating or deleting a single Node.
- See Also:
- Constant Field Values
OK
public static final int OK
- Command execution OK status
- See Also:
- Constant Field Values
CANCEL
public static final int CANCEL
- Command execution CANCEL status
- See Also:
- Constant Field Values
EXECUTING
public static final int EXECUTING
- Command execution EXECUTING status. Indicates the command is currently
executing.
- See Also:
- Constant Field Values
type
protected int type
- Keeps the command type. Default value is NO_CHANGE.
context
protected Context context
Command
protected Command(int cmdId)
- Constructor.
- Parameters:
cmdId
- the command ID as retrieved from Ide.findOrCreateCmdId(..).
Command
protected Command(int cmdId,
int type)
- Constructor.
- Parameters:
cmdId
- the command ID as retrieved from Ide.findOrCreateCmdId(..).type
- the command type. Possible values are
NORMAL
, NO_CHANGE
, NO_UNDO
, MULTI_NODE
.
Command
protected Command(int cmdId,
int type,
java.lang.String name)
- Constructor.
- Parameters:
cmdId
- the command ID as retrieved from Ide.findOrCreateCmdId(..).type
- the command type. Possible values are
NORMAL
, NO_CHANGE
, NO_UNDO
, MULTI_NODE
.name
- the command name. This name will be displayed along side
the Undo and Redo menu items and should not be null.
doit
public abstract int doit()
throws java.lang.Exception
- Executes the actions associated with a specific command.
When a command executes successfully, implementations should
return OK, otherwise, return CANCEL or any other non-zero value.
- Throws:
java.lang.Exception
undo
public int undo()
throws java.lang.Exception
- Called by the CommandProcessor to undo a command. Does nothing in
this implemenation. Commands that can be undone should provide the
behavior here to undo whatever actions were carried out when the
doit
method was called
When a command executes successfully, implementations should
return OK, otherwise, return CANCEL or any other non-zero value.
- Throws:
java.lang.Exception
getName
public java.lang.String getName()
- Gets the name of the command to display as the action to undo
getId
public int getId()
- Gets the command identifier
getType
public int getType()
- Gets the command type. The default value is NO_CHANGE
isGlobal
public boolean isGlobal()
- Determine whether or not the instance should be treated as global with
respect to any undo/redo mechanics. A global Command may be undone/redone
from any View regardless of the Context held by that View. Tbis is
valuable for destructive or creationary Command implementations which leave
no possible Context from which to undo or redo the operation (e.g. Deleting
a Node by definition prevents any View from being able to offer that
Node as part of its Context for the purposes of undo. Similarly,
creating a Documnt by definition prevents any View from being able to offer
that Node as part of its Context for the purposes of redo once undone).
It is also usefull for non Editor type View implementations
(e.g. a Navigator) which wish to support undo, but which display multiple
Nodes and do not want to force the user to select a specific Node
before being able to undo/redo an operation on that Node.
A non global Command may only be undone from a View whose Context includes
the target Node as its Node or as contained in its list of affected
Nodes; as would be the case from any Editor type View. This latter
example is the normal case and thus the default value for this method is
false.
Careful consideration should be given before returning a value of true from
this method. The implication is that the previous global operation cannot
be undone until the current global operation is undone. So, a simple
editing change from an Editor is best left non global since it is easily
undone from within the Editor and need not block the undo of a file
deletion operation which could not be undone by any other means other
than through global support. Typically, file manipulations or operations
initiated from non Editor type Views are best suited for the global value.
enableConfirmation
public boolean enableConfirmation()
- Confirmation of undo and redo is standard for a global Command (which includes multi commands).
However there are cases where it's unnecessary, a command can override this when they do not want a
confirmation dialog to appear for a redo/undo. Returning false will disables a confirmation from taking place
Note that isGlobal() is used to determine if an undo/redo should be prompt for confirmation. This is
confusing which is why this has been named enableConfirmation. The default value maintains the existing
behaviour. The name enableConfirmation indicate it only acts on something that would have confirmation,
i.e. you can't use this to force a confirmation, only to block if confirmation is indicated by the value
of isGlobal().
- Returns:
- boolean
getData
public java.lang.Object getData()
- Gets the stored command specific data
setData
public void setData(java.lang.Object data)
- Sets command specific data
getContext
public Context getContext()
- Gets the command's context.
setContext
public void setContext(Context context)
- Sets context associated with command.
getAffectedNodes
public Node[] getAffectedNodes()
- This method should return an array of Nodes affected by the execution
of this command. The array should not include the primary Node on which
this command is operating (as returned from getContext().getNode()),
but rather should only include other Nodes additionally affected as a
side effect of executing this command. If there is no primary Node,
then all Nodes affected should be returned in the array.
The CommandProcessor uses the return value when deciding how to treat
the undo stack of the affected Nodes.
Commands of type NO_CHANGE should return null.
- Returns:
- the Nodes affected by this command, otherwise, null.
Copyright © 1997, 2011, Oracle. All rights reserved.