private int getMask(final InputEvent e) {
    final int modifiers = e.getModifiers();
    final int modifiersEx = e.getModifiersEx();
    int mask = modifiersEx;

    /*
     * For scrolling AWT uses the SHIFT_DOWN_MASK to indicate horizontal scrolling.
     * We keep track of whether the SHIFT key was actually pressed for disambiguation.
     */
    if (shiftPressed) mask |= InputEvent.SHIFT_DOWN_MASK;
    else mask &= ~InputEvent.SHIFT_DOWN_MASK;

    /*
     * On OS X AWT sets the META_DOWN_MASK to for right clicks. We keep
     * track of whether the META key was actually pressed for
     * disambiguation.
     */
    if (metaPressed) mask |= InputEvent.META_DOWN_MASK;
    else mask &= ~InputEvent.META_DOWN_MASK;

    /*
     * We add the button modifiers to modifiersEx such that the
     * XXX_DOWN_MASK can be used as the canonical flag. E.g. we adapt
     * modifiersEx such that BUTTON1_DOWN_MASK is also present in
     * mouseClicked() when BUTTON1 was clicked (although the button is no
     * longer down at this point).
     *
     * ...but only if its not a MouseWheelEvent because OS X sets button
     * modifiers if ALT or META modifiers are pressed.
     */
    if (!(e instanceof MouseWheelEvent)) {
      if ((modifiers & InputEvent.BUTTON1_MASK) != 0) mask |= InputEvent.BUTTON1_DOWN_MASK;
      if ((modifiers & InputEvent.BUTTON2_MASK) != 0) mask |= InputEvent.BUTTON2_DOWN_MASK;
      if ((modifiers & InputEvent.BUTTON3_MASK) != 0) mask |= InputEvent.BUTTON3_DOWN_MASK;
    }

    /*
     * On OS X AWT sets the BUTTON3_DOWN_MASK for meta+left clicks. Fix
     * that.
     */
    if (modifiers == OSX_META_LEFT_CLICK) mask &= ~InputEvent.BUTTON3_DOWN_MASK;

    /*
     * On OS X AWT sets the BUTTON2_DOWN_MASK for alt+left clicks. Fix
     * that.
     */
    if (modifiers == OSX_ALT_LEFT_CLICK) mask &= ~InputEvent.BUTTON2_DOWN_MASK;

    /*
     * On OS X AWT sets the BUTTON2_DOWN_MASK for alt+right clicks. Fix
     * that.
     */
    if (modifiers == OSX_ALT_RIGHT_CLICK) mask &= ~InputEvent.BUTTON2_DOWN_MASK;

    /*
     * Deal with double-clicks.
     */

    if (e instanceof MouseEvent && ((MouseEvent) e).getClickCount() > 1)
      mask |= InputTrigger.DOUBLE_CLICK_MASK; // mouse
    else if (e instanceof KeyEvent) {
      // double-click on keys.
      if ((e.getWhen() - timeKeyDown) < DOUBLE_CLICK_INTERVAL)
        mask |= InputTrigger.DOUBLE_CLICK_MASK;
      else timeKeyDown = e.getWhen();
    }

    if (e instanceof MouseWheelEvent) mask |= InputTrigger.SCROLL_MASK;

    return mask;
  }
示例#2
0
 /**
  * Returns true if the system's shortcut key was pressed.
  *
  * @param e input event
  * @return result of check
  */
 public static boolean sc(final InputEvent e) {
   return (SC & e.getModifiers()) == SC;
 }
示例#3
0
 /**
  * Indicates if a given mouse button is being pressed.
  *
  * @param e the InputEvent to check
  * @param button the mouse button to look for
  * @return true if the button is being pressed, false otherwise
  * @see prefuse.controls.Control
  */
 public static boolean isButtonPressed(InputEvent e, int button) {
   return (e.getModifiers() & button) == button;
 }