package info.opencards.util; import info.opencards.ui.actions.HelpAction; import javax.swing.*; import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.KeyEvent; /** * Document me! * * @author Holger Brandl */ public class UIUtils { public static JDialog getOwnerDialog(Container awtOwner) { while (awtOwner != null && !(awtOwner instanceof JDialog)) { awtOwner = awtOwner.getParent(); } return (JDialog) awtOwner; } /** * closes a dialog when escape is pressed either by disposing (<code>dispose == true</code> )it or by making it * invisible. */ public static void closeOnEsc(final JDialog dialog, final boolean doDispose) { KeyStroke escape = KeyStroke.getKeyStroke(KeyEvent.VK_ESCAPE, 0, false); Action escapeAction = new AbstractAction() { public void actionPerformed(ActionEvent e) { if (doDispose) dialog.dispose(); else dialog.setVisible(false); } }; dialog.getRootPane().getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW).put(escape, "ESCAPE"); dialog.getRootPane().getActionMap().put("ESCAPE", escapeAction); } public static void actionOnEsc(final JDialog dialog, final Action action) { KeyStroke escape = KeyStroke.getKeyStroke(KeyEvent.VK_ESCAPE, 0, false); Action escapeAction = new AbstractAction() { public void actionPerformed(ActionEvent e) { action.actionPerformed(null); } }; dialog.getRootPane().getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW).put(escape, "ESCAPE"); dialog.getRootPane().getActionMap().put("ESCAPE", escapeAction); } /** * @param dialog The dialog for which f1 as help-trigger should be registered * @param helpSection (Optional) The help-section which will be attached to the base-help url */ public static void helpOnF1(final JFrame dialog, String helpSection) { KeyStroke fOne = KeyStroke.getKeyStroke(KeyEvent.VK_F1, 0, false); dialog.getRootPane().getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW).put(fOne, "F_ONE"); dialog.getRootPane().getActionMap().put("F_ONE", new HelpAction(helpSection != null ? helpSection : "help")); } }