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

Last change on this file since 7206 was 6557, checked in by Don-vip, 10 years ago

fix #3722 - fix shortcuts for "next photo" and "previous photo" after a tag is set

File size: 3.2 KB
Line 
1// License: GPL. For details, see LICENSE file.
2package org.openstreetmap.josm.tools;
3
4import java.awt.event.InputEvent;
5import java.awt.event.KeyEvent;
6
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/**
15 * Tools to work with Swing InputMap
16 *
17 */
18public final class InputMapUtils {
19
20 private InputMapUtils() {
21 // Hide default constructor for utils classes
22 }
23
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 */
35 public static void unassignCtrlShiftUpDown(JComponent cmp, int condition) {
36 InputMap inputMap=SwingUtilities.getUIInputMap(cmp, condition);
37 inputMap.remove(KeyStroke.getKeyStroke(KeyEvent.VK_UP,InputEvent.CTRL_MASK|InputEvent.SHIFT_MASK));
38 inputMap.remove(KeyStroke.getKeyStroke(KeyEvent.VK_DOWN,InputEvent.CTRL_MASK|InputEvent.SHIFT_MASK));
39 inputMap.remove(KeyStroke.getKeyStroke(KeyEvent.VK_UP,InputEvent.ALT_MASK|InputEvent.SHIFT_MASK));
40 inputMap.remove(KeyStroke.getKeyStroke(KeyEvent.VK_DOWN,InputEvent.ALT_MASK|InputEvent.SHIFT_MASK));
41 SwingUtilities.replaceUIInputMap(cmp,JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT,inputMap);
42 }
43
44 /**
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 /**
64 * Enable activating button on Enter (which is replaced with spacebar for certain Look-And-Feels)
65 */
66 public static void enableEnter(JButton b) {
67 b.setFocusable(true);
68 b.getInputMap(JComponent.WHEN_FOCUSED).put(KeyStroke.getKeyStroke(KeyEvent.VK_ENTER, 0), "enter");
69 b.getActionMap().put("enter",b.getAction());
70 }
71
72 public static void addEnterAction(JComponent c, Action a) {
73 c.getActionMap().put("enter", a);
74 c.getInputMap().put(KeyStroke.getKeyStroke(KeyEvent.VK_ENTER, 0), "enter");
75 }
76
77 public static void addSpacebarAction(JComponent c, Action a) {
78 c.getActionMap().put("spacebar", a);
79 c.getInputMap().put(KeyStroke.getKeyStroke(KeyEvent.VK_SPACE, 0), "spacebar");
80 }
81}
Note: See TracBrowser for help on using the repository browser.