The ProgressMonitor interface is implemented by objects that monitor the progress
of an activity; the methods in this interface are invoked by code that performs
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.
Based on org.eclipse.core.runtime.IProgressMonitor.