package games.strategy.triplea.ui; import java.awt.Component; import java.awt.Frame; import javax.swing.JDialog; import javax.swing.JOptionPane; /** * A Dialog window which has a single component, and a number of buttons. * Thi is a wrapper around JOptionPane.showOptionDialog, that allows you to use any names for the button */ public class JButtonDialog { /** * Show a new modal dialog and block until the user press a button of closes the dialog. * * @param frame * the frame owner * @param title * the dialog title * @param message * the String message, or a JPanel * @param buttons * the string button options (may not be null) * @return the option pressed or null if the dialog is closed without pressing a button */ public static String showDialog(final Frame frame, final String title, final Object message, final String... buttons) { return showDialog(frame, title, message, JOptionPane.PLAIN_MESSAGE, buttons); } /** * Show a new modal dialog and block until the user press a button of closes the dialog. * * @param component * the component owner * @param title * the dialog title * @param message * the String message, or a JPanel * @param buttons * the string button options (may not be null) * @return the option pressed or null if the dialog is closed without pressing a button */ public static String showDialog(final Component component, final String title, final Object message, final String... buttons) { return showDialog(JOptionPane.getFrameForComponent(component), title, message, JOptionPane.PLAIN_MESSAGE, buttons); } /** * Show a new modal dialog and block until the user press a button of closes the dialog * * @param frame * the frame owner * @param title * the dialog title * @param message * the String message, or a JPanel * @param buttons * the string button options (may not be null) * @param messageType * the message type see <code>JOptionPane.PLAIN_MESSAGE, </code> * @return the option pressed or null if the dialog is closed without pressing a button */ public static String showDialog(final Frame frame, final String title, final Object message, final int messageType, final String... buttons) { final Object[] options = new Object[buttons.length]; for (int i = 0, buttonsLength = buttons.length; i < buttonsLength; i++) { options[i] = buttons[i]; } final JOptionPane pane = new JOptionPane(message, messageType); pane.setOptions(options); final JDialog window = pane.createDialog(frame, title); window.setVisible(true); return (String) pane.getValue(); } private JButtonDialog() {} }