Long-running operations
The
org.eclipse.jface.operations
package defines interfaces for
long-running operations that require progress indicators or allow user
cancellation of the operation. These interfaces are used in the implementation
of the workbench progress dialogs and views.
In general, plug-ins should use the workbench support provided in
IProgressService
for running long operations, so that all plug-ins will have a consistent presentation
of progress. See
Workbench Concurrency Support for
a complete discussion of the available support for progress dialogs and views. The remainder
of this discussion highlights the details of the JFace operations infrastructure which is
used by the workbench.
Runnables and progress
The platform runtime defines a common interface,
IProgressMonitor
,
which is used to report progress to the user while long running
operations are in progress. The client can provide a monitor as a
parameter in many platform API methods when it is important to show
progress to the user.
JFace defines more specific interfaces for objects that implement
the user interface for a progress monitor.
IRunnableWithProgress
is the interface for a long-running
operation. The run
method for this interface has an
IProgressMonitor
parameter that is used to report progress and check for user
cancelation.
IRunnableContext
is the interface for the different places in the UI where progress can
be
reported. Classes that implement this interface may choose to use
different techniques for showing progress and running the
operation.
For example,
ProgressMonitorDialog
implements this interface by showing a progress dialog.
IWorkbenchWindow
implements this interface by showing progress in the workbench window's
status
line.
WizardDialog
implements this interface to show long running operations inside the wizard status line.
Note: The workbench UI provides additional support for operations in
WorkspaceModifyOperation
.
This class simplifies the implementation of long-running operations that modify the workspace. It maps between
IRunnableWithProgress
and
IWorkspaceRunnable.
See the javadoc for further detail.
Modal operations
The
ModalContext
class is provided to run an operation that is
modal from the client code's perspective.
It is used inside the different implementations of
IRunnableContext
.
If your plug-in needs to wait on the completion of a long-running
operation before continuing
execution,
ModalContext
can be used to accomplish this while still keeping the user interface
responsive.
When you run an operation in a modal context, you can choose to fork
the operation in a different thread. If
fork is false, the operation will be run in the
calling thread. If fork is true, the
operation will be run in a new thread, the calling thread will be
blocked, and
the UI event loop will be run until the operation
terminates.
For more information on the UI event loop, see Threading issues for clients.