Class WrappingTaskMonitor

java.lang.Object
ghidra.util.task.WrappingTaskMonitor
All Implemented Interfaces:
TaskMonitor
Direct Known Subclasses:
CancelOnlyWrappingTaskMonitor, PreserveStateWrappingTaskMonitor, UnknownProgressWrappingTaskMonitor

public class WrappingTaskMonitor extends Object implements TaskMonitor
An implementation of the TaskMonitor interface that simply wraps a delegate task monitor. This is useful for classes that wish to wrap a task monitor, changing behavior as needed by overriding a subset of methods.

Synchronization Policy:
We wish for this class to be performant. Thus, we do not synchronize the methods of this class. The setDelegate(TaskMonitor) is synchronized to ensure thread visibility for the state of the delegate monitor.

When calling setDelegate(TaskMonitor) there is the potential for the values being transferred to become inconsistent with any new values being set. We have decided that this does not much matter for the overall progress or the messages on the monitor. However, most of the other setter methods could lead to bad behavior if they are inconsistent.

  • Field Details

  • Constructor Details

    • WrappingTaskMonitor

      public WrappingTaskMonitor(TaskMonitor delegate)
      Constructor
      Parameters:
      delegate - the delegate task monitor
  • Method Details

    • setDelegate

      public void setDelegate(TaskMonitor newDelegate)
      Sets the delegate of this wrapper to be the new value. The new delegate will be initialized with the current values of the existing delegate.
      Parameters:
      newDelegate - the new delegate
    • isCancelled

      public boolean isCancelled()
      Description copied from interface: TaskMonitor
      Returns true if the user has cancelled the operation
      Specified by:
      isCancelled in interface TaskMonitor
      Returns:
      true if the user has cancelled the operation
    • setShowProgressValue

      public void setShowProgressValue(boolean showProgressValue)
      Description copied from interface: TaskMonitor
      True (the default) signals to paint the progress information inside of the progress bar
      Specified by:
      setShowProgressValue in interface TaskMonitor
      Parameters:
      showProgressValue - true to paint the progress value; false to not
    • setMessage

      public void setMessage(String message)
      Description copied from interface: TaskMonitor
      Sets the message displayed on the task monitor
      Specified by:
      setMessage in interface TaskMonitor
      Parameters:
      message - the message to display
    • getMessage

      public String getMessage()
      Description copied from interface: TaskMonitor
      Gets the last set message of this monitor
      Specified by:
      getMessage in interface TaskMonitor
      Returns:
      the message
    • setProgress

      public void setProgress(long value)
      Description copied from interface: TaskMonitor
      Sets the current progress value
      Specified by:
      setProgress in interface TaskMonitor
      Parameters:
      value - progress value
    • initialize

      public void initialize(long max)
      Description copied from interface: TaskMonitor
      Initialized this TaskMonitor to the given max values. The current value of this monitor will be set to zero.
      Specified by:
      initialize in interface TaskMonitor
      Parameters:
      max - maximum value for progress
    • setMaximum

      public void setMaximum(long max)
      Description copied from interface: TaskMonitor
      Set the progress maximum value

      Note: setting this value will reset the progress to be the max if the progress is currently greater than the new new max value.

      Specified by:
      setMaximum in interface TaskMonitor
      Parameters:
      max - maximum value for progress
    • getMaximum

      public long getMaximum()
      Description copied from interface: TaskMonitor
      Returns the current maximum value for progress
      Specified by:
      getMaximum in interface TaskMonitor
      Returns:
      the maximum progress value
    • setIndeterminate

      public void setIndeterminate(boolean indeterminate)
      Description copied from interface: TaskMonitor
      An indeterminate task monitor may choose to show an animation instead of updating progress
      Specified by:
      setIndeterminate in interface TaskMonitor
      Parameters:
      indeterminate - true if indeterminate
    • isIndeterminate

      public boolean isIndeterminate()
      Description copied from interface: TaskMonitor
      Returns true if this monitor shows no progress
      Specified by:
      isIndeterminate in interface TaskMonitor
      Returns:
      true if this monitor shows no progress
    • checkCanceled

      @Deprecated(since="10.3") public void checkCanceled() throws CancelledException
      Deprecated.
      Description copied from interface: TaskMonitor
      Check to see if this monitor has been cancelled
      Specified by:
      checkCanceled in interface TaskMonitor
      Throws:
      CancelledException - if monitor has been cancelled
    • checkCancelled

      public void checkCancelled() throws CancelledException
      Description copied from interface: TaskMonitor
      Check to see if this monitor has been cancelled
      Specified by:
      checkCancelled in interface TaskMonitor
      Throws:
      CancelledException - if monitor has been cancelled
    • incrementProgress

      public void incrementProgress(long incrementAmount)
      Description copied from interface: TaskMonitor
      Changes the progress value by the specified amount.
      Specified by:
      incrementProgress in interface TaskMonitor
      Parameters:
      incrementAmount - The amount by which to increment the progress
    • getProgress

      public long getProgress()
      Description copied from interface: TaskMonitor
      Returns the current progress value or TaskMonitor.NO_PROGRESS_VALUE if there is no value set
      Specified by:
      getProgress in interface TaskMonitor
      Returns:
      the current progress value or TaskMonitor.NO_PROGRESS_VALUE if there is no value set
    • cancel

      public void cancel()
      Description copied from interface: TaskMonitor
      Cancel the task
      Specified by:
      cancel in interface TaskMonitor
    • addCancelledListener

      public void addCancelledListener(CancelledListener listener)
      Description copied from interface: TaskMonitor
      Add cancelled listener
      Specified by:
      addCancelledListener in interface TaskMonitor
      Parameters:
      listener - the cancel listener
    • removeCancelledListener

      public void removeCancelledListener(CancelledListener listener)
      Description copied from interface: TaskMonitor
      Remove cancelled listener
      Specified by:
      removeCancelledListener in interface TaskMonitor
      Parameters:
      listener - the cancel listener
    • setCancelEnabled

      public void setCancelEnabled(boolean enable)
      Description copied from interface: TaskMonitor
      Set the enablement of the Cancel button
      Specified by:
      setCancelEnabled in interface TaskMonitor
      Parameters:
      enable - true means to enable the cancel button
    • isCancelEnabled

      public boolean isCancelEnabled()
      Description copied from interface: TaskMonitor
      Returns true if cancel ability is enabled
      Specified by:
      isCancelEnabled in interface TaskMonitor
      Returns:
      true if cancel ability is enabled
    • clearCanceled

      public void clearCanceled()
      Description copied from interface: TaskMonitor
      Clear the cancellation so that this TaskMonitor may be reused
      Specified by:
      clearCanceled in interface TaskMonitor