Class AbstractOperation
- All Implemented Interfaces:
IUndoableOperation
- Direct Known Subclasses:
AbstractWorkspaceOperation,TriggeredOperations
Abstract implementation for an undoable operation. At a minimum, subclasses
should implement behavior for
IUndoableOperation.execute(org.eclipse.core.runtime.IProgressMonitor, org.eclipse.core.runtime.IAdaptable),
IUndoableOperation.redo(org.eclipse.core.runtime.IProgressMonitor, org.eclipse.core.runtime.IAdaptable),
and
IUndoableOperation.undo(org.eclipse.core.runtime.IProgressMonitor, org.eclipse.core.runtime.IAdaptable).
- Since:
- 3.1
- See Also:
-
Constructor Summary
ConstructorsConstructorDescriptionAbstractOperation(String label) Construct an operation that has the specified label. -
Method Summary
Modifier and TypeMethodDescriptionvoidaddContext(IUndoContext context) Add the specified context to the operation.booleanReturns whether the operation can be executed in its current state.booleancanRedo()Returns whether the operation can be redone in its current state.booleancanUndo()Returns whether the operation can be undone in its current state.voiddispose()Dispose of the operation.abstract IStatusexecute(IProgressMonitor monitor, IAdaptable info) Execute the operation.final IUndoContext[]Returns the array of contexts that have been assigned to the operation.getLabel()Return the label that should be used to show the name of the operation to the user.final booleanhasContext(IUndoContext context) Returns whether the operation has a matching context for the specified context.abstract IStatusredo(IProgressMonitor monitor, IAdaptable info) Redo the operation.voidremoveContext(IUndoContext context) Remove the specified context from the operation.voidSet the label of the operation to the specified name.toString()The string representation of this operation.abstract IStatusundo(IProgressMonitor monitor, IAdaptable info) Undo the operation.
-
Constructor Details
-
AbstractOperation
Construct an operation that has the specified label.- Parameters:
label- the label to be used for the operation. Should never benull.
-
-
Method Details
-
addContext
Description copied from interface:IUndoableOperationAdd the specified context to the operation. If a context equal to the specified context is already present, do not add it again. Note that determining whether a context is already present is based on equality, not whether the context matches (
IUndoContext.matches(IUndoContext)) another context.- Specified by:
addContextin interfaceIUndoableOperation- Parameters:
context- the context to be added
-
canExecute
public boolean canExecute()Description copied from interface:IUndoableOperationReturns whether the operation can be executed in its current state.
Note: The computation for this method must be fast, as it is called frequently. If necessary, this method can be optimistic in its computation (returning true) and later perform more time-consuming computations during the actual execution of the operation, returning the appropriate status if the operation cannot actually execute at that time.
- Specified by:
canExecutein interfaceIUndoableOperation- Returns:
trueif the operation can be executed;falseotherwise.
-
canRedo
public boolean canRedo()Description copied from interface:IUndoableOperationReturns whether the operation can be redone in its current state.
Note: The computation for this method must be fast, as it is called frequently. If necessary, this method can be optimistic in its computation (returning true) and later perform more time-consuming computations during the actual redo of the operation, returning the appropriate status if the operation cannot actually be redone at that time.
- Specified by:
canRedoin interfaceIUndoableOperation- Returns:
trueif the operation can be redone;falseotherwise.
-
canUndo
public boolean canUndo()Description copied from interface:IUndoableOperationReturns whether the operation can be undone in its current state.
Note: The computation for this method must be fast, as it is called frequently. If necessary, this method can be optimistic in its computation (returning true) and later perform more time-consuming computations during the actual undo of the operation, returning the appropriate status if the operation cannot actually be undone at that time.
- Specified by:
canUndoin interfaceIUndoableOperation- Returns:
trueif the operation can be undone;falseotherwise.
-
dispose
public void dispose()Description copied from interface:IUndoableOperationDispose of the operation. This method is used when the operation is no longer kept in the history. Implementers of this method typically unregister any listeners.- Specified by:
disposein interfaceIUndoableOperation
-
execute
public abstract IStatus execute(IProgressMonitor monitor, IAdaptable info) throws ExecutionException Description copied from interface:IUndoableOperationExecute the operation. This method should only be called the first time that an operation is executed.- Specified by:
executein interfaceIUndoableOperation- Parameters:
monitor- the progress monitor (ornull) to use for reporting progress to the user.info- the IAdaptable (ornull) provided by the caller in order to supply UI information for prompting the user if necessary. When this parameter is notnull, it should minimally contain an adapter for the org.eclipse.swt.widgets.Shell.class.- Returns:
- the IStatus of the execution. The status severity should be set
to
OKif the operation was successful, andERRORif it was not. Any other status is assumed to represent an incompletion of the execution. - Throws:
ExecutionException- if an exception occurred during execution.
-
getContexts
Description copied from interface:IUndoableOperationReturns the array of contexts that have been assigned to the operation.
This method may be called by the operation history from inside a synchronized block. To avoid deadlock conditions, implementers of this method must avoid dispatching and waiting on threads that modify the operation history during this method.
- Specified by:
getContextsin interfaceIUndoableOperation- Returns:
- the array of contexts
-
getLabel
Description copied from interface:IUndoableOperationReturn the label that should be used to show the name of the operation to the user. This label is typically combined with the command strings shown to the user in "Undo" and "Redo" user interfaces.- Specified by:
getLabelin interfaceIUndoableOperation- Returns:
- the String label. Should never be
null.
-
setLabel
Set the label of the operation to the specified name.- Parameters:
name- the string to be used for the label. Should never benull.
-
hasContext
Description copied from interface:IUndoableOperationReturns whether the operation has a matching context for the specified context.
This method may be called by the operation history from inside a synchronized block. To avoid deadlock conditions, implementers of this method must avoid dispatching and waiting on threads that modify the operation history during this method.
- Specified by:
hasContextin interfaceIUndoableOperation- Parameters:
context- the context in question- Returns:
trueif the context is present,falseif it is not.- See Also:
-
redo
Description copied from interface:IUndoableOperationRedo the operation. This method should only be called after an operation has been undone.- Specified by:
redoin interfaceIUndoableOperation- Parameters:
monitor- the progress monitor (ornull) to use for reporting progress to the user.info- the IAdaptable (ornull) provided by the caller in order to supply UI information for prompting the user if necessary. When this parameter is notnull, it should minimally contain an adapter for the org.eclipse.swt.widgets.Shell.class.- Returns:
- the IStatus of the redo. The status severity should be set to
OKif the redo was successful, andERRORif it was not. Any other status is assumed to represent an incompletion of the redo. - Throws:
ExecutionException- if an exception occurred during redo.
-
removeContext
Description copied from interface:IUndoableOperationRemove the specified context from the operation. This method has no effect if the context is not equal to another context in the context list. Note that determining whether a context is present when removing it is based on equality, not whether the context matches (IUndoContext.matches(IUndoContext)) another context.- Specified by:
removeContextin interfaceIUndoableOperation- Parameters:
context- the context to be removed
-
undo
Description copied from interface:IUndoableOperationUndo the operation. This method should only be called after an operation has been executed.- Specified by:
undoin interfaceIUndoableOperation- Parameters:
monitor- the progress monitor (ornull) to use for reporting progress to the user.info- the IAdaptable (ornull) provided by the caller in order to supply UI information for prompting the user if necessary. When this parameter is notnull, it should minimally contain an adapter for the org.eclipse.swt.widgets.Shell.class.- Returns:
- the IStatus of the undo. The status severity should be set to
OKif the redo was successful, andERRORif it was not. Any other status is assumed to represent an incompletion of the undo. - Throws:
ExecutionException- if an exception occurred during undo.
-
toString
The string representation of this operation. Used for debugging purposes only. This string should not be shown to an end user.
-