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
FieldsModifier and TypeFieldDescriptionprotected CursorThe cursor used in the cancel button;protected ButtonThe Cancel button control.protected booleanIndicates whether the Cancel button is to be enabled.protected booleanIndicates whether the Cancel button is to be shown.protected ProgressIndicatorThe progress indicator control.protected LabelThe label control for the subtask.protected LabelThe label control for the task.Fields inherited from class org.eclipse.jface.dialogs.IconAndMessageDialog
imageLabel, message, messageLabelFields 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, ELLIPSISFields inherited from class org.eclipse.jface.window.Window
CANCEL, OK, resizeHasOccurred -
Constructor Summary
ConstructorsConstructorDescriptionProgressMonitorDialog(Shell parent) Creates a progress monitor dialog under the given shell. -
Method Summary
Modifier and TypeMethodDescriptionprotected voidCalled just before the operation is run.protected voidThe cancel button has been pressed.protected voidClear the cursors in the dialog.booleanclose()TheProgressMonitorDialogimplementation of this method only closes the dialog if there are no currently running runnables.protected voidconfigureShell(Shell shell) Configures the given shell in preparation for opening this window in it.protected voidcreateButtonsForButtonBar(Composite parent) Adds buttons to this dialog's button bar.protected voidcreateCancelButton(Composite parent) Creates the cancel button.protected ControlcreateDialogArea(Composite parent) Creates and returns the contents of the upper part of this dialog (above the button bar).protected voidDecrements the nesting depth of running operations.protected voidCalled just after the operation is run.protected ImagegetImage()Returns the image to display beside the message in this dialog.protected PointReturns the initial size to use for the shell.protected intReturns the nesting depth of running operations.booleanReturns 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 voidIncrements the nesting depth of running operations.intopen()Opens this window, creating it first if it has not yet been created.voidrun(boolean fork, boolean cancelable, IRunnableWithProgress runnable) This implementation of IRunnableContext#run(boolean, boolean, IRunnableWithProgress) runs the givenIRunnableWithProgressusing the progress monitor for this progress dialog and blocks until the runnable has been run, regardless of the value offork.voidsetCancelable(boolean cancelable) Sets whether the progress dialog is cancelable or not.voidsetOpenOnRun(boolean openOnRun) Sets whether the dialog should be opened before the operation is run.protected voidsetOperationCancelButtonEnabled(boolean b) Helper to enable/disable Cancel button for this dialog.protected voidClear blocked state from the receiver.protected voidupdateForSetBlocked(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, getWarningImageMethods 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, shortenTextMethods 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.openis non-blocking.- Parameters:
parent- the parent shell, ornullto 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:
cancelPressedin classDialog- Since:
- 3.0
-
close
public boolean close()TheProgressMonitorDialogimplementation 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:WindowConfigures 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:
configureShellin classWindow- Parameters:
shell- the shell
-
createButtonsForButtonBar
Description copied from class:DialogAdds buttons to this dialog's button bar.The
Dialogimplementation of this framework method adds standard ok and cancel buttons using thecreateButtonframework 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:
createButtonsForButtonBarin 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:DialogCreates and returns the contents of the upper part of this dialog (above the button bar).The
Dialogimplementation of this framework method creates and returns a newCompositewith 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
superas in the following example:Composite composite = (Composite) super.createDialogArea(parent); //add controls to composite as necessary return composite;
- Overrides:
createDialogAreain classDialog- Parameters:
parent- the parent composite to contain the dialog area- Returns:
- the dialog area control
-
getInitialSize
Description copied from class:DialogReturns 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:
getInitialSizein 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 givenIRunnableWithProgressusing 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 thatforkis set to true in most cases. Ifforkis 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:
runin interfaceIRunnableContext- Parameters:
fork-trueif the runnable should be run in a separate thread, andfalseto run in the same threadcancelable-trueto enable the cancelation, andfalseto 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:
trueto open the dialog before run,falseto 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-trueto open the dialog before run,falseto 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-trueif the end user can cancel this progress dialog, andfalseif it cannot be canceled
-
setOperationCancelButtonEnabled
protected void setOperationCancelButtonEnabled(boolean b) Helper to enable/disable Cancel button for this dialog.- Parameters:
b-trueto enable the cancel button, andfalseto disable it- Since:
- 3.0
-
getImage
Description copied from class:IconAndMessageDialogReturns the image to display beside the message in this dialog.Subclasses may override.
- Specified by:
getImagein classIconAndMessageDialog- Returns:
- the image to display beside the message
-
open
public int open()Description copied from class:WindowOpens 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:OKandCANCEL.
-