Class UpdateMarkersOperation

All Implemented Interfaces:
IAdvancedUndoableOperation, IAdvancedUndoableOperation2, IUndoableOperation

public class UpdateMarkersOperation extends AbstractWorkspaceOperation
An UpdateMarkersOperation represents an undoable operation for updating one or more markers in the workspace with one or more sets of attributes. 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
  • Constructor Details

    • UpdateMarkersOperation

      public UpdateMarkersOperation(IMarker marker, Map attributes, String name, boolean mergeAttributes)
      Create an undoable operation that can update the specified marker with the specified attributes.
      Parameters:
      marker - the marker to be updated
      attributes - the map of attributes to be assigned to the marker. This map does not replace the attribute map of the marker, but instead, each attribute in the map is added or updated with the current value in the map. In other words
      name - the name used to describe this operation
      mergeAttributes - true if the specified map of attributes for the marker is to be merged with the attributes already specified for the marker, or false if the specified map of attributes is to be considered a complete replacement of all attributes of the marker
    • UpdateMarkersOperation

      public UpdateMarkersOperation(IMarker[] markers, Map attributes, String name, boolean mergeAttributes)
      Create an undoable operation that updates many markers to have the same set of attributes.
      Parameters:
      markers - the markers to be updated
      attributes - the map of attributes to be assigned to each marker
      name - the name used to describe this operation
      mergeAttributes - true if the specified map of attributes for each marker is to be merged with the attributes already specified for that marker, or false if the specified map of attributes is to be considered a complete replacement of all attributes for each marker
  • Method Details

    • doExecute

      protected void doExecute(IProgressMonitor monitor, IAdaptable info) throws CoreException
      Description copied from class: AbstractWorkspaceOperation
      Perform the specific work involved in executing this operation.
      Specified by:
      doExecute in class AbstractWorkspaceOperation
      Parameters:
      monitor - the progress monitor to use for the operation
      info - the IAdaptable (or null) provided by the caller in order to supply UI information for prompting the user if necessary. When this parameter is not null, 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: AbstractWorkspaceOperation
      Perform the specific work involved in undoing this operation.
      Specified by:
      doUndo in class AbstractWorkspaceOperation
      Parameters:
      monitor - the progress monitor to use for the operation
      info - the IAdaptable (or null) provided by the caller in order to supply UI information for prompting the user if necessary. When this parameter is not null, 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 CoreException
      Delete 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 delete
      monitor - 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 CoreException
      Create markers from any currently known marker descriptions.
      Parameters:
      work - the number of work ticks to be used by the create
      monitor - 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 CoreException
      Update the currently known markers with the corresponding array of marker descriptions.
      Parameters:
      work - the number of work ticks to be used by the update
      monitor - the progress monitor to use for the update
      mergeAttributes - 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.core.resources.undo.snapshot.IMarkerSnapshot[] 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 null if no markers have been created or updated.
    • markersExist

      protected boolean markersExist()
      Return whether the markers known by this operation currently exist.
      Returns:
      true if there are existing markers and false if there are no known markers or any one of them does not exist
    • computeExecutionStatus

      public IStatus computeExecutionStatus(IProgressMonitor monitor)
      Description copied from class: AbstractWorkspaceOperation
      Return 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 of IOperationApprover2) 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 called AbstractWorkspaceOperation.setQuietCompute(boolean) with a value of true.) 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:
      computeExecutionStatus in interface IAdvancedUndoableOperation2
      Overrides:
      computeExecutionStatus in class AbstractWorkspaceOperation
      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:
    • computeUndoableStatus

      public IStatus computeUndoableStatus(IProgressMonitor monitor)
      Description copied from class: AbstractWorkspaceOperation
      Return 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 of IOperationApprover2) 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 called AbstractWorkspaceOperation.setQuietCompute(boolean) with a value of true.) 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:
      computeUndoableStatus in interface IAdvancedUndoableOperation
      Overrides:
      computeUndoableStatus in class AbstractWorkspaceOperation
      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:
    • computeRedoableStatus

      public IStatus computeRedoableStatus(IProgressMonitor monitor)
      Description copied from class: AbstractWorkspaceOperation
      Return 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 of IOperationApprover2) 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 called AbstractWorkspaceOperation.setQuietCompute(boolean) with a value of true.) 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:
      computeRedoableStatus in interface IAdvancedUndoableOperation
      Overrides:
      computeRedoableStatus in class AbstractWorkspaceOperation
      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:
    • getMarkerDeletionStatus

      protected IStatus getMarkerDeletionStatus()
      Compute the status for deleting any known markers. A status severity of OK indicates that the delete is likely to be successful. A status severity of ERROR indicates 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 of OK indicates that the create is likely to be successful. A status severity of ERROR indicates 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 of OK indicates that the update is likely to be successful. A status severity of ERROR indicates 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: AbstractWorkspaceOperation
      Return 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:
      getExecuteSchedulingRule in class AbstractWorkspaceOperation
      Returns:
      the scheduling rule to use when executing this operation, or null if there are no scheduling restrictions for this operation.
      See Also:
    • getUndoSchedulingRule

      protected ISchedulingRule getUndoSchedulingRule()
      Description copied from class: AbstractWorkspaceOperation
      Return 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:
      getUndoSchedulingRule in class AbstractWorkspaceOperation
      Returns:
      the scheduling rule to use when undoing this operation, or null if there are no scheduling restrictions for this operation.
      See Also:
    • appendDescriptiveText

      protected void appendDescriptiveText(StringBuffer text)
      Description copied from class: AbstractWorkspaceOperation
      Append any descriptive text to the specified string buffer to be shown in the receiver's AbstractWorkspaceOperation.toString() text.

      Note that this method is not intend to be subclassed by clients.

      Overrides:
      appendDescriptiveText in class AbstractWorkspaceOperation
      Parameters:
      text - the StringBuffer on which to append the text