summaryrefslogtreecommitdiffstats
path: root/server/src/com/vaadin/event
diff options
context:
space:
mode:
authorpatrik <patrik@vaadin.com>2015-08-06 14:08:38 +0300
committerVaadin Code Review <review@vaadin.com>2015-08-28 07:22:24 +0000
commit1d36db6d112c818a9c75e7cd10eb6b3519119406 (patch)
tree107d6b67a75216dc5adca0833d90049751807fd3 /server/src/com/vaadin/event
parentc6622ac5cbf4ddbcec35e02f92f74cf46d147e71 (diff)
downloadvaadin-framework-1d36db6d112c818a9c75e7cd10eb6b3519119406.tar.gz
vaadin-framework-1d36db6d112c818a9c75e7cd10eb6b3519119406.zip
Add better keyboard Close Shortcut API for Window (#17383)
Change-Id: I29c7d288fe35f6801cf3576ba06751adce821340
Diffstat (limited to 'server/src/com/vaadin/event')
-rw-r--r--server/src/com/vaadin/event/ShortcutAction.java30
1 files changed, 24 insertions, 6 deletions
diff --git a/server/src/com/vaadin/event/ShortcutAction.java b/server/src/com/vaadin/event/ShortcutAction.java
index 09accae1c7..dd511c23c0 100644
--- a/server/src/com/vaadin/event/ShortcutAction.java
+++ b/server/src/com/vaadin/event/ShortcutAction.java
@@ -17,6 +17,7 @@
package com.vaadin.event;
import java.io.Serializable;
+import java.util.Arrays;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
@@ -55,7 +56,7 @@ public class ShortcutAction extends Action {
private final int keyCode;
- private final int[] modifiers;
+ private int[] modifiers;
/**
* Creates a shortcut that reacts to the given {@link KeyCode} and
@@ -73,7 +74,7 @@ public class ShortcutAction extends Action {
public ShortcutAction(String caption, int kc, int... m) {
super(caption);
keyCode = kc;
- modifiers = m;
+ setModifiers(m);
}
/**
@@ -94,7 +95,7 @@ public class ShortcutAction extends Action {
public ShortcutAction(String caption, Resource icon, int kc, int... m) {
super(caption, icon);
keyCode = kc;
- modifiers = m;
+ setModifiers(m);
}
/**
@@ -190,7 +191,7 @@ public class ShortcutAction extends Action {
// Given modifiers override this indicated in the caption
if (modifierKeys != null) {
- modifiers = modifierKeys;
+ setModifiers(modifierKeys);
} else {
// Read modifiers from caption
int[] mod = new int[match.length() - 1];
@@ -208,13 +209,30 @@ public class ShortcutAction extends Action {
break;
}
}
- modifiers = mod;
+ setModifiers(mod);
}
} else {
keyCode = -1;
- modifiers = modifierKeys;
+ setModifiers(modifierKeys);
}
+
+ }
+
+ /**
+ * When setting modifiers, make sure that modifiers is a valid array AND
+ * that it's sorted.
+ *
+ * @param modifiers
+ * the modifier keys for this shortcut
+ */
+ private void setModifiers(int... modifiers) {
+ if (modifiers == null) {
+ this.modifiers = new int[0];
+ } else {
+ this.modifiers = modifiers;
+ }
+ Arrays.sort(this.modifiers);
}
/**