Changeset 8489 in josm
- Timestamp:
- 2015-06-15T08:24:47+02:00 (10 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/org/openstreetmap/josm/gui/util/AdvancedKeyPressDetector.java
r8441 r8489 12 12 import java.awt.event.ActionListener; 13 13 import java.awt.event.KeyEvent; 14 import java.util.ArrayList;15 14 import java.util.List; 16 15 import java.util.Set; 17 16 import java.util.TreeSet; 17 import java.util.concurrent.CopyOnWriteArrayList; 18 18 19 19 import javax.swing.JFrame; … … 36 36 private Timer timer; 37 37 38 private final List<KeyPressReleaseListener> keyListeners = new ArrayList<>(); 39 private final List<ModifierListener> modifierListeners = new ArrayList<>(); 38 private final List<KeyPressReleaseListener> keyListeners = new CopyOnWriteArrayList<>(); 39 private final List<ModifierListener> modifierListeners = new CopyOnWriteArrayList<>(); 40 40 private int previousModifiers; 41 41 … … 46 46 * @param l listener to add 47 47 */ 48 public synchronizedvoid addKeyListener(KeyPressReleaseListener l) {48 public void addKeyListener(KeyPressReleaseListener l) { 49 49 keyListeners.add(l); 50 50 } … … 54 54 * @param l listener to add 55 55 */ 56 public synchronizedvoid addModifierListener(ModifierListener l) {56 public void addModifierListener(ModifierListener l) { 57 57 modifierListeners.add(l); 58 58 } … … 62 62 * @param l listener to remove 63 63 */ 64 public synchronizedvoid removeKeyListener(KeyPressReleaseListener l) {64 public void removeKeyListener(KeyPressReleaseListener l) { 65 65 keyListeners.remove(l); 66 66 } … … 70 70 * @param l listener to remove 71 71 */ 72 public synchronizedvoid removeModifierListener(ModifierListener l) {72 public void removeModifierListener(ModifierListener l) { 73 73 modifierListeners.remove(l); 74 74 } … … 88 88 timer.stop(); 89 89 if (set.remove(releaseEvent.getKeyCode()) && enabled) { 90 synchronized (AdvancedKeyPressDetector.this) { 91 if (isFocusInMainWindow()) { 92 for (KeyPressReleaseListener q: keyListeners) { 93 q.doKeyReleased(releaseEvent); 94 } 90 if (isFocusInMainWindow()) { 91 for (KeyPressReleaseListener q: keyListeners) { 92 q.doKeyReleased(releaseEvent); 95 93 } 96 94 } … … 107 105 timer.stop(); 108 106 set.clear(); 109 synchronized (this) { 110 if (!keyListeners.isEmpty()) { 111 Main.warn(tr("Some of the key listeners forgot to remove themselves: {0}"), keyListeners.toString()); 112 } 113 if (!modifierListeners.isEmpty()) { 114 Main.warn(tr("Some of the key modifier listeners forgot to remove themselves: {0}"), modifierListeners.toString()); 115 } 107 if (!keyListeners.isEmpty()) { 108 Main.warn(tr("Some of the key listeners forgot to remove themselves: {0}"), keyListeners.toString()); 109 } 110 if (!modifierListeners.isEmpty()) { 111 Main.warn(tr("Some of the key modifier listeners forgot to remove themselves: {0}"), modifierListeners.toString()); 116 112 } 117 113 try { … … 130 126 timer.stop(); 131 127 } else if (set.add(e.getKeyCode()) && enabled) { 132 synchronized (this) { 133 if (isFocusInMainWindow()) { 134 for (KeyPressReleaseListener q: keyListeners) { 135 if (Main.isDebugEnabled()) { 136 Main.debug(q+" => doKeyPressed("+e+")"); 137 } 138 q.doKeyPressed(e); 128 if (isFocusInMainWindow()) { 129 for (KeyPressReleaseListener q: keyListeners) { 130 if (Main.isDebugEnabled()) { 131 Main.debug(q+" => doKeyPressed("+e+")"); 139 132 } 133 q.doKeyPressed(e); 140 134 } 141 135 } … … 145 139 timer.stop(); 146 140 if (set.remove(e.getKeyCode()) && enabled) { 147 synchronized (this) { 148 if (isFocusInMainWindow()) { 149 for (KeyPressReleaseListener q: keyListeners) { 150 if (Main.isDebugEnabled()) { 151 Main.debug(q+" => doKeyReleased("+e+")"); 152 } 153 q.doKeyReleased(e); 141 if (isFocusInMainWindow()) { 142 for (KeyPressReleaseListener q: keyListeners) { 143 if (Main.isDebugEnabled()) { 144 Main.debug(q+" => doKeyReleased("+e+")"); 154 145 } 146 q.doKeyReleased(e); 155 147 } 156 148 } … … 174 166 if (previousModifiers != modif) { 175 167 previousModifiers = modif; 176 synchronized (this) { 177 for (ModifierListener m: modifierListeners) { 178 m.modifiersChanged(modif); 179 } 168 for (ModifierListener m: modifierListeners) { 169 m.modifiersChanged(modif); 180 170 } 181 171 }
Note:
See TracChangeset
for help on using the changeset viewer.