org.eclipse.emf.mwe.core.monitor
Interface ProgressMonitor

All Known Subinterfaces:
ProgressMonitor2
All Known Implementing Classes:
DebugMonitor, NullProgressMonitor, ProgressMonitorAdapter

public interface ProgressMonitor

The IProgressMonitor interface 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 cancelation 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).

Clients may implement this interface.


Field Summary
static int UNKNOWN
          Constant indicating an unknown amount of work.
 
Method Summary
 void beginTask(java.lang.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.
 void finished(java.lang.Object element, java.lang.Object context)
          Notifies that overall process was finished.
 void internalWorked(double work)
          Internal method to handle scaling correctly.
 boolean isCanceled()
          Returns whether cancelation of current operation has been requested.
 void postTask(java.lang.Object element, java.lang.Object context)
          Notifies that a task was finished.
 void preTask(java.lang.Object element, java.lang.Object context)
          Notifies that a task will be started.
 void setCanceled(boolean value)
          Sets the cancel state to the given value.
 void setTaskName(java.lang.String name)
          Sets the task name to the given value.
 void started(java.lang.Object element, java.lang.Object context)
          Notifies that overall process was started.
 void subTask(java.lang.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 Detail

UNKNOWN

static final int UNKNOWN
Constant indicating an unknown amount of work.

See Also:
Constant Field Values
Method Detail

beginTask

void beginTask(java.lang.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 implemenation 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).


internalWorked

void internalWorked(double work)
Internal method to handle scaling correctly. This method must not be called by a client. Clients should always use the method worked(int).

Parameters:
work - the amount of work done

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()

setTaskName

void setTaskName(java.lang.String name)
Sets the task name to the given value. This method is used to restore the task label after a nested operation was executed. Normally there is no need for clients to call this method.

Parameters:
name - the name (or description) of the main task
See Also:
beginTask(java.lang.String, int)

subTask

void subTask(java.lang.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

preTask

void preTask(java.lang.Object element,
             java.lang.Object context)
Notifies that a task will be started. Must be paired together with one postTask() call.

Parameters:
element - The element that fired that notification
context - the context of execution

postTask

void postTask(java.lang.Object element,
              java.lang.Object context)
Notifies that a task was finished. Must be paired together with one preTask() call.

Parameters:
element - The element that fired that notification
context - the context of execution

started

void started(java.lang.Object element,
             java.lang.Object context)
Notifies that overall process was started.

Parameters:
element - The element that fired that notification
context - the context of execution

finished

void finished(java.lang.Object element,
              java.lang.Object context)
Notifies that overall process was finished.

Parameters:
element - The element that fired that notification
context - the context of execution