26
27
28 import java.awt.event.InputEvent;
29 import java.awt.event.KeyEvent;
30 import java.util.ArrayList;
31 import java.util.HashMap;
32 import java.util.List;
33 import java.util.Map;
34 import org.jemmy.JemmyException;
35 import org.jemmy.interfaces.Keyboard.KeyboardButton;
36 import org.jemmy.interfaces.Keyboard.KeyboardButtons;
37 import org.jemmy.interfaces.Keyboard.KeyboardModifiers;
38 import org.jemmy.interfaces.Modifier;
39 import org.jemmy.interfaces.Mouse.MouseButton;
40 import org.jemmy.interfaces.Mouse.MouseButtons;
41 import org.jemmy.interfaces.Mouse.MouseModifiers;
42
43
44 /**
45 * Converts
46 * @author Alexander Kouznetsov <mrkam@mail.ru>
47 */
48 public class AWTMap {
49
50 private static Map<Integer, KeyboardButton> int2key = new HashMap<Integer, KeyboardButton>();
51 private static Map<Integer, Modifier> int2modifier = new HashMap<Integer, Modifier>();
52 private static Map<Integer, MouseButton> int2button = new HashMap<Integer, MouseButton>();
53 private static Map<KeyboardButton, Integer> key2int = new HashMap<KeyboardButton, Integer>();
54 private static Map<Modifier, Integer> modifier2int = new HashMap<Modifier, Integer>();
55 private static Map<MouseButton, Integer> button2int = new HashMap<MouseButton, Integer>();
56
57 static {
58 for (KeyboardButtons button : KeyboardButtons.values()) {
59 String name = button.name();
60 try {
61 int key = KeyEvent.VK_UNDEFINED;
62 if (name.length() == 2 && name.startsWith("D")) {
63 // digit
64 key = KeyEvent.class.getDeclaredField("VK_" + name.substring(1)).getInt(null);
65 } else {
66 key = KeyEvent.class.getDeclaredField("VK_" + name).getInt(null);
112 for (MouseButtons button : MouseButtons.values()) {
113 String name = button.name();
114 try {
115 int key = InputEvent.class.getDeclaredField(name + "_MASK").getInt(null);
116 int2button.put(key, button);
117 button2int.put(button, key);
118 } catch (NoSuchFieldException ex) {
119 throw new JemmyException("Unable to recognize button", ex, button);
120 } catch (SecurityException ex) {
121 throw new JemmyException("Unable to recognize button", ex, button);
122 } catch (IllegalArgumentException ex) {
123 throw new JemmyException("Unable to recognize button", ex, button);
124 } catch (IllegalAccessException ex) {
125 throw new JemmyException("Unable to recognize button", ex, button);
126 }
127 }
128 }
129
130 /**
131 * TODO Provide javadoc
132 * @param button
133 * @return One of InputEvent.VK_* constants
134 * @see InputEvent
135 */
136 public int convert(KeyboardButton button) {
137 try {
138 return key2int.get(button);
139 } catch(Exception e) {
140 throw new JemmyException("Unable to recognize key", e, button);
141 }
142 }
143
144 /**
145 * TODO Provide javadoc
146 * @param modifiers
147 * @return
148 */
149 public int convert(Modifier... modifiers) {
150 int result = 0;
151 for (Modifier modifier : modifiers) {
152 try {
153 result |= modifier2int.get(modifier);
154 } catch (Exception e) {
155 throw new JemmyException("Unable to recognize modifier", e, modifier);
156 }
157 }
158 return result;
159 }
160
161 /**
162 * TODO Provide javadoc
163 * @param button
164 * @return
165 */
166 public int convert(MouseButton button) {
167 try {
168 return button2int.get(button);
169 } catch (Exception e) {
170 throw new JemmyException("Unable to recognize mouse button", e, button);
171 }
172 }
173
174 /**
175 * TODO Provide javadoc
176 * @param key
177 * @return
178 */
179 public KeyboardButton convertKeyboardButton(int key) {
180 KeyboardButton res = int2key.get(key);
181 if (res == null) {
182 throw new JemmyException("Unable to recognize key", key);
183 }
184 return res;
185 }
186
187 /**
188 * TODO Provide javadoc
189 * @param modifiers
190 * @return
191 */
192 public Modifier[] convertModifiers(int modifiers) {
193 List<Modifier> result = new ArrayList<Modifier>();
194 for (int key : int2modifier.keySet()) {
195 if ((key & modifiers) != 0) {
196 Modifier res = int2modifier.get(key);
197 if (res == null) {
198 throw new JemmyException("Unable to recognize modifiers", modifiers);
199 }
200 result.add(res);
201 }
202 }
203 return result.toArray(new Modifier[result.size()]);
204 }
205
206 /**
207 * TODO Provide javadoc
208 * @param button
209 * @return
210 */
211 public MouseButton convertMouseButton(int button) {
212 MouseButton res = int2button.get(button);
213 if (res == null) {
214 throw new JemmyException("Unable to recognize mouse button", button);
215 }
216 return res;
217 }
218 }
|
26
27
28 import java.awt.event.InputEvent;
29 import java.awt.event.KeyEvent;
30 import java.util.ArrayList;
31 import java.util.HashMap;
32 import java.util.List;
33 import java.util.Map;
34 import org.jemmy.JemmyException;
35 import org.jemmy.interfaces.Keyboard.KeyboardButton;
36 import org.jemmy.interfaces.Keyboard.KeyboardButtons;
37 import org.jemmy.interfaces.Keyboard.KeyboardModifiers;
38 import org.jemmy.interfaces.Modifier;
39 import org.jemmy.interfaces.Mouse.MouseButton;
40 import org.jemmy.interfaces.Mouse.MouseButtons;
41 import org.jemmy.interfaces.Mouse.MouseModifiers;
42
43
44 /**
45 * Converts
46 * @author mrkam
47 */
48 public class AWTMap {
49
50 private static Map<Integer, KeyboardButton> int2key = new HashMap<Integer, KeyboardButton>();
51 private static Map<Integer, Modifier> int2modifier = new HashMap<Integer, Modifier>();
52 private static Map<Integer, MouseButton> int2button = new HashMap<Integer, MouseButton>();
53 private static Map<KeyboardButton, Integer> key2int = new HashMap<KeyboardButton, Integer>();
54 private static Map<Modifier, Integer> modifier2int = new HashMap<Modifier, Integer>();
55 private static Map<MouseButton, Integer> button2int = new HashMap<MouseButton, Integer>();
56
57 static {
58 for (KeyboardButtons button : KeyboardButtons.values()) {
59 String name = button.name();
60 try {
61 int key = KeyEvent.VK_UNDEFINED;
62 if (name.length() == 2 && name.startsWith("D")) {
63 // digit
64 key = KeyEvent.class.getDeclaredField("VK_" + name.substring(1)).getInt(null);
65 } else {
66 key = KeyEvent.class.getDeclaredField("VK_" + name).getInt(null);
112 for (MouseButtons button : MouseButtons.values()) {
113 String name = button.name();
114 try {
115 int key = InputEvent.class.getDeclaredField(name + "_MASK").getInt(null);
116 int2button.put(key, button);
117 button2int.put(button, key);
118 } catch (NoSuchFieldException ex) {
119 throw new JemmyException("Unable to recognize button", ex, button);
120 } catch (SecurityException ex) {
121 throw new JemmyException("Unable to recognize button", ex, button);
122 } catch (IllegalArgumentException ex) {
123 throw new JemmyException("Unable to recognize button", ex, button);
124 } catch (IllegalAccessException ex) {
125 throw new JemmyException("Unable to recognize button", ex, button);
126 }
127 }
128 }
129
130 /**
131 * TODO Provide javadoc
132 * @param button todo document
133 * @return One of InputEvent.VK_* constants
134 * @see InputEvent
135 */
136 public int convert(KeyboardButton button) {
137 try {
138 return key2int.get(button);
139 } catch(Exception e) {
140 throw new JemmyException("Unable to recognize key", e, button);
141 }
142 }
143
144 public int convert(Modifier... modifiers) {
145 int result = 0;
146 for (Modifier modifier : modifiers) {
147 try {
148 result |= modifier2int.get(modifier);
149 } catch (Exception e) {
150 throw new JemmyException("Unable to recognize modifier", e, modifier);
151 }
152 }
153 return result;
154 }
155
156 public int convert(MouseButton button) {
157 try {
158 return button2int.get(button);
159 } catch (Exception e) {
160 throw new JemmyException("Unable to recognize mouse button", e, button);
161 }
162 }
163
164 public KeyboardButton convertKeyboardButton(int key) {
165 KeyboardButton res = int2key.get(key);
166 if (res == null) {
167 throw new JemmyException("Unable to recognize key", key);
168 }
169 return res;
170 }
171
172 public Modifier[] convertModifiers(int modifiers) {
173 List<Modifier> result = new ArrayList<Modifier>();
174 for (int key : int2modifier.keySet()) {
175 if ((key & modifiers) != 0) {
176 Modifier res = int2modifier.get(key);
177 if (res == null) {
178 throw new JemmyException("Unable to recognize modifiers", modifiers);
179 }
180 result.add(res);
181 }
182 }
183 return result.toArray(new Modifier[result.size()]);
184 }
185
186 public MouseButton convertMouseButton(int button) {
187 MouseButton res = int2button.get(button);
188 if (res == null) {
189 throw new JemmyException("Unable to recognize mouse button", button);
190 }
191 return res;
192 }
193 }
|