/* * EscapableDialog.java */ package pipe.gui.widgets; import javax.swing.*; import java.awt.*; import java.awt.event.ActionEvent; /** * Dialog that closes itself on escape key pressed */ @SuppressWarnings("serial") public class EscapableDialog extends JDialog{ /** Creates a new instance of EscapableDialog * @param window dialog window * @param title of dialog * @param modal true if modal * */ public EscapableDialog(Window window, String title, boolean modal) { super(window, title); } /** * * Creates a root pane and allows it to close on exit * * @return root pane */ @Override protected JRootPane createRootPane() { JRootPane rootPane = new JRootPane(); KeyStroke stroke = KeyStroke.getKeyStroke("ESCAPE"); Action actionListener = new AbstractAction() { public void actionPerformed(ActionEvent actionEvent) { setVisible(false); } }; InputMap inputMap = rootPane.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW); inputMap.put(stroke, "ESCAPE"); rootPane.getActionMap().put("ESCAPE", actionListener); return rootPane; } }