JMessage
Date: 2014-06-07

gr.zeus.ui

## Class JMessage

- java.lang.Object
- - java.awt.Component
  - - java.awt.Container
    - - java.awt.Window
      - - java.awt.Dialog
        - - javax.swing.JDialog
          - - gr.zeus.ui.JMessage

- All Implemented Interfaces:
    java.awt.image.ImageObserver, java.awt.MenuContainer, java.io.Serializable, javax.accessibility.Accessible, javax.swing.RootPaneContainer, javax.swing.WindowConstants

      public final class JMessage
      extends javax.swing.JDialog

  This component is similar to `javax.swing.JOptionPane` component. It can be used to display message and error dialogs. The main features of `JMessage` are:
  - Displays simple messages and the stacktrace of an exception
  - Supports html text for messages with build-in plain text conversion
  - The dialogs are modal. In addition they stay on top of other windows at all times
  - Supports for `JOptionPane` OK,CANCEL,YES,NO buttons
  - Selects a default button in the dialog
  - Supports all `JOptionPane` messageType(s) & optionType(s)
  - Uses UI default icons or user supplied icons
  - Uses localized dialog titles and button text, or user supplied text
  - Returns dialog status depending on which button was pressed

  Since:
    1.40
  Author:
    Gregory Kotsaftis
  See Also:
    Serialized Form

