+
+ /**
+ * Answers true if the mouse event has Meta-down (Command key on Mac) or
+ * Ctrl-down (on other o/s). Note this answers _false_ if the Ctrl key is
+ * pressed instead of the Meta/Cmd key on Mac. To test for Ctrl-pressed on Mac,
+ * you can use e.isPopupTrigger().
+ *
+ * @param e
+ * @return
+ */
+ public static boolean isControlDown(MouseEvent e)
+ {
+ return isControlDown(e, isMac());
+ }
+
+ /**
+ * Overloaded version of method (to allow unit testing)
+ *
+ * @param e
+ * @param aMac
+ * @return
+ */
+ protected static boolean isControlDown(MouseEvent e, boolean aMac)
+ {
+ if (!aMac) {
+ return e.isControlDown();
+ }
+ // answer false for right mouse button
+ // shortcut key will be META for a Mac
+ return !e.isPopupTrigger()
+ && (Toolkit.getDefaultToolkit().getMenuShortcutKeyMask() & e.getModifiers()) != 0;
+ // could we use e.isMetaDown() here?
+ }
+
+ /**
+ * Windows (not Mac, Linux, or Unix) and right button
+ * to test for the right-mouse pressed event in Windows
+ * that would have opened a menu or a Mac.
+ *
+ * @param e
+ * @return
+ */
+ public static boolean isWinRightButton(MouseEvent e)
+ {
+ // was !isAMac(), but that is true also for Linux and Unix and JS,
+
+ return isWin() && SwingUtilities.isRightMouseButton(e);
+ }
+
+
+ /**
+ * Windows (not Mac, Linux, or Unix) and middle button -- for mouse wheeling
+ * without pressing the button.
+ *
+ * @param e
+ * @return
+ */
+ public static boolean isWinMiddleButton(MouseEvent e)
+ {
+ // was !isAMac(), but that is true also for Linux and Unix and JS
+ return isWin() && SwingUtilities.isMiddleMouseButton(e);
+ }