Package org.eclipse.mat.util

# Interface IProgressListener

All Known Implementing Classes:
  `ConsoleProgressListener`, `ProgressMonitorWrapper`, `SilentProgressListener`, `SimpleMonitor.Listener`, `VoidProgressListener`

public interface IProgressListener
This interface is closely modeled after { link org.eclipse.core.runtime.IProgressMonitor}. The latter has not been used to avoid a dependency. It is implemented by objects that monitor the progress of an activity; the methods in this interface are invoked by code that performs the activity.

All activity is broken down into a linear sequence of tasks against which progress is reported. When a task begins, a `beginTask(String, int)` notification is reported, followed by any number and mixture of progress reports (`worked()` ) and subtask notifications (`subTask(String)`). When the task is eventually completed, a `done()` notification is reported. After the `done()` notification, the progress monitor cannot be reused; i.e., `beginTask(String, int)` cannot be called again after the call to `done()`.

A request to cancel an operation can be signaled using the `setCanceled` method. Operations taking a progress monitor are expected to poll the monitor (using `isCanceled`) periodically and abort at their earliest convenience. Operation can however choose to ignore cancellation requests.

Since notification is synchronous with the activity itself, the listener should provide a fast and robust implementation. If the handling of notifications would involve blocking operations, or operations which might throw uncaught exceptions, the notifications should be queued, and the actual processing deferred (or perhaps delegated to a separate thread).

## Nested Class Summary

Nested Classes
Modifier and Type
Interface
Description
`static class`
`IProgressListener.OperationCanceledException`
Helper exception class which can be used to exit an operation via an exception if the operation itself has been canceled.
`static enum`
`IProgressListener.Severity`
Defines the severities possible for a user message.

## Field Summary

Fields
Modifier and Type
Field
Description
`static final int`
`UNKNOWN_TOTAL_WORK`
Constant which may be used to indicate that the total amount of work units is not known.

## Method Summary

Modifier and Type
Method
Description
`void`
`beginTask(String name, int totalWork)`
Notifies that the main task is beginning.
`void`
`done()`
Notifies that the work is done; that is, either the main task is completed or the user canceled it.
`boolean`
`isCanceled()`
Returns whether cancelation of current operation has been requested.
`void`
`sendUserMessage(IProgressListener.Severity severity, String message, Throwable exception)`
Sends a message to the user.
`void`
`setCanceled(boolean value)`
Sets the cancel state to the given value.
`void`
`subTask(String name)`
Notifies that a subtask of the main task is beginning.
`void`
`worked(int work)`
Notifies that a given number of work unit of the main task has been completed.

## Field Details

### UNKNOWN_TOTAL_WORK

static final int UNKNOWN_TOTAL_WORK
Constant which may be used to indicate that the total amount of work units is not known.

See Also:
  - Constant Field Values

## Method Details

### beginTask

void beginTask(String name, int totalWork)
Notifies that the main task is beginning. This must only be called once on a given progress monitor instance.

Parameters:
  `name` - the name (or description) of the main task
  `totalWork` - the total number of work units into which the main task is been subdivided. If the value is `UNKNOWN` the implementation is free to indicate progress in a way which doesn't require the total number of work units in advance.

### done

void done()
Notifies that the work is done; that is, either the main task is completed or the user canceled it. This method may be called more than once (implementations should be prepared to handle this case).

### isCanceled

boolean isCanceled()
Returns whether cancelation of current operation has been requested. Long-running operations should poll to see if cancelation has been requested.

Returns:
  `true` if cancellation has been requested, and `false` otherwise
See Also:
  - `setCanceled(boolean)`

### setCanceled

void setCanceled(boolean value)
Sets the cancel state to the given value.

Parameters:
  `value` - `true` indicates that cancelation has been requested (but not necessarily acknowledged); `false` clears this flag
See Also:
  - `isCanceled()`

### subTask

void subTask(String name)
Notifies that a subtask of the main task is beginning. Subtasks are optional; the main task might not have subtasks.

Parameters:
  `name` - the name (or description) of the subtask

### worked

void worked(int work)
Notifies that a given number of work unit of the main task has been completed. Note that this amount represents an installment, as opposed to a cumulative amount of work done to date.

Parameters:
  `work` - the number of work units just completed

### sendUserMessage

void sendUserMessage(IProgressListener.Severity severity, String message, Throwable exception)
Sends a message to the user.

Parameters:
  `severity` - Severity as defined in `IProgressListener.Severity`
  `message` - The message localized to the current locale.
  `exception` - The relevant low-level exception, or `null` if none.