public class ExtendedDialog extends javax.swing.JDialog
getValue()
to retrieve the
button index. Note that the user can close the dialog
by other means. This is usually equivalent to cancel action.
For non-modal dialogs, buttonAction(int, ActionEvent)
can be overridden.
There are various options, see below.
Note: The button indices are counted from 1 and upwards.
So for getValue()
, setDefaultButton(int)
and
setCancelButton(java.lang.Integer...)
the first button has index 1.
Simple example:
ExtendedDialog ed = new ExtendedDialog( Main.parent, tr("Dialog Title"), new String[] {tr("Ok"), tr("Cancel")}); ed.setButtonIcons(new String[] {"ok", "cancel"}); // optional ed.setIcon(JOptionPane.WARNING_MESSAGE); // optional ed.setContent(tr("Really proceed? Interesting things may happen...")); ed.showDialog(); if (ed.getValue() == 1) { // user clicked first button "Ok" // proceed... }
Modifier and Type | Class and Description |
---|---|
(package private) class |
ExtendedDialog.HelpAction |
javax.swing.JDialog.AccessibleJDialog
java.awt.Dialog.AccessibleAWTDialog, java.awt.Dialog.ModalExclusionType, java.awt.Dialog.ModalityType
java.awt.Window.AccessibleAWTWindow, java.awt.Window.Type
Modifier and Type | Field and Description |
---|---|
private javax.swing.Icon[] |
bIcons |
private java.lang.String[] |
bTexts |
private java.lang.String[] |
bToolTipTexts |
protected java.util.List<javax.swing.JButton> |
buttons |
private java.util.List<java.lang.Integer> |
cancelButtonIdx |
private java.awt.Component |
content |
protected java.awt.Insets |
contentInsets |
protected javax.swing.JButton |
defaultButton |
private int |
defaultButtonIdx |
private WindowGeometry |
defaultWindowGeometry |
static int |
DialogClosedOtherwise |
private boolean |
disposeOnClose |
private boolean |
focusOnDefaultButton |
private java.lang.String |
helpTopic
the help topic
|
private javax.swing.Icon |
icon |
private boolean |
modal |
private java.awt.Component |
parent |
private boolean |
placeContentInScrollPane
set to true if the content of the extended dialog should
be placed in a
JScrollPane |
private java.lang.String |
rememberSizePref |
private int |
result |
private boolean |
setupDone |
private boolean |
showHelpButton
true, if the dialog should include a help button
|
private boolean |
toggleable |
private ConditionalOptionPaneUtil.MessagePanel |
togglePanel |
private java.lang.String |
togglePref |
private int |
toggleValue |
accessibleContext, rootPane, rootPaneCheckingEnabled
BOTTOM_ALIGNMENT, CENTER_ALIGNMENT, LEFT_ALIGNMENT, RIGHT_ALIGNMENT, TOP_ALIGNMENT
Constructor and Description |
---|
ExtendedDialog(java.awt.Component parent,
java.lang.String title,
java.lang.String[] buttonTexts)
This method sets up the most basic options for the dialog.
|
ExtendedDialog(java.awt.Component parent,
java.lang.String title,
java.lang.String[] buttonTexts,
boolean modal)
Same as above but lets you define if the dialog should be modal.
|
ExtendedDialog(java.awt.Component parent,
java.lang.String title,
java.lang.String[] buttonTexts,
boolean modal,
boolean disposeOnClose) |
Modifier and Type | Method and Description |
---|---|
protected void |
buttonAction(int buttonIndex,
java.awt.event.ActionEvent evt)
This gets performed whenever a button is clicked or activated
|
ExtendedDialog |
configureContextsensitiveHelp(java.lang.String helpTopic,
boolean showHelpButton)
Configures how this dialog support for context sensitive help.
|
protected java.awt.Dimension |
findMaxDialogSize()
Tries to find a good value of how large the dialog should be
|
int |
getValue()
Retrieve the user choice after the dialog has been closed.
|
protected WindowGeometry |
initWindowGeometry() |
protected void |
rememberWindowGeometry(WindowGeometry geometry) |
private void |
requestFocusToDefaultButton() |
ExtendedDialog |
setButtonIcons(javax.swing.Icon[] buttonIcons)
Allows decorating the buttons with icons.
|
ExtendedDialog |
setButtonIcons(java.lang.String[] buttonIcons)
Convenience method to provide image names instead of images.
|
ExtendedDialog |
setCancelButton(java.lang.Integer... cancelButtonIdx)
Used in combination with toggle:
If the user presses 'cancel' the toggle settings are ignored and not saved to the pref
|
ExtendedDialog |
setContent(java.awt.Component content)
Sets the content that will be displayed in the message dialog.
|
ExtendedDialog |
setContent(java.awt.Component content,
boolean placeContentInScrollPane)
Sets the content that will be displayed in the message dialog.
|
ExtendedDialog |
setContent(java.lang.String message)
Sets the message that will be displayed.
|
ExtendedDialog |
setDefaultButton(int defaultButtonIdx)
Sets the button that will react to ENTER.
|
void |
setFocusOnDefaultButton(boolean focus)
Makes default button request initial focus or not.
|
ExtendedDialog |
setIcon(javax.swing.Icon icon)
Decorate the dialog with an icon that is shown on the left part of
the window area.
|
ExtendedDialog |
setIcon(int messageType)
Convenience method to allow values that would be accepted by
JOptionPane as messageType. |
ExtendedDialog |
setRememberWindowGeometry(java.lang.String pref,
WindowGeometry wg)
Call this if you want the dialog to remember the geometry (size and position) set by the user.
|
ExtendedDialog |
setToolTipTexts(java.lang.String[] toolTipTexts)
Allows decorating the buttons with tooltips.
|
void |
setupDialog()
This is called by
showDialog() . |
private void |
setupEscListener()
Makes the dialog listen to ESC keypressed
|
void |
setVisible(boolean visible)
Override setVisible to be able to save the window geometry if required
|
ExtendedDialog |
showDialog()
Show the dialog to the user.
|
private static JMultilineLabel |
string2label(java.lang.String msg)
Convenience function that converts a given string into a JMultilineLabel
|
boolean |
toggleCheckState()
This function returns true if the dialog has been set to "do not show again"
|
ExtendedDialog |
toggleDisable()
Call this if you "accidentally" called toggleEnable.
|
ExtendedDialog |
toggleEnable(java.lang.String togglePref)
Calling this will offer the user a "Do not show again" checkbox for the
dialog.
|
private void |
toggleSaveState()
This function checks the state of the "Do not show again" checkbox and
writes the corresponding pref.
|
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
addNotify, getModalityType, getTitle, hide, isModal, isResizable, isUndecorated, setBackground, setModal, setModalityType, setOpacity, setResizable, setShape, setTitle, setUndecorated, show, toBack
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
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
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
private final boolean disposeOnClose
private int result
public static final int DialogClosedOtherwise
private boolean toggleable
private java.lang.String rememberSizePref
private WindowGeometry defaultWindowGeometry
private java.lang.String togglePref
private int toggleValue
private ConditionalOptionPaneUtil.MessagePanel togglePanel
private java.awt.Component parent
private java.awt.Component content
private final java.lang.String[] bTexts
private java.lang.String[] bToolTipTexts
private javax.swing.Icon[] bIcons
private java.util.List<java.lang.Integer> cancelButtonIdx
private int defaultButtonIdx
protected javax.swing.JButton defaultButton
private javax.swing.Icon icon
private boolean modal
private boolean focusOnDefaultButton
private boolean showHelpButton
private java.lang.String helpTopic
private boolean placeContentInScrollPane
JScrollPane
protected java.awt.Insets contentInsets
protected java.util.List<javax.swing.JButton> buttons
private boolean setupDone
public ExtendedDialog(java.awt.Component parent, java.lang.String title, java.lang.String[] buttonTexts)
setButtonIcons
setContent
toggleEnable
toggleDisable
setToggleCheckboxText
setRememberWindowGeometry
showDialog
to display it. You can receive
the user's choice using getValue
. Have a look at this function
for possible return values.parent
- The parent element that will be used for position and maximum sizetitle
- The text that will be shown in the window titlebarbuttonTexts
- String Array of the text that will appear on the buttons. The first button is the default one.public ExtendedDialog(java.awt.Component parent, java.lang.String title, java.lang.String[] buttonTexts, boolean modal)
parent
- The parent element that will be used for position and maximum sizetitle
- The text that will be shown in the window titlebarbuttonTexts
- String Array of the text that will appear on the buttons. The first button is the default one.modal
- Set it to true
if you want the dialog to be modalpublic ExtendedDialog(java.awt.Component parent, java.lang.String title, java.lang.String[] buttonTexts, boolean modal, boolean disposeOnClose)
public ExtendedDialog setButtonIcons(javax.swing.Icon[] buttonIcons)
buttonIcons
- The button iconsthis
public ExtendedDialog setButtonIcons(java.lang.String[] buttonIcons)
buttonIcons
- The button icon namesthis
public ExtendedDialog setToolTipTexts(java.lang.String[] toolTipTexts)
toolTipTexts
- the tool tip texts. Ignored, if null.this
public ExtendedDialog setContent(java.awt.Component content)
content
- Any element that can be displayed in the message dialogthis
public ExtendedDialog setContent(java.awt.Component content, boolean placeContentInScrollPane)
content
- Any element that can be displayed in the message dialogplaceContentInScrollPane
- if true, places the content in a JScrollPanethis
public ExtendedDialog setContent(java.lang.String message)
message
- The text that should be shown to the userthis
public ExtendedDialog setIcon(javax.swing.Icon icon)
JOptionPane
)icon
- The icon to displaythis
public ExtendedDialog setIcon(int messageType)
JOptionPane
as messageType.messageType
- The JOptionPane
messageTypethis
public ExtendedDialog showDialog()
getValue()
.this
public int getValue()
DialogClosedOtherwise
means the dialog has been closed otherwise.public void setupDialog()
showDialog()
.
Only invoke from outside if you need to modify the contentPaneprotected void buttonAction(int buttonIndex, java.awt.event.ActionEvent evt)
buttonIndex
- the button index (first index is 0)evt
- the button eventprotected java.awt.Dimension findMaxDialogSize()
private void setupEscListener()
protected final void rememberWindowGeometry(WindowGeometry geometry)
protected final WindowGeometry initWindowGeometry()
public void setVisible(boolean visible)
setVisible
in class java.awt.Dialog
public ExtendedDialog setRememberWindowGeometry(java.lang.String pref, WindowGeometry wg)
null
or to an empty string to disable again.
By default, it's disabled.
Note: If you want to set the width of this dialog directly use the usual
setSize, setPreferredSize, setMaxSize, setMinSizepref
- The preference to save the dimension towg
- The default window geometry that should be used if no
existing preference is found (only takes effect if
pref
is not null or emptythis
public ExtendedDialog toggleEnable(java.lang.String togglePref)
togglePref
- The preference to save the checkbox state tothis
public ExtendedDialog toggleDisable()
this
public ExtendedDialog setDefaultButton(int defaultButtonIdx)
defaultButtonIdx
- The button index (starts to 1)this
public ExtendedDialog setCancelButton(java.lang.Integer... cancelButtonIdx)
cancelButtonIdx
- index of the button that stands for cancel, accepts multiple valuesthis
public void setFocusOnDefaultButton(boolean focus)
focus
- true
to make default button request initial focusprivate void requestFocusToDefaultButton()
public final boolean toggleCheckState()
private void toggleSaveState()
private static JMultilineLabel string2label(java.lang.String msg)
msg
- public ExtendedDialog configureContextsensitiveHelp(java.lang.String helpTopic, boolean showHelpButton)
helpTopic
- the help topicshowHelpButton
- true, if the dialog displays a help buttonthis