Interface IOperationApprover
-
- All Known Subinterfaces:
IOperationApprover2
- All Known Implementing Classes:
LinearUndoEnforcer
,LinearUndoViolationDetector
,LinearUndoViolationUserApprover
,NonLocalUndoUserApprover
public interface IOperationApprover
IOperationApprover defines an interface for approving the undo or redo of a particular operation within an operation history. Operations that are candidates for undo or redo have already been validated against their current state and according to the rules of the history.
By the time an IOperationApprover is consulted, the undo has already been requested. Approvers should return an
IStatus
object with severityOK
if the operation should proceed, and any other severity if it should not. When an operation is not approved, it is expected that the object not allowing the operation has already consulted the user if necessary or otherwise provided any necessary information to the user about the fact that the operation is not approved.Operation approvers must be prepared to receive the approval messages from a background thread. Any UI access occurring inside the implementation must be properly synchronized using the techniques specified by the client's widget library.
- Since:
- 3.1
-
-
Method Summary
All Methods Instance Methods Abstract Methods Modifier and Type Method Description IStatus
proceedRedoing(IUndoableOperation operation, IOperationHistory history, IAdaptable info)
Return a status indicating whether the specified operation should be redone.IStatus
proceedUndoing(IUndoableOperation operation, IOperationHistory history, IAdaptable info)
Return a status indicating whether the specified operation should be undone.
-
-
-
Method Detail
-
proceedRedoing
IStatus proceedRedoing(IUndoableOperation operation, IOperationHistory history, IAdaptable info)
Return a status indicating whether the specified operation should be redone. Any status that does not have severityIStatus.OK
will not be approved. Implementers should not assume that the redo will be performed when the status isOK
, since other operation approvers may veto the redo.- Parameters:
operation
- the operation to be redonehistory
- the history redoing the operationinfo
- 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. Even if UI information is provided, the implementation of this method must be prepared for being called from a background thread. Any UI access must be properly synchronized using the techniques specified by the client's widget library.- Returns:
- the IStatus describing whether the operation is approved. The
redo will not proceed if the status severity is not
OK
, and the caller requesting the redo will be returned the status that caused the rejection. Any other status severities will not be interpreted by the history.
-
proceedUndoing
IStatus proceedUndoing(IUndoableOperation operation, IOperationHistory history, IAdaptable info)
Return a status indicating whether the specified operation should be undone. Any status that does not have severityIStatus.OK
will not be approved. Implementers should not assume that the undo will be performed when the status isOK
, since other operation approvers can veto the undo.- Parameters:
operation
- the operation to be undonehistory
- the history undoing the operationinfo
- 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. Even if UI information is provided, the implementation of this method must be prepared for being called from a background thread. Any UI access must be properly synchronized using the techniques specified by the client's widget library.- Returns:
- the IStatus describing whether the operation is approved. The
undo will not proceed if the status severity is not
OK
, and the caller requesting the undo will be returned the status that caused the rejection. Any other status severities will not be interpreted by the history.
-
-