Class ErrorDialog

All Implemented Interfaces:
IShellProvider

public class ErrorDialog extends IconAndMessageDialog
A dialog to display one or more errors to the user, as contained in an IStatus object. If an error contains additional detailed information then a Details button is automatically supplied, which shows or hides an error details viewer when pressed by the user.

This dialog should be considered being a "local" way of error handling. It cannot be changed or replaced by "global" error handling facility ( org.eclipse.ui.statushandler.StatusManager). If product defines its own way of handling errors, this error dialog may cause UI inconsistency, so until it is absolutely necessary, StatusManager should be used.

See Also:
  • Field Details

    • AUTOMATED_MODE

      public static boolean AUTOMATED_MODE
      Static to prevent opening of error dialogs for automated testing.
  • Constructor Details

    • ErrorDialog

      public ErrorDialog(Shell parentShell, String dialogTitle, String message, IStatus status, int displayMask)
      Creates an error dialog. Note that the dialog will have no visual representation (no widgets) until it is told to open.

      Normally one should use openError to create and open one of these. This constructor is useful only if the error object being displayed contains child items and you need to specify a mask which will be used to filter the displaying of these children. The error dialog will only be displayed if there is at least one child status matching the mask.

      Parameters:
      parentShell - the shell under which to create this dialog
      dialogTitle - the title to use for this dialog, or null to indicate that the default title should be used
      message - the message to show in this dialog, or null to indicate that the error's message should be shown as the primary message
      status - the error to show to the user
      displayMask - the mask to use to filter the displaying of child items, as per IStatus.matches
      See Also:
  • Method Details

    • buttonPressed

      protected void buttonPressed(int id)
      Description copied from class: Dialog
      Notifies that this dialog's button with the given id has been pressed.

      The Dialog implementation of this framework method calls okPressed if the ok button is the pressed, and cancelPressed if the cancel button is the pressed. All other button presses are ignored. Subclasses may override to handle other buttons, but should call super.buttonPressed if the default handling of the ok and cancel buttons is desired.

      Overrides:
      buttonPressed in class Dialog
      Parameters:
      id - the id of the button that was pressed (see IDialogConstants.*_ID constants)
    • configureShell

      protected void configureShell(Shell shell)
      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 class Window
      Parameters:
      shell - the shell
    • createButtonsForButtonBar

      protected void createButtonsForButtonBar(Composite parent)
      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 the createButton framework method. These standard buttons will be accessible from getCancelButton, and getOKButton. 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 class Dialog
      Parameters:
      parent - the button bar composite
    • createDetailsButton

      protected void createDetailsButton(Composite parent)
      Create the details button if it should be included.
      Parameters:
      parent - the parent composite
      Since:
      3.2
    • createDialogArea

      protected Control createDialogArea(Composite parent)
      This implementation of the Dialog framework method creates and lays out a composite. Subclasses that require a different dialog area may either override this method, or call the super implementation and add controls to the created composite. Note: Since 3.4, the created composite no longer grabs excess vertical space. See https://bugs.eclipse.org/bugs/show_bug.cgi?id=72489. If the old behavior is desired by subclasses, get the returned composite's layout data and set grabExcessVerticalSpace to true.
      Overrides:
      createDialogArea in class Dialog
      Parameters:
      parent - the parent composite to contain the dialog area
      Returns:
      the dialog area control
    • createDialogAndButtonArea

      protected void createDialogAndButtonArea(Composite parent)
      Description copied from class: IconAndMessageDialog
      Create the dialog area and the button bar for the receiver.
      Overrides:
      createDialogAndButtonArea in class IconAndMessageDialog
      Parameters:
      parent - the parent composite
    • getImage

      protected Image getImage()
      Description copied from class: IconAndMessageDialog
      Returns the image to display beside the message in this dialog.

      Subclasses may override.

      Specified by:
      getImage in class IconAndMessageDialog
      Returns:
      the image to display beside the message
    • createDropDownList

      protected List createDropDownList(Composite parent)
      Create this dialog's drop-down list component. The list is displayed after the user presses details button. It is developer responsibility to display details button if and only if there is some content on drop down list. The visibility of the details button is controlled by shouldShowDetailsButton(), which should also be overridden together with this method.
      Parameters:
      parent - the parent composite
      Returns:
      the drop-down list component
      See Also:
    • open

      public int open()
      Extends Window.open(). Opens an error dialog to display the error. If you specified a mask to filter the displaying of these children, the error dialog will only be displayed if there is at least one child status matching the mask.
      Overrides:
      open in class Window
      Returns:
      the return code
      See Also:
    • openError

      public static int openError(Shell parent, String dialogTitle, String message, IStatus status)
      Opens an error dialog to display the given error. Use this method if the error object being displayed does not contain child items, or if you wish to display all such items without filtering.
      Parameters:
      parent - the parent shell of the dialog, or null if none
      dialogTitle - the title to use for this dialog, or null to indicate that the default title should be used
      message - the message to show in this dialog, or null to indicate that the error's message should be shown as the primary message
      status - the error to show to the user
      Returns:
      the code of the button that was pressed that resulted in this dialog closing. This will be Dialog.OK if the OK button was pressed, or Dialog.CANCEL if this dialog's close window decoration or the ESC key was used.
    • openError

      public static int openError(Shell parentShell, String title, String message, IStatus status, int displayMask)
      Opens an error dialog to display the given error. Use this method if the error object being displayed contains child items and you wish to specify a mask which will be used to filter the displaying of these children. The error dialog will only be displayed if there is at least one child status matching the mask.
      Parameters:
      parentShell - the parent shell of the dialog, or null if none
      title - the title to use for this dialog, or null to indicate that the default title should be used
      message - the message to show in this dialog, or null to indicate that the error's message should be shown as the primary message
      status - the error to show to the user
      displayMask - the mask to use to filter the displaying of child items, as per IStatus.matches
      Returns:
      the code of the button that was pressed that resulted in this dialog closing. This will be Dialog.OK if the OK button was pressed, or Dialog.CANCEL if this dialog's close window decoration or the ESC key was used.
      See Also:
    • shouldDisplay

      protected static boolean shouldDisplay(IStatus status, int mask)
      Returns whether the given status object should be displayed.
      Parameters:
      status - a status object
      mask - a mask as per IStatus.matches
      Returns:
      true if the given status should be displayed, and false otherwise
      See Also:
    • close

      public boolean close()
      Description copied from class: Window
      Closes this window, disposes its shell, and removes this window from its window manager (if it has one).

      This framework method may be extended (super.close must be called).

      Note that in order to prevent recursive calls to this method it does not call Shell#close(). As a result ShellListeners will not receive a shellClosed event.

      Overrides:
      close in class Dialog
      Returns:
      true if the window is (or was already) closed, and false if it is still open
      See Also:
    • showDetailsArea

      protected final void showDetailsArea()
      Show the details portion of the dialog if it is not already visible. This method will only work when it is invoked after the control of the dialog has been set. In other words, after the createContents method has been invoked and has returned the control for the content area of the dialog. Invoking the method before the content area has been set or after the dialog has been disposed will have no effect.
      Since:
      3.1
    • shouldShowDetailsButton

      protected boolean shouldShowDetailsButton()
      Return whether the Details button should be included. This method is invoked once when the dialog is built. Default implementation is tight to default implementation of createDropDownList(Composite) and displays details button if there is anything on the display list.
      Returns:
      whether the Details button should be included
      Since:
      3.1
      See Also:
    • setStatus

      protected final void setStatus(IStatus status)
      Set the status displayed by this error dialog to the given status. This only affects the status displayed by the Details list. The message, image and title should be updated by the subclass, if desired.
      Parameters:
      status - the status to be displayed in the details list
      Since:
      3.1
    • getColumnCount

      protected int getColumnCount()
      Description copied from class: IconAndMessageDialog
      Get the number of columns in the layout of the Shell of the dialog.
      Overrides:
      getColumnCount in class IconAndMessageDialog
      Returns:
      int
      Since:
      3.22
    • isResizable

      protected boolean isResizable()
      Description copied from class: Dialog
      Returns a boolean indicating whether the dialog should be considered resizable when the shell style is initially set.

      This method is used to ensure that all style bits appropriate for resizable dialogs are added to the shell style. Individual dialogs may always set the shell style to ensure that a dialog is resizable, but using this method ensures that resizable dialogs will be created with the same set of style bits.

      Style bits will never be removed based on the return value of this method. For example, if a dialog returns false, but also sets a style bit for a SWT.RESIZE border, the style bit will be honored.

      Overrides:
      isResizable in class Dialog
      Returns:
      a boolean indicating whether the dialog is resizable and should have the default style bits for resizable dialogs