Class ProgressMonitorDialog
- All Implemented Interfaces:
IRunnableContext
,IShellProvider
This concrete dialog class can be instantiated as is, or further subclassed as required.
Typical usage is:
try { IRunnableWithProgress op = ...; new ProgressMonitorDialog(activeShell).run(true, true, op); } catch (InvocationTargetException e) { // handle exception } catch (InterruptedException e) { // handle cancelation }
Note that the ProgressMonitorDialog is not intended to be used with multiple runnables - this dialog should be discarded after completion of one IRunnableWithProgress and a new one instantiated for use by a second or sebsequent IRunnableWithProgress to ensure proper initialization.
Note that not forking the process will result in it running in the UI which may starve the UI. The most obvious symptom of this problem is non responsiveness of the cancel button. If you are running within the UI Thread you should do the bulk of your work in another Thread to prevent starvation. It is recommended that fork is set to true in most cases.
-
Nested Class Summary
Nested classes/interfaces inherited from class org.eclipse.jface.window.Window
Window.IExceptionHandler
-
Field Summary
Modifier and TypeFieldDescriptionprotected Cursor
The cursor used in the cancel button;protected Button
The Cancel button control.protected boolean
Indicates whether the Cancel button is to be enabled.protected boolean
Indicates whether the Cancel button is to be shown.protected ProgressIndicator
The progress indicator control.protected Label
The label control for the subtask.protected Label
The label control for the task.Fields inherited from class org.eclipse.jface.dialogs.IconAndMessageDialog
imageLabel, message, messageLabel
Fields inherited from class org.eclipse.jface.dialogs.Dialog
blockedHandler, buttonBar, DIALOG_DEFAULT_BOUNDS, DIALOG_PERSISTLOCATION, DIALOG_PERSISTSIZE, dialogArea, DLG_IMG_ERROR, DLG_IMG_HELP, DLG_IMG_INFO, DLG_IMG_MESSAGE_ERROR, DLG_IMG_MESSAGE_INFO, DLG_IMG_MESSAGE_WARNING, DLG_IMG_QUESTION, DLG_IMG_WARNING, ELLIPSIS
Fields inherited from class org.eclipse.jface.window.Window
CANCEL, OK, resizeHasOccurred
-
Constructor Summary
ConstructorDescriptionProgressMonitorDialog
(Shell parent) Creates a progress monitor dialog under the given shell. -
Method Summary
Modifier and TypeMethodDescriptionprotected void
Called just before the operation is run.protected void
The cancel button has been pressed.protected void
Clear the cursors in the dialog.boolean
close()
TheProgressMonitorDialog
implementation of this method only closes the dialog if there are no currently running runnables.protected void
configureShell
(Shell shell) Configures the given shell in preparation for opening this window in it.protected void
createButtonsForButtonBar
(Composite parent) Adds buttons to this dialog's button bar.protected void
createCancelButton
(Composite parent) Creates the cancel button.protected Control
createDialogArea
(Composite parent) Creates and returns the contents of the upper part of this dialog (above the button bar).protected void
Decrements the nesting depth of running operations.protected void
Called just after the operation is run.protected Image
getImage()
Returns the image to display beside the message in this dialog.protected Point
Returns the initial size to use for the shell.protected int
Returns the nesting depth of running operations.boolean
Returns whether the dialog should be opened before the operation is run.Returns the progress monitor to use for operations run in this progress dialog.protected void
Increments the nesting depth of running operations.int
open()
Opens this window, creating it first if it has not yet been created.void
run
(boolean fork, boolean cancelable, IRunnableWithProgress runnable) This implementation of IRunnableContext#run(boolean, boolean, IRunnableWithProgress) runs the givenIRunnableWithProgress
using the progress monitor for this progress dialog and blocks until the runnable has been run, regardless of the value offork
.void
setCancelable
(boolean cancelable) Sets whether the progress dialog is cancelable or not.void
setOpenOnRun
(boolean openOnRun) Sets whether the dialog should be opened before the operation is run.protected void
setOperationCancelButtonEnabled
(boolean b) Helper to enable/disable Cancel button for this dialog.protected void
Clear blocked state from the receiver.protected void
updateForSetBlocked
(IStatus reason) Set blocked state from the receiver.Methods inherited from class org.eclipse.jface.dialogs.IconAndMessageDialog
createButtonBar, createContents, createDialogAndButtonArea, createMessageArea, getColumnCount, getErrorImage, getInfoImage, getMessageLabelStyle, getQuestionImage, getWarningImage
Methods inherited from class org.eclipse.jface.dialogs.Dialog
applyDialogFont, buttonPressed, convertHeightInCharsToPixels, convertHeightInCharsToPixels, convertHorizontalDLUsToPixels, convertHorizontalDLUsToPixels, convertVerticalDLUsToPixels, convertVerticalDLUsToPixels, convertWidthInCharsToPixels, convertWidthInCharsToPixels, create, createButton, dialogFontIsDefault, getBlockedHandler, getButton, getButtonBar, getCancelButton, getDialogArea, getDialogBoundsSettings, getDialogBoundsStrategy, getImage, getInitialLocation, getOKButton, initializeBounds, initializeDialogUnits, isResizable, okPressed, setBlockedHandler, setButtonLayoutData, setButtonLayoutFormData, shortenText
Methods inherited from class org.eclipse.jface.window.Window
canHandleShellCloseEvent, constrainShellSize, createShell, getConstrainedShellBounds, getContents, getDefaultImage, getDefaultImages, getDefaultOrientation, getLayout, getParentShell, getReturnCode, getShell, getShellListener, getShellStyle, getWindowManager, handleFontChange, handleShellCloseEvent, setBlockOnOpen, setDefaultImage, setDefaultImages, setDefaultModalParent, setDefaultOrientation, setExceptionHandler, setParentShell, setReturnCode, setShellStyle, setWindowManager
-
Field Details
-
progressIndicator
The progress indicator control. -
taskLabel
The label control for the task. Kept for backwards compatibility. -
subTaskLabel
The label control for the subtask. -
cancel
The Cancel button control. -
operationCancelableState
protected boolean operationCancelableStateIndicates whether the Cancel button is to be shown. -
enableCancelButton
protected boolean enableCancelButtonIndicates whether the Cancel button is to be enabled. -
arrowCursor
The cursor used in the cancel button;
-
-
Constructor Details
-
ProgressMonitorDialog
Creates a progress monitor dialog under the given shell. The dialog has a standard title and no image.open
is non-blocking.- Parameters:
parent
- the parent shell, ornull
to create a top-level shell
-
-
Method Details
-
updateForClearBlocked
protected void updateForClearBlocked()Clear blocked state from the receiver. -
updateForSetBlocked
Set blocked state from the receiver.- Parameters:
reason
- IStatus that gives the details
-
cancelPressed
protected void cancelPressed()The cancel button has been pressed.- Overrides:
cancelPressed
in classDialog
- Since:
- 3.0
-
close
public boolean close()TheProgressMonitorDialog
implementation of this method only closes the dialog if there are no currently running runnables. -
clearCursors
protected void clearCursors()Clear the cursors in the dialog.- Since:
- 3.0
-
configureShell
Description copied from class:Window
Configures the given shell in preparation for opening this window in it.The default implementation of this framework method sets the shell's image and gives it a grid layout. Subclasses may extend or reimplement.
- Overrides:
configureShell
in classWindow
- Parameters:
shell
- the shell
-
createButtonsForButtonBar
Description copied from class:Dialog
Adds buttons to this dialog's button bar.The
Dialog
implementation of this framework method adds standard ok and cancel buttons using thecreateButton
framework method. These standard buttons will be accessible fromgetCancelButton
, andgetOKButton
. Subclasses may override.Note: The common button order is: {other buttons}, OK, Cancel. On some platforms,
Dialog.initializeBounds()
will move the default button to the right.- Overrides:
createButtonsForButtonBar
in classDialog
- Parameters:
parent
- the button bar composite
-
createCancelButton
Creates the cancel button.- Parameters:
parent
- the parent composite- Since:
- 3.0
-
createDialogArea
Description copied from class:Dialog
Creates and returns the contents of the upper part of this dialog (above the button bar).The
Dialog
implementation of this framework method creates and returns a newComposite
with standard margins and spacing.The returned control's layout data must be an instance of
GridData
. This method must not modify the parent's layout.Subclasses must override this method but may call
super
as in the following example:Composite composite = (Composite) super.createDialogArea(parent); //add controls to composite as necessary return composite;
- Overrides:
createDialogArea
in classDialog
- Parameters:
parent
- the parent composite to contain the dialog area- Returns:
- the dialog area control
-
getInitialSize
Description copied from class:Dialog
Returns the initial size to use for the shell. Overridden to check whether a size has been stored in dialog settings. If a size has been stored, it is returned.- Overrides:
getInitialSize
in classDialog
- Returns:
- the initial size of the shell
- See Also:
-
getProgressMonitor
Returns the progress monitor to use for operations run in this progress dialog.- Returns:
- the progress monitor
-
run
public void run(boolean fork, boolean cancelable, IRunnableWithProgress runnable) throws InvocationTargetException, InterruptedException This implementation of IRunnableContext#run(boolean, boolean, IRunnableWithProgress) runs the givenIRunnableWithProgress
using the progress monitor for this progress dialog and blocks until the runnable has been run, regardless of the value offork
. The dialog is opened before the runnable is run, and closed after it completes. It is recommended thatfork
is set to true in most cases. Iffork
is set tofalse
, the runnable will run in the UI thread and it is the runnable's responsibility to callDisplay.readAndDispatch()
to ensure UI responsiveness.- Specified by:
run
in interfaceIRunnableContext
- Parameters:
fork
-true
if the runnable should be run in a separate thread, andfalse
to run in the same threadcancelable
-true
to enable the cancelation, andfalse
to make the operation uncancellablerunnable
- the runnable to run- Throws:
InvocationTargetException
- wraps any exception or error which occurs while running the runnableInterruptedException
- propagated by the context if the runnable acknowledges cancelation by throwing this exception. This should not be thrown if cancelable isfalse
.
-
getOpenOnRun
public boolean getOpenOnRun()Returns whether the dialog should be opened before the operation is run. Defaults totrue
- Returns:
true
to open the dialog before run,false
to only create the dialog, but not open it- Since:
- 3.0
-
setOpenOnRun
public void setOpenOnRun(boolean openOnRun) Sets whether the dialog should be opened before the operation is run. NOTE: Setting this to false and not forking a process may starve any asyncExec that tries to open the dialog later.- Parameters:
openOnRun
-true
to open the dialog before run,false
to only create the dialog, but not open it- Since:
- 3.0
-
getNestingDepth
protected int getNestingDepth()Returns the nesting depth of running operations.- Returns:
- the nesting depth of running operations
- Since:
- 3.0
-
incrementNestingDepth
protected void incrementNestingDepth()Increments the nesting depth of running operations.- Since:
- 3.0
-
decrementNestingDepth
protected void decrementNestingDepth()Decrements the nesting depth of running operations.- Since:
- 3.0
-
aboutToRun
protected void aboutToRun()Called just before the operation is run. Default behaviour is to open or create the dialog, based on the setting ofgetOpenOnRun
, and increment the nesting depth.- Since:
- 3.0
-
finishedRun
protected void finishedRun()Called just after the operation is run. Default behaviour is to decrement the nesting depth, and close the dialog.- Since:
- 3.0
-
setCancelable
public void setCancelable(boolean cancelable) Sets whether the progress dialog is cancelable or not.- Parameters:
cancelable
-true
if the end user can cancel this progress dialog, andfalse
if it cannot be canceled
-
setOperationCancelButtonEnabled
protected void setOperationCancelButtonEnabled(boolean b) Helper to enable/disable Cancel button for this dialog.- Parameters:
b
-true
to enable the cancel button, andfalse
to disable it- Since:
- 3.0
-
getImage
Description copied from class:IconAndMessageDialog
Returns the image to display beside the message in this dialog.Subclasses may override.
- Specified by:
getImage
in classIconAndMessageDialog
- Returns:
- the image to display beside the message
-
open
public int open()Description copied from class:Window
Opens this window, creating it first if it has not yet been created.If this window has been configured to block on open (
setBlockOnOpen
), this method waits until the window is closed by the end user, and then it returns the window's return code; otherwise, this method returns immediately. A window's return codes are window-specific, although two standard return codes are predefined:OK
andCANCEL
.
-