Author: rwhitcomb
Date: Wed Dec 30 23:21:51 2020
New Revision: 1884970
URL: http://svn.apache.org/viewvc?rev=1884970&view=rev
Log:
New methods in Keyboard class.
Modified:
pivot/trunk/wtk/src/org/apache/pivot/wtk/Keyboard.java
Modified: pivot/trunk/wtk/src/org/apache/pivot/wtk/Keyboard.java
URL:
http://svn.apache.org/viewvc/pivot/trunk/wtk/src/org/apache/pivot/wtk/Keyboard.java?rev=1884970&r1=1884969&r2=1884970&view=diff
==============================================================================
--- pivot/trunk/wtk/src/org/apache/pivot/wtk/Keyboard.java (original)
+++ pivot/trunk/wtk/src/org/apache/pivot/wtk/Keyboard.java Wed Dec 30 23:21:51
2020
@@ -50,7 +50,7 @@ public final class Keyboard {
* @param modifiers The set of modifiers to test.
* @return The complete mask corresponding to the set.
*/
- public static int getCompleteMask(final Set<Modifier> modifiers) {
+ public static int getMask(final Set<Modifier> modifiers) {
int mask = 0;
for (Modifier mod : modifiers) {
mask |= mod.getMask();
@@ -59,8 +59,22 @@ public final class Keyboard {
}
/**
- * The set of all possible keyboard modifiers (for use with {@link
#isPressed}
- * or {@link #areAnyPressed}).
+ * Determine the complete mask for all the given modifiers.
+ * @param modifiers The list of modifiers to test.
+ * @return The complete mask corresponding to the list.
+ */
+ public static int getMask(final Modifier... modifiers) {
+ int mask = 0;
+ for (Modifier mod : modifiers) {
+ mask |= mod.getMask();
+ }
+ return mask;
+ }
+
+ /**
+ * The set of all possible keyboard modifiers (for use with {@link
#isPressed},
+ * or {@link Modifier#getMask(Set)}, {@link #areAllPressed(Set)}, or
+ * {@link #areAnyPressed(Set)}).
*/
public static final Set<Modifier> ALL_MODIFIERS =
EnumSet.of(Modifier.SHIFT, Modifier.CTRL, Modifier.ALT,
Modifier.META);
@@ -309,19 +323,64 @@ public final class Keyboard {
* otherwise.
*/
public static boolean isPressed(final Modifier modifier) {
- return (Keyboard.modifiers & modifier.getMask()) > 0;
+ return (modifiers & modifier.getMask()) > 0;
}
/**
* Are any of the given set of {@link Modifier}s pressed?
*
- * @param modifiers The set of modifiers to test.
+ * @param modifierSet The set of modifiers to test.
+ * @return <tt>true</tt> if any of them are pressed, <tt>false</tt>
+ * if none are pressed.
+ */
+ public static boolean areAnyPressed(final Set<Modifier> modifierSet) {
+ return (modifiers & Modifier.getMask(modifierSet)) > 0;
+ }
+
+ /**
+ * Are any of the given list of {@link Modifier}s pressed?
+ *
+ * @param modifierList The list of modifiers to test.
* @return <tt>true</tt> if any of them are pressed, <tt>false</tt>
* if none are pressed.
*/
- public static boolean areAnyPressed(final Set<Modifier> modifiers) {
- int completeMask = Modifier.getCompleteMask(modifiers);
- return (Keyboard.modifiers & completeMask) > 0;
+ public static boolean areAnyPressed(final Modifier... modifierList) {
+ return (modifiers & Modifier.getMask(modifierList)) > 0;
+ }
+
+ /**
+ * Are all of the given set of {@link Modifier}s pressed?
+ * <p> This is typically used to test two modifiers (like CTRL and SHIFT).
+ *
+ * @param modifierSet The set of modifiers to test.
+ * @return <tt>true</tt> if all of the modifiers are pressed,
<tt>false</tt>
+ * if only some or none are pressed.
+ */
+ public static boolean areAllPressed(final Set<Modifier> modifierSet) {
+ int mask = Modifier.getMask(modifierSet);
+ return (modifiers & mask) == mask;
+ }
+
+ /**
+ * Are all of the given list of {@link Modifier}s pressed?
+ * <p> This is typically used to test two modifiers (like CTRL and SHIFT).
+ *
+ * @param modifierList The list of modifiers to test.
+ * @return <tt>true</tt> if all of the modifiers are pressed,
<tt>false</tt>
+ * if only some or none are pressed.
+ */
+ public static boolean areAllPressed(final Modifier... modifierList) {
+ int mask = Modifier.getMask(modifierList);
+ return (modifiers & mask) == mask;
+ }
+
+ /**
+ * Shortcut method to test if the {@link Platform#getCommandModifier} is
pressed.
+ *
+ * @return The result of {@code isPressed(Platform.getCommandModifier())}.
+ */
+ public static boolean isCmdPressed() {
+ return isPressed(Platform.getCommandModifier());
}
/**
@@ -333,7 +392,7 @@ public final class Keyboard {
DropAction dropAction = null;
if (Platform.isOSX()) {
- if (isPressed(Modifier.ALT) && isPressed(Modifier.META)) {
+ if (areAllPressed(Modifier.ALT, Modifier.META)) {
dropAction = DropAction.LINK;
} else if (isPressed(Modifier.ALT)) {
dropAction = DropAction.COPY;
@@ -341,7 +400,7 @@ public final class Keyboard {
dropAction = DropAction.MOVE;
}
} else if (Platform.isWindows()) {
- if (isPressed(Modifier.CTRL) && isPressed(Modifier.SHIFT)) {
+ if (areAllPressed(Modifier.CTRL, Modifier.SHIFT)) {
dropAction = DropAction.LINK;
} else if (isPressed(Modifier.CTRL)) {
dropAction = DropAction.COPY;
@@ -350,7 +409,7 @@ public final class Keyboard {
}
} else {
// TODO: is this correct for Linux / Unix / ???
- if (isPressed(Modifier.CTRL) && isPressed(Modifier.SHIFT)) {
+ if (areAllPressed(Modifier.CTRL, Modifier.SHIFT)) {
dropAction = DropAction.LINK;
} else if (isPressed(Modifier.CTRL)) {
dropAction = DropAction.COPY;