Package org.eclipse.ui.ide.undo
Class CreateMarkersOperation
- java.lang.Object
-
- org.eclipse.core.commands.operations.AbstractOperation
-
- org.eclipse.ui.ide.undo.AbstractWorkspaceOperation
-
- org.eclipse.ui.ide.undo.CreateMarkersOperation
-
- All Implemented Interfaces:
IAdvancedUndoableOperation,IAdvancedUndoableOperation2,IUndoableOperation
public class CreateMarkersOperation extends AbstractWorkspaceOperation
A CreateMarkersOperation represents an undoable operation for creating one or more markers on one or more resources in the workspace. Clients may call the public API from a background thread. This class is intended to be instantiated and used by clients. It is not intended to be subclassed by clients.- Since:
- 3.3
-
-
Field Summary
-
Fields inherited from class org.eclipse.ui.ide.undo.AbstractWorkspaceOperation
EXECUTE, quietCompute, REDO, resources, UNDO
-
-
Constructor Summary
Constructors Constructor Description CreateMarkersOperation(String[] types, Map[] attributes, IResource[] resources, String name)Create an undoable operation that can create multiple markers of various types on multiple resources.CreateMarkersOperation(String type, Map[] attributes, IResource[] resources, String name)Create an undoable operation that can create multiple markers of a single type on multiple resources.CreateMarkersOperation(String type, Map attributes, IResource resource, String name)Create an undoable operation that can create a marker of a specific type on a resource.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description protected voidappendDescriptiveText(StringBuffer text)Append any descriptive text to the specified string buffer to be shown in the receiver'sAbstractWorkspaceOperation.toString()text.IStatuscomputeExecutionStatus(IProgressMonitor monitor)Return a status indicating the projected outcome of executing the receiver.IStatuscomputeRedoableStatus(IProgressMonitor monitor)Return a status indicating the projected outcome of redoing the receiver.IStatuscomputeUndoableStatus(IProgressMonitor monitor)Return a status indicating the projected outcome of undoing the receiver.protected voidcreateMarkers(int work, IProgressMonitor monitor)Create markers from any currently known marker descriptions.protected voiddeleteMarkers(int work, IProgressMonitor monitor)Delete any currently known markers and save their information in marker descriptions so that they can be restored.protected voiddoExecute(IProgressMonitor monitor, IAdaptable info)Perform the specific work involved in executing this operation.protected voiddoUndo(IProgressMonitor monitor, IAdaptable info)Perform the specific work involved in undoing this operation.protected IStatusgetBasicRedoStatus()Return a status indicating the projected outcome of redoing the marker operation.protected IStatusgetBasicUndoStatus()Return a status indicating the projected outcome of undoing the marker operation.protected ISchedulingRulegetExecuteSchedulingRule()Return a scheduling rule appropriate for executing this operation.protected IStatusgetMarkerCreationStatus()Compute the status for creating any known markers.protected IStatusgetMarkerDeletionStatus()Compute the status for deleting any known markers.IMarker[]getMarkers()Return the array of markers that has been updated or created.protected IStatusgetMarkerUpdateStatus()Compute the status for updating any known markers.protected ISchedulingRulegetUndoSchedulingRule()Return a scheduling rule appropriate for undoing this operation.protected booleanmarkersExist()Return whether the markers known by this operation currently exist.protected voidsetMarkerDescriptions(org.eclipse.ui.internal.ide.undo.MarkerDescription[] descriptions)Set the marker descriptions that describe markers that can be created.protected voidupdateMarkers(int work, IProgressMonitor monitor, boolean mergeAttributes)Update the currently known markers with the corresponding array of marker descriptions.-
Methods inherited from class org.eclipse.ui.ide.undo.AbstractWorkspaceOperation
aboutToNotify, canExecute, canRedo, canUndo, execute, getAffectedObjects, getErrorStatus, getRedoSchedulingRule, getShell, getWarningStatus, getWorkspace, getWorkspaceRuleFactory, isValid, markInvalid, redo, resourcesExist, resourcesIncludesProjects, runInBackground, setModelProviderIds, setQuietCompute, setTargetResources, toString, undo, updateResourceChangeDescriptionFactory
-
Methods inherited from class org.eclipse.core.commands.operations.AbstractOperation
addContext, dispose, getContexts, getLabel, hasContext, removeContext, setLabel
-
-
-
-
Constructor Detail
-
CreateMarkersOperation
public CreateMarkersOperation(String type, Map attributes, IResource resource, String name)
Create an undoable operation that can create a marker of a specific type on a resource.- Parameters:
type- the type of marker to be createdattributes- the map of attributes that should be assigned to the markerresource- the resource on which the marker should be createdname- the name used to describe the operation that creates the marker- See Also:
IMarker
-
CreateMarkersOperation
public CreateMarkersOperation(String[] types, Map[] attributes, IResource[] resources, String name)
Create an undoable operation that can create multiple markers of various types on multiple resources.- Parameters:
types- an array describing the types of markers to be createdattributes- an array of maps of attributes that should be assigned to each created marker, corresponding to each marker type describedresources- an array of resources describing the resource on which the corresponding marker type should be createdname- the name used to describe the operation that creates the markers
-
CreateMarkersOperation
public CreateMarkersOperation(String type, Map[] attributes, IResource[] resources, String name)
Create an undoable operation that can create multiple markers of a single type on multiple resources.- Parameters:
type- the type of markers to be createdattributes- an array of maps of attributes that should be assigned to each created markerresources- an array of resources describing the resource on which the marker with the corresponding attributes should be createdname- the name used to describe the operation that creates the markers
-
-
Method Detail
-
doExecute
protected void doExecute(IProgressMonitor monitor, IAdaptable info) throws CoreException
Description copied from class:AbstractWorkspaceOperationPerform the specific work involved in executing this operation.- Specified by:
doExecutein classAbstractWorkspaceOperation- Parameters:
monitor- the progress monitor to use for 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 contains an adapter for the org.eclipse.swt.widgets.Shell.class- Throws:
CoreException- propagates any CoreExceptions thrown from the resources API
-
doUndo
protected void doUndo(IProgressMonitor monitor, IAdaptable info) throws CoreException
Description copied from class:AbstractWorkspaceOperationPerform the specific work involved in undoing this operation.- Specified by:
doUndoin classAbstractWorkspaceOperation- Parameters:
monitor- the progress monitor to use for 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 contains an adapter for the org.eclipse.swt.widgets.Shell.class- Throws:
CoreException- propagates any CoreExceptions thrown from the resources API
-
getBasicUndoStatus
protected IStatus getBasicUndoStatus()
Return a status indicating the projected outcome of undoing the marker operation. The receiver is not responsible for remembering the result of this computation.- Returns:
- the status indicating whether the operation can be undone
-
getBasicRedoStatus
protected IStatus getBasicRedoStatus()
Return a status indicating the projected outcome of redoing the marker operation. The receiver is not responsible for remembering the result of this computation.- Returns:
- the status indicating whether the operation can be undone
-
deleteMarkers
protected void deleteMarkers(int work, IProgressMonitor monitor) throws CoreExceptionDelete any currently known markers and save their information in marker descriptions so that they can be restored.- Parameters:
work- the number of work ticks to be used by the deletemonitor- the progress monitor to use for the delete- Throws:
CoreException- propagates any CoreExceptions thrown from the resources API
-
createMarkers
protected void createMarkers(int work, IProgressMonitor monitor) throws CoreExceptionCreate markers from any currently known marker descriptions.- Parameters:
work- the number of work ticks to be used by the createmonitor- the progress monitor to use for the create- Throws:
CoreException- propagates any CoreExceptions thrown from the resources API
-
updateMarkers
protected void updateMarkers(int work, IProgressMonitor monitor, boolean mergeAttributes) throws CoreExceptionUpdate the currently known markers with the corresponding array of marker descriptions.- Parameters:
work- the number of work ticks to be used by the updatemonitor- the progress monitor to use for the updatemergeAttributes- a boolean specifying whether the attributes are merged or considered to be a replacement of the previous attributes.- Throws:
CoreException- propagates any CoreExceptions thrown from the resources API
-
setMarkerDescriptions
protected void setMarkerDescriptions(org.eclipse.ui.internal.ide.undo.MarkerDescription[] descriptions)
Set the marker descriptions that describe markers that can be created.- Parameters:
descriptions- the descriptions of markers that can be created.
-
getMarkers
public IMarker[] getMarkers()
Return the array of markers that has been updated or created.- Returns:
- the array of markers that have been updated or created, or
nullif no markers have been created or updated.
-
markersExist
protected boolean markersExist()
Return whether the markers known by this operation currently exist.- Returns:
trueif there are existing markers andfalseif there are no known markers or any one of them does not exist
-
computeExecutionStatus
public IStatus computeExecutionStatus(IProgressMonitor monitor)
Description copied from class:AbstractWorkspaceOperationReturn a status indicating the projected outcome of executing the receiver. This method is not called by the operation history, but instead is used by clients (such as implementers ofIOperationApprover2) who wish to perform advanced validation of an operation before attempting to execute it. If an ERROR status is returned, the operation will not proceed and the user notified if deemed necessary by the caller. The validity flag on the operation should be marked as invalid. If an OK status is returned, the operation will proceed. The caller must interpret any other returned status severity, and may choose to prompt the user as to how to proceed. If there are multiple conditions that result in an ambiguous status severity, it is best for the implementor of this method to consult the user as to how to proceed for each one, and return an OK or ERROR status that accurately reflects the user's wishes, or to return a multi-status that accurately describes all of the issues at hand, so that the caller may potentially consult the user. (Note that the user should not be consulted at all if a client has calledAbstractWorkspaceOperation.setQuietCompute(boolean)with a value oftrue.) This implementation computes the validity of execution by computing the resource delta that would be generated on execution, and checking whether any registered model providers are affected by the operation.- Specified by:
computeExecutionStatusin interfaceIAdvancedUndoableOperation2- Overrides:
computeExecutionStatusin classAbstractWorkspaceOperation- Parameters:
monitor- the progress monitor to be used for computing the status- Returns:
- the status indicating the projected outcome of executing the receiver
- See Also:
IAdvancedUndoableOperation.computeUndoableStatus(org.eclipse.core.runtime.IProgressMonitor),AbstractWorkspaceOperation.setQuietCompute(boolean)
-
computeUndoableStatus
public IStatus computeUndoableStatus(IProgressMonitor monitor)
Description copied from class:AbstractWorkspaceOperationReturn a status indicating the projected outcome of undoing the receiver. This method is not called by the operation history, but instead is used by clients (such as implementers ofIOperationApprover2) who wish to perform advanced validation of an operation before attempting to undo it. If an ERROR status is returned, the undo will not proceed and the user notified if deemed necessary by the caller. The validity flag on the operation should be marked as invalid. If an OK status is returned, the undo will proceed. The caller must interpret any other returned status severity, and may choose to prompt the user as to how to proceed. If there are multiple conditions that result in an ambiguous status severity, it is best for the implementor of this method to consult the user as to how to proceed for each one, and return an OK or ERROR status that accurately reflects the user's wishes, or to return a multi-status that accurately describes all of the issues at hand, so that the caller may potentially consult the user. (Note that the user should not be consulted at all if a client has calledAbstractWorkspaceOperation.setQuietCompute(boolean)with a value oftrue.) This implementation computes the validity of undo by computing the resource delta that would be generated on undo, and checking whether any registered model providers are affected by the operation.- Specified by:
computeUndoableStatusin interfaceIAdvancedUndoableOperation- Overrides:
computeUndoableStatusin classAbstractWorkspaceOperation- Parameters:
monitor- the progress monitor to be used for computing the status- Returns:
- the status indicating the projected outcome of undoing the receiver
- See Also:
IAdvancedUndoableOperation.computeUndoableStatus(org.eclipse.core.runtime.IProgressMonitor),AbstractWorkspaceOperation.setQuietCompute(boolean)
-
computeRedoableStatus
public IStatus computeRedoableStatus(IProgressMonitor monitor)
Description copied from class:AbstractWorkspaceOperationReturn a status indicating the projected outcome of redoing the receiver. This method is not called by the operation history, but instead is used by clients (such as implementers ofIOperationApprover2) who wish to perform advanced validation of an operation before attempting to redo it. If an ERROR status is returned, the redo will not proceed and the user notified if deemed necessary by the caller. The validity flag on the operation should be marked as invalid. If an OK status is returned, the redo will proceed. The caller must interpret any other returned status severity, and may choose to prompt the user as to how to proceed. If there are multiple conditions that result in an ambiguous status severity, it is best for the implementor of this method to consult the user as to how to proceed for each one, and return an OK or ERROR status that accurately reflects the user's wishes, or to return a multi-status that accurately describes all of the issues at hand, so that the caller may potentially consult the user. (Note that the user should not be consulted at all if a client has calledAbstractWorkspaceOperation.setQuietCompute(boolean)with a value oftrue.) This implementation computes the validity of redo by computing the resource delta that would be generated on redo, and checking whether any registered model providers are affected by the operation.- Specified by:
computeRedoableStatusin interfaceIAdvancedUndoableOperation- Overrides:
computeRedoableStatusin classAbstractWorkspaceOperation- Parameters:
monitor- the progress monitor to be used for computing the status- Returns:
- the status indicating the projected outcome of redoing the receiver
- See Also:
IAdvancedUndoableOperation.computeUndoableStatus(org.eclipse.core.runtime.IProgressMonitor),AbstractWorkspaceOperation.setQuietCompute(boolean)
-
getMarkerDeletionStatus
protected IStatus getMarkerDeletionStatus()
Compute the status for deleting any known markers. A status severity ofOKindicates that the delete is likely to be successful. A status severity ofERRORindicates that the operation is no longer valid. Other status severities are open to interpretation by the caller.- Returns:
- the status indicating the projected outcome of deleting the markers.
-
getMarkerCreationStatus
protected IStatus getMarkerCreationStatus()
Compute the status for creating any known markers. A status severity ofOKindicates that the create is likely to be successful. A status severity ofERRORindicates that the operation is no longer valid. Other status severities are open to interpretation by the caller.- Returns:
- the status indicating the projected outcome of creating the markers.
-
getMarkerUpdateStatus
protected IStatus getMarkerUpdateStatus()
Compute the status for updating any known markers. A status severity ofOKindicates that the update is likely to be successful. A status severity ofERRORindicates that the operation is no longer valid. Other status severities are open to interpretation by the caller.- Returns:
- the status indicating the projected outcome of updating the markers.
-
getExecuteSchedulingRule
protected ISchedulingRule getExecuteSchedulingRule()
Description copied from class:AbstractWorkspaceOperationReturn a scheduling rule appropriate for executing this operation. The default implementation is to return a rule that locks out the entire workspace. Subclasses are encouraged to provide more specific rules that affect only their resources.- Overrides:
getExecuteSchedulingRulein classAbstractWorkspaceOperation- Returns:
- the scheduling rule to use when executing this operation, or
nullif there are no scheduling restrictions for this operation. - See Also:
IWorkspace.run(ICoreRunnable, ISchedulingRule, int, IProgressMonitor)
-
getUndoSchedulingRule
protected ISchedulingRule getUndoSchedulingRule()
Description copied from class:AbstractWorkspaceOperationReturn a scheduling rule appropriate for undoing this operation. The default implementation is to return a rule that locks out the entire workspace. Subclasses are encouraged to provide more specific rules that affect only their resources.- Overrides:
getUndoSchedulingRulein classAbstractWorkspaceOperation- Returns:
- the scheduling rule to use when undoing this operation, or
nullif there are no scheduling restrictions for this operation. - See Also:
IWorkspace.run(ICoreRunnable, ISchedulingRule, int, IProgressMonitor)
-
appendDescriptiveText
protected void appendDescriptiveText(StringBuffer text)
Description copied from class:AbstractWorkspaceOperationAppend any descriptive text to the specified string buffer to be shown in the receiver'sAbstractWorkspaceOperation.toString()text.Note that this method is not intend to be subclassed by clients.
- Overrides:
appendDescriptiveTextin classAbstractWorkspaceOperation- Parameters:
text- the StringBuffer on which to append the text
-
-