- - ### Nested Class Summary

    Nested Classes
    Modifier and Type | Class and Description
    --- | ---
    `static class` | `JMessage.JMessageButtonEnum` Enum with all the supported buttons of the dialog.

    - ### Nested classes/interfaces inherited from class javax.swing.JDialog

      `javax.swing.JDialog.AccessibleJDialog`

    - ### Nested classes/interfaces inherited from class java.awt.Dialog

      `java.awt.Dialog.AccessibleAWTDialog, java.awt.Dialog.ModalExclusionType, java.awt.Dialog.ModalityType`

    - ### Nested classes/interfaces inherited from class java.awt.Window

      `java.awt.Window.AccessibleAWTWindow, java.awt.Window.Type`

    - ### Nested classes/interfaces inherited from class java.awt.Container

      `java.awt.Container.AccessibleAWTContainer`

    - ### Nested classes/interfaces inherited from class java.awt.Component

      `java.awt.Component.AccessibleAWTComponent, java.awt.Component.BaselineResizeBehavior, java.awt.Component.BltBufferStrategy, java.awt.Component.FlipBufferStrategy`

  - ### Field Summary

    - ### Fields inherited from class javax.swing.JDialog

      `accessibleContext, rootPane, rootPaneCheckingEnabled`

    - ### Fields inherited from class java.awt.Dialog

      `DEFAULT_MODALITY_TYPE`

    - ### Fields inherited from class java.awt.Component

      `BOTTOM_ALIGNMENT, CENTER_ALIGNMENT, LEFT_ALIGNMENT, RIGHT_ALIGNMENT, TOP_ALIGNMENT`

    - ### Fields inherited from interface javax.swing.WindowConstants

      `DISPOSE_ON_CLOSE, DO_NOTHING_ON_CLOSE, EXIT_ON_CLOSE, HIDE_ON_CLOSE`

    - ### Fields inherited from interface java.awt.image.ImageObserver

      `ABORT, ALLBITS, ERROR, FRAMEBITS, HEIGHT, PROPERTIES, SOMEBITS, WIDTH`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `JMessage(java.awt.Frame parent, java.lang.String message, java.lang.String frameTitle, int messageType, int optionType, JMessage.JMessageButtonEnum defaultButton, javax.swing.Icon ico, java.lang.Throwable ex, java.lang.String okText, java.lang.String cancelText, java.lang.String yesText, java.lang.String noText)` Constructor.

  - ### Method Summary

    All Methods Static Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `int` | `getReturnStatus()` Returns the status of the dialog depending on which button was pressed.
    `static void` | `showErrorMessage(java.awt.Frame parent, java.lang.String message)` Wrapper method for showMessageDialog().
    `static void` | `showErrorMessage(java.awt.Frame parent, java.lang.String message, java.lang.Throwable ex)` Wrapper method for showMessageDialog().
    `static boolean` | `showErrorQuestionMessageY(java.awt.Frame parent, java.lang.String message, java.lang.Throwable ex)` Shows a question window with YES/NO button options.
    `static void` | `showInfoMessage(java.awt.Frame parent, java.lang.String message)` Wrapper method for showMessageDialog().
    `static void` | `showInfoMessage(java.awt.Frame parent, java.lang.String message, java.lang.Throwable ex)` Wrapper method for showMessageDialog().
    `static int` | `showMessageDialog(java.awt.Frame parent, java.lang.String message, int messageType, int optionType)` Factory method, create-show-return.
    `static int` | `showMessageDialog(java.awt.Frame parent, java.lang.String message, int messageType, int optionType, JMessage.JMessageButtonEnum defaultButton)` Factory method, create-show-return.
    `static int` | `showMessageDialog(java.awt.Frame parent, java.lang.String message, int messageType, int optionType, java.lang.Throwable ex)` Factory method, create-show-return.
    `static int` | `showMessageDialog(java.awt.Frame parent, java.lang.String message, java.lang.String frameTitle, int messageType, int optionType, JMessage.JMessageButtonEnum defaultButton, javax.swing.Icon ico, java.lang.Throwable ex, java.lang.String okText, java.lang.String cancelText, java.lang.String yesText, java.lang.String noText)` Factory method, create-show-return.
    `static boolean` | `showQuestionMessageN(java.awt.Frame parent, java.lang.String message)` Wrapper method for showMessageDialog().
    `static boolean` | `showQuestionMessageY(java.awt.Frame parent, java.lang.String message)` Wrapper method for showMessageDialog().
    `static void` | `showWarningMessage(java.awt.Frame parent, java.lang.String message)` Wrapper method for showMessageDialog().
    `static void` | `showWarningMessage(java.awt.Frame parent, java.lang.String message, java.lang.Throwable ex)` Wrapper method for showMessageDialog().

    - ### Methods inherited from class javax.swing.JDialog

      `addImpl, createRootPane, dialogInit, getAccessibleContext, getContentPane, getDefaultCloseOperation, getGlassPane, getGraphics, getJMenuBar, getLayeredPane, getRootPane, getTransferHandler, isDefaultLookAndFeelDecorated, isRootPaneCheckingEnabled, paramString, processWindowEvent, remove, repaint, setContentPane, setDefaultCloseOperation, setDefaultLookAndFeelDecorated, setGlassPane, setJMenuBar, setLayeredPane, setLayout, setRootPane, setRootPaneCheckingEnabled, setTransferHandler, update`

    - ### Methods inherited from class java.awt.Dialog

      `addNotify, getModalityType, getTitle, hide, isModal, isResizable, isUndecorated, setBackground, setModal, setModalityType, setOpacity, setResizable, setShape, setTitle, setUndecorated, setVisible, show, toBack`

    - ### Methods inherited from class java.awt.Window

      `addPropertyChangeListener, addPropertyChangeListener, addWindowFocusListener, addWindowListener, addWindowStateListener, applyResourceBundle, applyResourceBundle, createBufferStrategy, createBufferStrategy, dispose, getBackground, getBufferStrategy, getFocusableWindowState, getFocusCycleRootAncestor, getFocusOwner, getFocusTraversalKeys, getIconImages, getInputContext, getListeners, getLocale, getModalExclusionType, getMostRecentFocusOwner, getOpacity, getOwnedWindows, getOwner, getOwnerlessWindows, getShape, getToolkit, getType, getWarningString, getWindowFocusListeners, getWindowListeners, getWindows, getWindowStateListeners, isActive, isAlwaysOnTop, isAlwaysOnTopSupported, isAutoRequestFocus, isFocusableWindow, isFocusCycleRoot, isFocused, isLocationByPlatform, isOpaque, isShowing, isValidateRoot, pack, paint, postEvent, processEvent, processWindowFocusEvent, processWindowStateEvent, removeNotify, removeWindowFocusListener, removeWindowListener, removeWindowStateListener, reshape, setAlwaysOnTop, setAutoRequestFocus, setBounds, setBounds, setCursor, setFocusableWindowState, setFocusCycleRoot, setIconImage, setIconImages, setLocation, setLocation, setLocationByPlatform, setLocationRelativeTo, setMinimumSize, setModalExclusionType, setSize, setSize, setType, toFront`

    - ### Methods inherited from class java.awt.Container

      `add, add, add, add, add, addContainerListener, applyComponentOrientation, areFocusTraversalKeysSet, countComponents, deliverEvent, doLayout, findComponentAt, findComponentAt, getAlignmentX, getAlignmentY, getComponent, getComponentAt, getComponentAt, getComponentCount, getComponents, getComponentZOrder, getContainerListeners, getFocusTraversalPolicy, getInsets, getLayout, getMaximumSize, getMinimumSize, getMousePosition, getPreferredSize, insets, invalidate, isAncestorOf, isFocusCycleRoot, isFocusTraversalPolicyProvider, isFocusTraversalPolicySet, layout, list, list, locate, minimumSize, paintComponents, preferredSize, print, printComponents, processContainerEvent, remove, removeAll, removeContainerListener, setComponentZOrder, setFocusTraversalKeys, setFocusTraversalPolicy, setFocusTraversalPolicyProvider, setFont, transferFocusDownCycle, validate, validateTree`

    - ### Methods inherited from class java.awt.Component

      `action, add, addComponentListener, addFocusListener, addHierarchyBoundsListener, addHierarchyListener, addInputMethodListener, addKeyListener, addMouseListener, addMouseMotionListener, addMouseWheelListener, bounds, checkImage, checkImage, coalesceEvents, contains, contains, createImage, createImage, createVolatileImage, createVolatileImage, disable, disableEvents, dispatchEvent, enable, enable, enableEvents, enableInputMethods, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, getBaseline, getBaselineResizeBehavior, getBounds, getBounds, getColorModel, getComponentListeners, getComponentOrientation, getCursor, getDropTarget, getFocusListeners, getFocusTraversalKeysEnabled, getFont, getFontMetrics, getForeground, getGraphicsConfiguration, getHeight, getHierarchyBoundsListeners, getHierarchyListeners, getIgnoreRepaint, getInputMethodListeners, getInputMethodRequests, getKeyListeners, getLocation, getLocation, getLocationOnScreen, getMouseListeners, getMouseMotionListeners, getMousePosition, getMouseWheelListeners, getName, getParent, getPeer, getPropertyChangeListeners, getPropertyChangeListeners, getSize, getSize, getTreeLock, getWidth, getX, getY, gotFocus, handleEvent, hasFocus, imageUpdate, inside, isBackgroundSet, isCursorSet, isDisplayable, isDoubleBuffered, isEnabled, isFocusable, isFocusOwner, isFocusTraversable, isFontSet, isForegroundSet, isLightweight, isMaximumSizeSet, isMinimumSizeSet, isPreferredSizeSet, isValid, isVisible, keyDown, keyUp, list, list, list, location, lostFocus, mouseDown, mouseDrag, mouseEnter, mouseExit, mouseMove, mouseUp, move, nextFocus, paintAll, prepareImage, prepareImage, printAll, processComponentEvent, processFocusEvent, processHierarchyBoundsEvent, processHierarchyEvent, processInputMethodEvent, processKeyEvent, processMouseEvent, processMouseMotionEvent, processMouseWheelEvent, remove, removeComponentListener, removeFocusListener, removeHierarchyBoundsListener, removeHierarchyListener, removeInputMethodListener, removeKeyListener, removeMouseListener, removeMouseMotionListener, removeMouseWheelListener, removePropertyChangeListener, removePropertyChangeListener, repaint, repaint, repaint, requestFocus, requestFocus, requestFocusInWindow, requestFocusInWindow, resize, resize, revalidate, setComponentOrientation, setDropTarget, setEnabled, setFocusable, setFocusTraversalKeysEnabled, setForeground, setIgnoreRepaint, setLocale, setMaximumSize, setName, setPreferredSize, show, size, toString, transferFocus, transferFocusBackward, transferFocusUpCycle`

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait`

- - ### Constructor Detail

    - #### JMessage

          public JMessage(java.awt.Frame parent,
                          java.lang.String message,
                          java.lang.String frameTitle,
                          int messageType,
                          int optionType,
                          JMessage.JMessageButtonEnum defaultButton,
                          javax.swing.Icon ico,
                          java.lang.Throwable ex,
                          java.lang.String okText,
                          java.lang.String cancelText,
                          java.lang.String yesText,
                          java.lang.String noText)

      Constructor. Creates fully customizable message dialog.

      Parameters:
        `parent` - The parent relative frame, can be `null`.
        `message` - The message to display, can be plain or html.
        `frameTitle` - The title for the frame, if `null` the default is used.
        `messageType` - Same as `JOptionPane`, one of: ERROR_MESSAGE, INFORMATION_MESSAGE, WARNING_MESSAGE, QUESTION_MESSAGE, or PLAIN_MESSAGE
        `optionType` - Same as `JOptionPane`, one of: DEFAULT_OPTION, YES_NO_OPTION, YES_NO_CANCEL_OPTION, OK_CANCEL_OPTION
        `defaultButton` - The default selected button for the dialog, if `null` the default for `optionType` will be selected.
        `ico` - The custom icon to use, `null` means no icon.
        `ex` - An exception to display it's stacktrace, `null` will disable the stacktrace button functionality.
        `okText` - Ok button text, if `null` the default is used.
        `cancelText` - Cancel button text, if `null` the default is used.
        `yesText` - Yes button text, if `null` the default is used.
        `noText` - No button text, if `null` the default is used.

  - ### Method Detail

    - #### showErrorQuestionMessageY

          public static boolean showErrorQuestionMessageY(java.awt.Frame parent,
                                                          java.lang.String message,
                                                          java.lang.Throwable ex)

      Shows a question window with YES/NO button options. Default button is YES. Also enables button to print the stacktrace of an exception. NOTE: On dialog close, it also returns false.

      Parameters:
        `parent` - The parent relative frame, can be `null`.
        `message` - The message to display, can be plain or html.
        `ex` - An exception to display it's stacktrace, `null` will disable the stacktrace button functionality.

      Returns:
        true for YES, false for NO

    - #### showErrorMessage

          public static void showErrorMessage(java.awt.Frame parent,
                                              java.lang.String message)

      Wrapper method for showMessageDialog(). Shows an error window with default button option.

      Parameters:
        `parent` - The parent relative frame, can be `null`.
        `message` - The message to display, can be plain or html.

    - #### showErrorMessage

          public static void showErrorMessage(java.awt.Frame parent,
                                              java.lang.String message,
                                              java.lang.Throwable ex)

      Wrapper method for showMessageDialog(). Shows an error window with default button option.

      Parameters:
        `parent` - The parent relative frame, can be `null`.
        `message` - The message to display, can be plain or html.
        `ex` - An exception to display it's stacktrace, `null` will disable the stacktrace button functionality.

    - #### showWarningMessage

          public static void showWarningMessage(java.awt.Frame parent,
                                                java.lang.String message)

      Wrapper method for showMessageDialog(). Shows a warning window with default button option.

      Parameters:
        `parent` - The parent relative frame, can be `null`.
        `message` - The message to display, can be plain or html.

    - #### showWarningMessage

          public static void showWarningMessage(java.awt.Frame parent,
                                                java.lang.String message,
                                                java.lang.Throwable ex)

      Wrapper method for showMessageDialog(). Shows a warning window with default button option.

      Parameters:
        `parent` - The parent relative frame, can be `null`.
        `message` - The message to display, can be plain or html.
        `ex` - An exception to display it's stacktrace, `null` will disable the stacktrace button functionality.

    - #### showInfoMessage

          public static void showInfoMessage(java.awt.Frame parent,
                                             java.lang.String message)

      Wrapper method for showMessageDialog(). Shows an info window with default button option.

      Parameters:
        `parent` - The parent relative frame, can be `null`.
        `message` - The message to display, can be plain or html.

    - #### showInfoMessage

          public static void showInfoMessage(java.awt.Frame parent,
                                             java.lang.String message,
                                             java.lang.Throwable ex)

      Wrapper method for showMessageDialog(). Shows an info window with default button option.

      Parameters:
        `parent` - The parent relative frame, can be `null`.
        `message` - The message to display, can be plain or html.
        `ex` - An exception to display it's stacktrace, `null` will disable the stacktrace button functionality.

    - #### showQuestionMessageN

          public static boolean showQuestionMessageN(java.awt.Frame parent,
                                                     java.lang.String message)

      Wrapper method for showMessageDialog(). Shows a question window with YES/NO button options. Default button is NO, e.g. for use with delete confirmation dialogs. NOTE: On dialog close, it also returns false.

      Parameters:
        `parent` - The parent relative frame, can be `null`.
        `message` - The message to display, can be plain or html.

      Returns:
        true for YES, false for NO

    - #### showQuestionMessageY

          public static boolean showQuestionMessageY(java.awt.Frame parent,
                                                     java.lang.String message)

      Wrapper method for showMessageDialog(). Shows a question window with YES/NO button options. Default button is YES, e.g. for use with save confirmation dialogs. NOTE: On dialog close, it also returns false.

      Parameters:
        `parent` - The parent relative frame, can be `null`.
        `message` - The message to display, can be plain or html.

      Returns:
        true for YES, false for NO

    - #### showMessageDialog

          public static int showMessageDialog(java.awt.Frame parent,
                                              java.lang.String message,
                                              int messageType,
                                              int optionType)

      Factory method, create-show-return. Creates a dialog relative to `parent` frame using UI defaults for icon and a locale specific frame title.

      Parameters:
        `parent` - The parent relative frame, can be `null`.
        `message` - The message to display, can be plain or html.
        `messageType` - Same as `JOptionPane`, one of: ERROR_MESSAGE, INFORMATION_MESSAGE, WARNING_MESSAGE, QUESTION_MESSAGE, or PLAIN_MESSAGE
        `optionType` - Same as `JOptionPane`, one of: DEFAULT_OPTION, YES_NO_OPTION, YES_NO_CANCEL_OPTION, OK_CANCEL_OPTION

      Returns:
        The status of the dialog depending on which button was pressed. Same as `JOptionPane`, one of: CANCEL_OPTION, NO_OPTION, YES_OPTION, OK_OPTION or CLOSED_OPTION if the dialog was closed.

    - #### showMessageDialog

          public static int showMessageDialog(java.awt.Frame parent,
                                              java.lang.String message,
                                              int messageType,
                                              int optionType,
                                              JMessage.JMessageButtonEnum defaultButton)

      Factory method, create-show-return. Creates a dialog relative to `parent` frame using UI defaults for icon and a locale specific frame title. Use `JMessageButtonEnum` to setup the default button.

      Parameters:
        `parent` - The parent relative frame, can be `null`.
        `message` - The message to display, can be plain or html.
        `messageType` - Same as `JOptionPane`, one of: ERROR_MESSAGE, INFORMATION_MESSAGE, WARNING_MESSAGE, QUESTION_MESSAGE, or PLAIN_MESSAGE
        `optionType` - Same as `JOptionPane`, one of: DEFAULT_OPTION, YES_NO_OPTION, YES_NO_CANCEL_OPTION, OK_CANCEL_OPTION
        `defaultButton` - The default selected button for the dialog, if `null` the default for `optionType` will be selected.

      Returns:
        The status of the dialog depending on which button was pressed. Same as `JOptionPane`, one of: CANCEL_OPTION, NO_OPTION, YES_OPTION, OK_OPTION or CLOSED_OPTION if the dialog was closed.

    - #### showMessageDialog

          public static int showMessageDialog(java.awt.Frame parent,
                                              java.lang.String message,
                                              int messageType,
                                              int optionType,
                                              java.lang.Throwable ex)

      Factory method, create-show-return. Creates a dialog relative to `parent` frame using UI defaults for icon and a locale specific frame title. Also enables button to print the stacktrace of an exception.

      Parameters:
        `parent` - The parent relative frame, can be `null`.
        `message` - The message to display, can be plain or html.
        `messageType` - Same as `JOptionPane`, one of: ERROR_MESSAGE, INFORMATION_MESSAGE, WARNING_MESSAGE, QUESTION_MESSAGE, or PLAIN_MESSAGE
        `optionType` - Same as `JOptionPane`, one of: DEFAULT_OPTION, YES_NO_OPTION, YES_NO_CANCEL_OPTION, OK_CANCEL_OPTION
        `ex` - An exception to display it's stacktrace, `null` will disable the stacktrace button functionality.

      Returns:
        The status of the dialog depending on which button was pressed. Same as `JOptionPane`, one of: CANCEL_OPTION, NO_OPTION, YES_OPTION, OK_OPTION or CLOSED_OPTION if the dialog was closed.

    - #### showMessageDialog

          public static int showMessageDialog(java.awt.Frame parent,
                                              java.lang.String message,
                                              java.lang.String frameTitle,
                                              int messageType,
                                              int optionType,
                                              JMessage.JMessageButtonEnum defaultButton,
                                              javax.swing.Icon ico,
                                              java.lang.Throwable ex,
                                              java.lang.String okText,
                                              java.lang.String cancelText,
                                              java.lang.String yesText,
                                              java.lang.String noText)

      Factory method, create-show-return. Creates fully customizable message dialog.

      Parameters:
        `parent` - The parent relative frame, can be `null`.
        `message` - The message to display, can be plain or html.
        `frameTitle` - The title for the frame, if `null` the default is used.
        `messageType` - Same as `JOptionPane`, one of: ERROR_MESSAGE, INFORMATION_MESSAGE, WARNING_MESSAGE, QUESTION_MESSAGE, or PLAIN_MESSAGE
        `optionType` - Same as `JOptionPane`, one of: DEFAULT_OPTION, YES_NO_OPTION, YES_NO_CANCEL_OPTION, OK_CANCEL_OPTION
        `defaultButton` - The default selected button for the dialog, if `null` the default for `optionType` will be selected.
        `ico` - The custom icon to use, `null` means no icon.
        `ex` - An exception to display it's stacktrace, `null` will disable the stacktrace button functionality.
        `okText` - Ok button text, if `null` the default is used.
        `cancelText` - Cancel button text, if `null` the default is used.
        `yesText` - Yes button text, if `null` the default is used.
        `noText` - No button text, if `null` the default is used.

      Returns:
        The status of the dialog depending on which button was pressed. Same as `JOptionPane`, one of: CANCEL_OPTION, NO_OPTION, YES_OPTION, OK_OPTION or CLOSED_OPTION if the dialog was closed.

    - #### getReturnStatus

          public int getReturnStatus()

      Returns the status of the dialog depending on which button was pressed.

      Returns:
        Same as `JOptionPane`, one of: CANCEL_OPTION, NO_OPTION, YES_OPTION, OK_OPTION or CLOSED_OPTION if the dialog was closed.