source: josm/trunk/src/org/openstreetmap/josm/tools/InputMapUtils.java@ 13485

Last change on this file since 13485 was 12520, checked in by Don-vip, 7 years ago

see #11924 - fix remaining warnings about extended modifiers

  • Property svn:eol-style set to native
File size: 4.5 KB
RevLine 
[5927]1// License: GPL. For details, see LICENSE file.
[5200]2package org.openstreetmap.josm.tools;
3
4import java.awt.event.InputEvent;
5import java.awt.event.KeyEvent;
[5927]6
[5200]7import javax.swing.Action;
8import javax.swing.InputMap;
9import javax.swing.JButton;
10import javax.swing.JComponent;
11import javax.swing.KeyStroke;
12import javax.swing.SwingUtilities;
13
14/**
[7539]15 * Tools to work with Swing InputMap.
16 * @since 5200
[5200]17 */
[6362]18public final class InputMapUtils {
[7509]19
[6362]20 private InputMapUtils() {
21 // Hide default constructor for utils classes
22 }
[7509]23
[6557]24 /**
25 * Unassign Ctrl-Shift/Alt-Shift Up/Down from the given component
26 * to allow global JOSM shortcuts to work in this component.
27 * @param cmp The Swing component
28 * @param condition one of the following values:
29 * <ul>
30 * <li>JComponent.FOCUS_INPUTMAP_CREATED
31 * <li>JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT
32 * <li>JComponent.WHEN_IN_FOCUSED_WINDOW
33 * </ul>
34 */
[6362]35 public static void unassignCtrlShiftUpDown(JComponent cmp, int condition) {
[8510]36 InputMap inputMap = SwingUtilities.getUIInputMap(cmp, condition);
[12520]37 inputMap.remove(KeyStroke.getKeyStroke(KeyEvent.VK_UP, InputEvent.CTRL_DOWN_MASK | InputEvent.SHIFT_DOWN_MASK));
38 inputMap.remove(KeyStroke.getKeyStroke(KeyEvent.VK_DOWN, InputEvent.CTRL_DOWN_MASK | InputEvent.SHIFT_DOWN_MASK));
39 inputMap.remove(KeyStroke.getKeyStroke(KeyEvent.VK_UP, InputEvent.ALT_DOWN_MASK | InputEvent.SHIFT_DOWN_MASK));
40 inputMap.remove(KeyStroke.getKeyStroke(KeyEvent.VK_DOWN, InputEvent.ALT_DOWN_MASK | InputEvent.SHIFT_DOWN_MASK));
[8510]41 SwingUtilities.replaceUIInputMap(cmp, JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT, inputMap);
[6362]42 }
[6070]43
[6362]44 /**
[6557]45 * Unassign PageUp/PageDown from the given component
46 * to allow global JOSM shortcuts to work in this component.
47 * @param cmp The Swing component
48 * @param condition one of the following values:
49 * <ul>
50 * <li>JComponent.FOCUS_INPUTMAP_CREATED
51 * <li>JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT
52 * <li>JComponent.WHEN_IN_FOCUSED_WINDOW
53 * </ul>
54 * @since 6557
55 */
56 public static void unassignPageUpDown(JComponent cmp, int condition) {
57 InputMap inputMap = SwingUtilities.getUIInputMap(cmp, condition);
58 inputMap.remove(KeyStroke.getKeyStroke(KeyEvent.VK_PAGE_UP, 0));
59 inputMap.remove(KeyStroke.getKeyStroke(KeyEvent.VK_PAGE_DOWN, 0));
60 SwingUtilities.replaceUIInputMap(cmp, JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT, inputMap);
61 }
62
63 /**
[7539]64 * Enable activating button on Enter (which is replaced with spacebar for certain Look-And-Feels).
65 * @param b Button
[6362]66 */
67 public static void enableEnter(JButton b) {
[5200]68 b.setFocusable(true);
[10790]69 addEnterAction(b, b.getAction());
[6362]70 }
[6070]71
[7539]72 /**
73 * Add an action activated with Enter key on a component.
74 * @param c The Swing component
75 * @param a action activated with Enter key
[10790]76 * @see JComponent#WHEN_FOCUSED
[7539]77 */
[6362]78 public static void addEnterAction(JComponent c, Action a) {
[10790]79 addEnterAction(c, a, JComponent.WHEN_FOCUSED);
80 }
81
82 /**
83 * Add an action activated with Enter key on a component or its children.
84 * @param c The Swing component
85 * @param a action activated with Enter key
86 * @see JComponent#WHEN_ANCESTOR_OF_FOCUSED_COMPONENT
87 * @since 10790
88 */
89 public static void addEnterActionWhenAncestor(JComponent c, Action a) {
90 addEnterAction(c, a, JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT);
91 }
92
93 private static void addEnterAction(JComponent c, Action a, int condition) {
[5200]94 c.getActionMap().put("enter", a);
[10790]95 c.getInputMap(condition).put(KeyStroke.getKeyStroke(KeyEvent.VK_ENTER, 0), "enter");
[6362]96 }
[6070]97
[7539]98 /**
99 * Add an action activated with Spacebar key on a component.
100 * @param c The Swing component
101 * @param a action activated with Spacebar key
102 */
[6362]103 public static void addSpacebarAction(JComponent c, Action a) {
[5200]104 c.getActionMap().put("spacebar", a);
105 c.getInputMap().put(KeyStroke.getKeyStroke(KeyEvent.VK_SPACE, 0), "spacebar");
[6362]106 }
[10791]107
108 /**
109 * Add an action activated with ESCAPE key on a component or its children.
110 * @param c The Swing component
111 * @param a action activated with ESCAPE key
112 * @see JComponent#WHEN_ANCESTOR_OF_FOCUSED_COMPONENT
113 * @since 10791
114 */
115 public static void addEscapeAction(JComponent c, Action a) {
116 c.getActionMap().put("escape", a);
117 c.getInputMap(JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT).put(KeyStroke.getKeyStroke(KeyEvent.VK_ESCAPE, 0), "escape");
118 }
[5200]119}
Note: See TracBrowser for help on using the repository browser.