Package ghidra.util.task

# Class WrappingTaskMonitor

java.lang.Object
ghidra.util.task.WrappingTaskMonitor

All Implemented Interfaces:
  `TaskMonitor`

Direct Known Subclasses:
  `CancelOnlyWrappingTaskMonitor`, `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 Summary

  Fields
  Modifier and Type
  Field
  Description
  `protected TaskMonitor`
  `delegate`

  ### Fields inherited from interface ghidra.util.task.TaskMonitor

  `DUMMY, NO_PROGRESS_VALUE`

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `WrappingTaskMonitor(TaskMonitor delegate)`
  Constructor

- ## Method Summary

  Modifier and Type
  Method
  Description
  `void`
  `addCancelledListener(CancelledListener listener)`
  Add cancelled listener
  `void`
  `cancel()`
  Cancel the task
  `void`
  `checkCanceled()`
  Deprecated.
  `void`
  `checkCancelled()`
  Check to see if this monitor has been cancelled
  `void`
  `clearCanceled()`
  Clear the cancellation so that this TaskMonitor may be reused
  `long`
  `getMaximum()`
  Returns the current maximum value for progress
  `String`
  `getMessage()`
  Gets the last set message of this monitor
  `long`
  `getProgress()`
  Returns the current progress value or `TaskMonitor.NO_PROGRESS_VALUE` if there is no value set
  `void`
  `incrementProgress(long incrementAmount)`
  Changes the progress value by the specified amount.
  `void`
  `initialize(long max)`
  Initialized this TaskMonitor to the given max values.
  `boolean`
  `isCancelEnabled()`
  Returns true if cancel ability is enabled
  `boolean`
  `isCancelled()`
  Returns true if the user has cancelled the operation
  `boolean`
  `isIndeterminate()`
  Returns true if this monitor shows no progress
  `void`
  `removeCancelledListener(CancelledListener listener)`
  Remove cancelled listener
  `void`
  `setCancelEnabled(boolean enable)`
  Set the enablement of the Cancel button
  `void`
  `setDelegate(TaskMonitor newDelegate)`
  Sets the delegate of this wrapper to be the new value.
  `void`
  `setIndeterminate(boolean indeterminate)`
  An indeterminate task monitor may choose to show an animation instead of updating progress
  `void`
  `setMaximum(long max)`
  Set the progress maximum value
  `void`
  `setMessage(String message)`
  Sets the message displayed on the task monitor
  `void`
  `setProgress(long value)`
  Sets the current progress value
  `void`
  `setShowProgressValue(boolean showProgressValue)`
  True (the default) signals to paint the progress information inside of the progress bar

  ### Methods inherited from class java.lang.Object

  `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

  ### Methods inherited from interface ghidra.util.task.TaskMonitor

  `clearCancelled, increment, increment, incrementProgress, initialize`

- ## Field Details

  - ### delegate

    protected TaskMonitor delegate

- ## 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`