import com.itmill.toolkit.terminal.gwt.client.UIDL;
/**
- * A helper class to implement keyboard shorcut handling. Keeps
- * a list of owners actions and fires actions to server. User class
- * needs to delegate keyboard events to handleKeyboardEvents function.
+ * A helper class to implement keyboard shorcut handling. Keeps a list of owners
+ * actions and fires actions to server. User class needs to delegate keyboard
+ * events to handleKeyboardEvents function.
*
* @author IT Mill ltd
*/
private ArrayList actions = new ArrayList();
private ApplicationConnection client;
private String paintableId;
-
- private ShortcutActionHandler() {}
+
+ private ShortcutActionHandler() {
+ }
+
/**
*
- * @param pid Paintable id
- * @param c reference to application connections
+ * @param pid
+ * Paintable id
+ * @param c
+ * reference to application connections
*/
public ShortcutActionHandler(String pid, ApplicationConnection c) {
paintableId = pid;
/**
* Updates list of actions this handler listens to.
*
- * @param c UIDL snippet containing actions
+ * @param c
+ * UIDL snippet containing actions
*/
public void updateActionMap(UIDL c) {
actions.clear();
Iterator it = c.getChildIterator();
- while(it.hasNext()) {
+ while (it.hasNext()) {
UIDL action = (UIDL) it.next();
-
+
int[] modifiers = null;
- if(action.hasAttribute("mk"))
+ if (action.hasAttribute("mk"))
modifiers = action.getIntArrayAttribute("mk");
-
- ShortcutKeyCombination kc = new ShortcutKeyCombination(
- action.getIntAttribute("kc"),
- modifiers);
+
+ ShortcutKeyCombination kc = new ShortcutKeyCombination(action
+ .getIntAttribute("kc"), modifiers);
String key = action.getStringAttribute("key");
String caption = action.getStringAttribute("caption");
- actions.add(new IShortcutAction(key,kc, caption));
+ actions.add(new ShortcutAction(key, kc, caption));
}
}
/**
- * This method compares given key code and modifier keys to
- * internal list of actions. If matching action is found it
- * is fired.
+ * This method compares given key code and modifier keys to internal list of
+ * actions. If matching action is found it is fired.
*
- * @param keyCode character typed
- * @param modifiers modifier keys (bitmask like in {@link KeyboardListener})
+ * @param keyCode
+ * character typed
+ * @param modifiers
+ * modifier keys (bitmask like in {@link KeyboardListener})
*/
public void handleKeyboardEvent(char keyCode, int modifiers) {
- ShortcutKeyCombination kc =
- new ShortcutKeyCombination(keyCode, modifiers);
+ ShortcutKeyCombination kc = new ShortcutKeyCombination(keyCode,
+ modifiers);
Iterator it = actions.iterator();
- while(it.hasNext()) {
- IShortcutAction a = (IShortcutAction) it.next();
- if(a.getShortcutCombination().equals(kc)) {
+ while (it.hasNext()) {
+ ShortcutAction a = (ShortcutAction) it.next();
+ if (a.getShortcutCombination().equals(kc)) {
client.updateVariable(paintableId, "action", a.getKey(), true);
break;
}
}
}
-
+
}
class ShortcutKeyCombination {
-
+
public static final int SHIFT = 16;
public static final int CTRL = 17;
public static final int ALT = 18;
-
-
-
+
char keyCode = 0;
private int modifiersMask;
-
+
public ShortcutKeyCombination() {
}
-
+
ShortcutKeyCombination(char kc, int modifierMask) {
keyCode = kc;
this.modifiersMask = modifierMask;
}
-
+
ShortcutKeyCombination(int kc, int[] modifiers) {
keyCode = (char) kc;
keyCode = Character.toUpperCase(keyCode);
-
+
this.modifiersMask = 0;
- if(modifiers != null) {
+ if (modifiers != null) {
for (int i = 0; i < modifiers.length; i++) {
switch (modifiers[i]) {
case ALT:
- modifiersMask = modifiersMask | KeyboardListener.MODIFIER_ALT;
+ modifiersMask = modifiersMask
+ | KeyboardListener.MODIFIER_ALT;
break;
case CTRL:
- modifiersMask = modifiersMask | KeyboardListener.MODIFIER_CTRL;
+ modifiersMask = modifiersMask
+ | KeyboardListener.MODIFIER_CTRL;
break;
case SHIFT:
- modifiersMask = modifiersMask | KeyboardListener.MODIFIER_SHIFT;
+ modifiersMask = modifiersMask
+ | KeyboardListener.MODIFIER_SHIFT;
break;
default:
break;
}
}
}
-
+
public boolean equals(ShortcutKeyCombination other) {
- if( this.keyCode == other.keyCode &&
- this.modifiersMask == other.modifiersMask)
+ if (this.keyCode == other.keyCode
+ && this.modifiersMask == other.modifiersMask)
return true;
return false;
}
}
-class IShortcutAction {
+class ShortcutAction {
private ShortcutKeyCombination sc;
private String caption;
private String key;
- public IShortcutAction(String key, ShortcutKeyCombination sc, String caption) {
+ public ShortcutAction(String key, ShortcutKeyCombination sc, String caption) {
this.sc = sc;
this.key = key;
this.caption = caption;
}
-
+
public ShortcutKeyCombination getShortcutCombination() {
return sc;
}
-
+
public String getCaption() {
return caption;
}
-
+
public String getKey() {
return key;
}
}
-