Author: rwhitcomb Date: Thu Feb 25 16:56:55 2021 New Revision: 1886926 URL: http://svn.apache.org/viewvc?rev=1886926&view=rev Log: Refactor Keyboard a little bit and add "arePressed" methods.
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=1886926&r1=1886925&r2=1886926&view=diff ============================================================================== --- pivot/trunk/wtk/src/org/apache/pivot/wtk/Keyboard.java (original) +++ pivot/trunk/wtk/src/org/apache/pivot/wtk/Keyboard.java Thu Feb 25 16:56:55 2021 @@ -301,18 +301,21 @@ public final class Keyboard { public static final int UNDEFINED = KeyEvent.VK_UNDEFINED; } - private static int modifiers = 0; + /** + * The current set of pressed modifier keys. + */ + private static int currentModifiers = 0; /** * @return A bitfield representing the keyboard modifiers that are currently * pressed. */ public static int getModifiers() { - return modifiers; + return currentModifiers; } protected static void setModifiers(final int modifiers) { - Keyboard.modifiers = modifiers; + currentModifiers = modifiers; } /** @@ -323,7 +326,29 @@ public final class Keyboard { * otherwise. */ public static boolean isPressed(final Modifier modifier) { - return (modifiers & modifier.getMask()) > 0; + return (currentModifiers & modifier.getMask()) > 0; + } + + /** + * Test to see if and only if the given set of modifier(s) are pressed. + * + * @param modifierSet The set of modifiers to test. + * @return {@code true} if only those modifiers (and no others) + * are pressed. + */ + public static boolean arePressed(final Set<Modifier> modifierSet) { + return currentModifiers == Modifier.getMask(modifierSet); + } + + /** + * Test to see if and only if the given modifier(s) are pressed. + * + * @param modifiers The modifiers to test. + * @return {@code true} if only those modifiers (and no others) + * are pressed. + */ + public static boolean arePressed(final Modifier... modifiers) { + return currentModifiers == Modifier.getMask(modifiers); } /** @@ -334,18 +359,18 @@ public final class Keyboard { * if none are pressed. */ public static boolean areAnyPressed(final Set<Modifier> modifierSet) { - return (modifiers & Modifier.getMask(modifierSet)) > 0; + return (currentModifiers & Modifier.getMask(modifierSet)) > 0; } /** * Are any of the given list of {@link Modifier}s pressed? * - * @param modifierList The list of modifiers to test. + * @param modifiers The modifiers to test. * @return {@code true} if any of them are pressed, {@code false} * if none are pressed. */ - public static boolean areAnyPressed(final Modifier... modifierList) { - return (modifiers & Modifier.getMask(modifierList)) > 0; + public static boolean areAnyPressed(final Modifier... modifiers { + return (currentModifiers & Modifier.getMask(modifiers)) > 0; } /** @@ -358,20 +383,20 @@ public final class Keyboard { */ public static boolean areAllPressed(final Set<Modifier> modifierSet) { int mask = Modifier.getMask(modifierSet); - return (modifiers & mask) == mask; + return (currentModifiers & 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. + * @param modifiers The modifiers to test. * @return {@code true} if all of the modifiers are pressed, {@code false} * if only some or none are pressed. */ - public static boolean areAllPressed(final Modifier... modifierList) { - int mask = Modifier.getMask(modifierList); - return (modifiers & mask) == mask; + public static boolean areAllPressed(final Modifier... modifiers) { + int mask = Modifier.getMask(modifiers); + return (currentModifiers & mask) == mask; } /** @@ -392,26 +417,26 @@ public final class Keyboard { DropAction dropAction = null; if (Platform.isOSX()) { - if (areAllPressed(Modifier.ALT, Modifier.META)) { + if (arePressed(Modifier.ALT, Modifier.META)) { dropAction = DropAction.LINK; - } else if (isPressed(Modifier.ALT)) { + } else if (arePressed(Modifier.ALT)) { dropAction = DropAction.COPY; } else { dropAction = DropAction.MOVE; } } else if (Platform.isWindows()) { - if (areAllPressed(Modifier.CTRL, Modifier.SHIFT)) { + if (arePressed(Modifier.CTRL, Modifier.SHIFT)) { dropAction = DropAction.LINK; - } else if (isPressed(Modifier.CTRL)) { + } else if (arePressed(Modifier.CTRL)) { dropAction = DropAction.COPY; } else { dropAction = DropAction.MOVE; } } else { // TODO: is this correct for Linux / Unix / ??? - if (areAllPressed(Modifier.CTRL, Modifier.SHIFT)) { + if (arePressed(Modifier.CTRL, Modifier.SHIFT)) { dropAction = DropAction.LINK; - } else if (isPressed(Modifier.CTRL)) { + } else if (arePressed(Modifier.CTRL)) { dropAction = DropAction.COPY; } else { dropAction = DropAction.MOVE;