Oracle Fusion Middleware Java API Reference for Oracle Extension SDK Reference
11g Release 1 (11.1.1.6.0)

E13403-07

oracle.ide.controller
Class Command

java.lang.Object
  extended by oracle.ide.controller.Command
Direct Known Subclasses:
AboutCommand, AddContentCommand, CloseNodeCommand, CommitChangeSetCommand, CopyFileListCommand, DeleteTNodeCommand, DeployCommand, EditChangeSetCommand, ExistingChangeSetCommand, ExitCommand, IdeSettingsCommand, JavaManager.TransactionCommand, 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.
 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
 

Field Detail

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
Constructor Detail

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.
Method Detail

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.


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.

Oracle Fusion Middleware Java API Reference for Oracle Extension SDK Reference
11g Release 1 (11.1.1.6.0)

E13403-07

Copyright © 1997, 2011, Oracle. All rights reserved.