public class ModalContext extends Object
runmethod is executed in a separate thread, depending on the value of the passed fork argument. If the runnable is executed in a separate thread then the current thread either waits until the new thread ends or, if the current thread is the UI thread, it polls the SWT event queue and dispatches each event.
This class is not intended to be subclassed.
|Constructor and Description|
|Modifier and Type||Method and Description|
Returns whether the first progress monitor is the same as, or a wrapper around, the second progress monitor.
Checks with the given progress monitor and throws
Returns the modal nesting level.
Returns whether the given thread is running a modal context.
Runs the given runnable in a modal context, passing it a progress monitor.
Sets whether ModalContext may process events (by calling
Sets whether ModalContext is running in debug mode.
public static boolean canProgressMonitorBeUsed(IProgressMonitor monitor1, IProgressMonitor monitor2)
monitor1- the first progress monitor
monitor2- the second progress monitor
trueif the first is the same as, or a wrapper around, the second
public static void checkCanceled(IProgressMonitor monitor) throws InterruptedException
InterruptedExceptionif it has been canceled.
Code in a long-running operation should call this method regularly so that a request to cancel will be honored.
if (monitor.isCanceled()) throw new InterruptedException();
public static int getModalLevel()
The modal nesting level increases by one each time the
ModalContext.run method is called within the dynamic scope
of another call to
0if this method is called outside the dynamic scope of any invocation of
public static boolean isModalContextThread(Thread thread)
thread- The thread to be checked
trueif the given thread is running a modal context,
public static void run(IRunnableWithProgress operation, boolean fork, IProgressMonitor monitor, Display display) throws InvocationTargetException, InterruptedException
The modal nesting level is increased by one from the perspective of the given runnable.
If the supplied operation implements
will be notified of any thread changes required to execute the operation.
Specifically, the operation will be notified of the thread that will call
run method before it is called, and will be notified of
the change of control back to the thread calling this method when the
operation completes. These thread change notifications give the operation
an opportunity to transfer any thread-local state to the execution thread
before control is transferred to the new thread.
operation- the runnable to run
trueif the runnable should run in a separate thread, and
falseif in the same thread
monitor- the progress monitor to use to display progress and receive requests for cancellation
display- the display to be used to read and dispatch events
InvocationTargetException- if the run method must propagate a checked exception, it should wrap it inside an
InvocationTargetException; runtime exceptions and errors are automatically wrapped in an
InvocationTargetExceptionby this method
InterruptedException- if the operation detects a request to cancel, using
IProgressMonitor.isCanceled(), it should exit by throwing
InterruptedException; this method propagates the exception
public static void setDebugMode(boolean debugMode)
truefor debug mode, and
falsefor normal mode (the default)
public static void setAllowReadAndDispatch(boolean allowReadAndDispatch)
Display.readAndDispatch()) while running operations. By default, ModalContext will process events while running operations. Use this method to disallow event processing temporarily.
true(the default) if events may be processed while running an operation,
falseif Display.readAndDispatch() should not be called from ModalContext.
Copyright (c) 2000, 2017 Eclipse Contributors and others. All rights reserved.Guidelines for using Eclipse APIs.