X-Git-Url: https://gerrit.simantics.org/r/gitweb?a=blobdiff_plain;f=bundles%2Forg.simantics.scenegraph%2Fsrc%2Forg%2Fsimantics%2Fscenegraph%2Fg2d%2Fevents%2FMouseEvent.java;h=8070ae35821de1999da64ef0638a9081764c1827;hb=refs%2Fchanges%2F59%2F2659%2F2;hp=82843422a493d96d537d69e7d7c872d7c086bc9d;hpb=969bd23cab98a79ca9101af33334000879fb60c5;p=simantics%2Fplatform.git diff --git a/bundles/org.simantics.scenegraph/src/org/simantics/scenegraph/g2d/events/MouseEvent.java b/bundles/org.simantics.scenegraph/src/org/simantics/scenegraph/g2d/events/MouseEvent.java index 82843422a..8070ae358 100644 --- a/bundles/org.simantics.scenegraph/src/org/simantics/scenegraph/g2d/events/MouseEvent.java +++ b/bundles/org.simantics.scenegraph/src/org/simantics/scenegraph/g2d/events/MouseEvent.java @@ -1,330 +1,332 @@ -/******************************************************************************* - * Copyright (c) 2007, 2010 Association for Decentralized Information Management - * in Industry THTH ry. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * VTT Technical Research Centre of Finland - initial API and implementation - *******************************************************************************/ -/* - * - * @author Toni Kalajainen - */ -package org.simantics.scenegraph.g2d.events; - -import java.awt.datatransfer.Transferable; -import java.awt.event.InputEvent; -import java.awt.geom.Point2D; - -/** - * TODO Remove hold time - * @see Event - * @see MouseClickEvent - * @see MouseDragBegin - * - * @author Toni Kalajainen - */ -public abstract class MouseEvent extends Event { - - private static final long serialVersionUID = -2090477028406944454L; - - public static final int LEFT_BUTTON = 1; - public static final int RIGHT_BUTTON = 2; - public static final int MIDDLE_BUTTON = 3; - - /** Time for mouse press + mouse release to be interpreted as mouse click */ - public static final long CLICK_TIME = 250; - - public static final int LEFT_MASK = 1 << (LEFT_BUTTON - 1); - public static final int RIGHT_MASK = 1 << (RIGHT_BUTTON - 1); - public static final int MIDDLE_MASK = 1 << (MIDDLE_BUTTON - 1); - public static final int ALL_BUTTONS_MASK = LEFT_MASK | RIGHT_MASK | MIDDLE_MASK; - - public static final int CTRL_MASK = InputEvent.CTRL_DOWN_MASK; - public static final int ALT_MASK = InputEvent.ALT_DOWN_MASK; - public static final int ALT_GRAPH_MASK = InputEvent.ALT_GRAPH_DOWN_MASK; - public static final int SHIFT_MASK = InputEvent.SHIFT_DOWN_MASK; - public static final int ALL_MODIFIERS_MASK = CTRL_MASK | ALT_MASK | ALT_GRAPH_MASK | SHIFT_MASK; - - /** - * The identifier of the mouse of this event. - * 0 = the main mouse. - */ - public final int mouseId; - - /** Position in the coordinate system of the UI component */ - public final Point2D controlPosition; - - /** Position in the coordinate system of the screen */ - public final Point2D screenPosition; - - /** - * The status of mouse buttons - * @see #LEFT_MASK - * @see #MIDDLE_MASK - * @see #RIGHT_MASK - */ - public final int buttons; - - /** - * The state of the keyboard modifier keys at the time the event was - * generated. - * - * @see #ALT_MASK - * @see #ALT_GRAPH_MASK - * @see #CTRL_MASK - * @see #SHIFT_MASK - */ - public int stateMask; - - private MouseEvent(Object context, long time, int mouseId, int buttons, int stateMask, - Point2D controlPosition, Point2D screenPosition) { - super(context, time); - this.mouseId = mouseId; - this.buttons = buttons; - this.controlPosition = controlPosition; - this.screenPosition = screenPosition; - this.stateMask = stateMask; - } - - public boolean hasAnyButton(int mask) { - return (buttons & mask) != 0; - } - - public boolean hasAllButtons(int mask) { - return (buttons & mask) == mask; - } - - public boolean hasAnyModifier(int mask) { - return (stateMask & mask) != 0; - } - - public boolean hasAllModifiers(int mask) { - return (stateMask & mask) == mask; - } - - /** - * Returns whether or not the Shift modifier is down on this event. - */ - public boolean isShiftDown() { - return (stateMask & MouseEvent.SHIFT_MASK) != 0; - } - - /** - * Returns whether or not the Control modifier is down on this event. - */ - public boolean isControlDown() { - return (stateMask & MouseEvent.CTRL_MASK) != 0; - } - - /** - * Returns whether or not the Alt modifier is down on this event. - */ - public boolean isAltDown() { - return (stateMask & MouseEvent.ALT_MASK) != 0; - } - - /** - * Returns whether or not the Alt Graph modifier is down on this event. - */ - public boolean isAltGraphDown() { - return (stateMask & MouseEvent.ALT_GRAPH_MASK) != 0; - } - - public abstract static class MouseButtonEvent extends MouseEvent { - - private static final long serialVersionUID = 3540032494506535841L; - - /** - * button of this event - */ - public final int button; - - public MouseButtonEvent(Object context, long time, int mouseId, int buttons, int stateMask, - int button, Point2D controlPosition, Point2D screenPosition) { - super(context, time, mouseId, buttons, stateMask, controlPosition,screenPosition); - this.button = button; - } - } - - public static class MouseWheelMovedEvent extends MouseEvent { - - private static final long serialVersionUID = -7896477913481842708L; - - /** - * Constant representing scrolling by "units" (like scrolling with the - * arrow keys) - * - * @see #getScrollType - */ - public static final int WHEEL_UNIT_SCROLL = 0; - - /** - * Constant representing scrolling by a "block" (like scrolling - * with page-up, page-down keys) - * - * @see #getScrollType - */ - public static final int WHEEL_BLOCK_SCROLL = 1; - - /** - * Indicates what sort of scrolling should take place in response to this - * event, based on platform settings. Legal values are: - * - * - * @see #getScrollType - */ - public final int scrollType; - - /** - * Only valid for scrollType WHEEL_UNIT_SCROLL. - * Indicates number of units that should be scrolled per - * click of mouse wheel rotation, based on platform settings. - * - * @see #getScrollAmount - * @see #getScrollType - */ - public final int scrollAmount; - - /** - * Indicates how far the mouse wheel was rotated. - * - * @see #getWheelRotation - */ - public final int wheelRotation; - - public MouseWheelMovedEvent(Object context, long time, int mouseId, int buttons, int stateMask, - Point2D controlPosition, Point2D screenPosition, int scrollType, int scrollAmount, - int wheelRotation) { - super(context, time, mouseId, buttons, stateMask, controlPosition,screenPosition); - this.scrollType = scrollType; - this.scrollAmount = scrollAmount; - this.wheelRotation = wheelRotation; - } - - } - - public static class MouseButtonPressedEvent extends MouseButtonEvent { - - private static final long serialVersionUID = -4687294674299429690L; - - public MouseButtonPressedEvent(Object context, long time, int mouseId, int buttons, int stateMask, - int button, Point2D controlPosition, Point2D screenPosition) { - super(context, time, mouseId, buttons, stateMask, button, controlPosition,screenPosition); - } - - } - - public static class MouseButtonReleasedEvent extends MouseButtonEvent { - - private static final long serialVersionUID = -2303672225339491858L; - - /** Time in milliseconds how long the button was held down */ - public final long holdTime; - - public MouseButtonReleasedEvent(Object context, long time, - int mouseId, int buttons, int stateMask, int button, long holdTime, - Point2D controlPosition, Point2D screenPosition) { - super(context, time, mouseId, buttons, stateMask, button, controlPosition, screenPosition); - this.holdTime = holdTime; - } - } - - public static class MouseMovedEvent extends MouseEvent { - private static final long serialVersionUID = 1463958776335678155L; - - public MouseMovedEvent(Object context, long time, int mouseId, int buttons, int stateMask, - Point2D controlPosition, Point2D screenPosition) { - super(context, time, mouseId, buttons, stateMask, controlPosition, screenPosition); - } - } - - public static class MouseEnterEvent extends MouseEvent { - private static final long serialVersionUID = 6074648747865556588L; - - public MouseEnterEvent(Object context, long time, int mouseId, int buttons, int stateMask, - Point2D controlPosition, Point2D screenPosition) { - super(context, time, mouseId, buttons, stateMask, controlPosition, screenPosition); - } - } - - public static class MouseExitEvent extends MouseEvent { - private static final long serialVersionUID = 8596801599996844789L; - - public MouseExitEvent(Object context, long time, int mouseId, int buttons, int stateMask, - Point2D controlPosition, Point2D screenPosition) { - super(context, time, mouseId, buttons, stateMask, controlPosition, screenPosition); - } - } - - public static class MouseDoubleClickedEvent extends MouseButtonEvent { - private static final long serialVersionUID = -8046967155607105912L; - - public MouseDoubleClickedEvent(Object context, long time, int mouseId, int buttons, int stateMask, - int button, Point2D controlPosition, Point2D screenPosition) { - super(context, time, mouseId, buttons, stateMask, button, controlPosition, screenPosition); - } - } - - public static class MouseClickEvent extends MouseButtonEvent { - private static final long serialVersionUID = -1737712792090986607L; - /** - * Indicates the number of quick consecutive clicks of - * a mouse button. - */ - public final int clickCount; - - public MouseClickEvent(Object context, long time, int mouseId, int buttons, int stateMask, - int button, int clickCount, Point2D controlPosition, Point2D screenPosition) { - super(context, time, mouseId, buttons, stateMask, button, controlPosition, screenPosition); - this.clickCount = clickCount; - } - } - - public static class MouseDragBegin extends MouseButtonEvent { - private static final long serialVersionUID = 3882552912240236450L; - public final Point2D startCanvasPos; - public final Point2D startControlPos; - public Transferable transferable = null; - public MouseDragBegin(Object context, long time, int mouseId, int buttons, int stateMask, - int button, Point2D startCanvasPos, Point2D startControlPos, Point2D controlPosition, Point2D screenPosition) { - super(context, time, mouseId, buttons, stateMask, button, controlPosition, screenPosition); - this.startCanvasPos = startCanvasPos; - this.startControlPos = startControlPos; - } - } - - /** - * Spans button bit mask into individual button ids (starting from 1) - * @param buttons - * @return - */ - public static int[] getButtonIds(int buttons) - { - // calculate 1 bits - int size = 0; - for (int i=0; i<32; i++) - if ((buttons & (1< + *
  • WHEEL_UNIT_SCROLL + *
  • WHEEL_BLOCK_SCROLL + * + * + * @see #getScrollType + */ + public final int scrollType; + + /** + * Only valid for scrollType WHEEL_UNIT_SCROLL. + * Indicates number of units that should be scrolled per + * click of mouse wheel rotation, based on platform settings. + * + * @see #getScrollAmount + * @see #getScrollType + */ + public final int scrollAmount; + + /** + * Indicates how far the mouse wheel was rotated. + * + * @see #getWheelRotation + */ + public final int wheelRotation; + + public MouseWheelMovedEvent(Object context, long time, int mouseId, int buttons, int stateMask, + Point2D controlPosition, Point2D screenPosition, int scrollType, int scrollAmount, + int wheelRotation) { + super(context, time, mouseId, buttons, stateMask, controlPosition,screenPosition); + this.scrollType = scrollType; + this.scrollAmount = scrollAmount; + this.wheelRotation = wheelRotation; + } + + } + + public static class MouseButtonPressedEvent extends MouseButtonEvent { + + private static final long serialVersionUID = -4687294674299429690L; + + public MouseButtonPressedEvent(Object context, long time, int mouseId, int buttons, int stateMask, + int button, Point2D controlPosition, Point2D screenPosition) { + super(context, time, mouseId, buttons, stateMask, button, controlPosition,screenPosition); + } + + } + + public static class MouseButtonReleasedEvent extends MouseButtonEvent { + + private static final long serialVersionUID = -2303672225339491858L; + + /** Time in milliseconds how long the button was held down */ + public final long holdTime; + + public MouseButtonReleasedEvent(Object context, long time, + int mouseId, int buttons, int stateMask, int button, long holdTime, + Point2D controlPosition, Point2D screenPosition) { + super(context, time, mouseId, buttons, stateMask, button, controlPosition, screenPosition); + this.holdTime = holdTime; + } + } + + public static class MouseMovedEvent extends MouseEvent { + private static final long serialVersionUID = 1463958776335678155L; + + public MouseMovedEvent(Object context, long time, int mouseId, int buttons, int stateMask, + Point2D controlPosition, Point2D screenPosition) { + super(context, time, mouseId, buttons, stateMask, controlPosition, screenPosition); + } + } + + public static class MouseEnterEvent extends MouseEvent { + private static final long serialVersionUID = 6074648747865556588L; + + public MouseEnterEvent(Object context, long time, int mouseId, int buttons, int stateMask, + Point2D controlPosition, Point2D screenPosition) { + super(context, time, mouseId, buttons, stateMask, controlPosition, screenPosition); + } + } + + public static class MouseExitEvent extends MouseEvent { + private static final long serialVersionUID = 8596801599996844789L; + + public MouseExitEvent(Object context, long time, int mouseId, int buttons, int stateMask, + Point2D controlPosition, Point2D screenPosition) { + super(context, time, mouseId, buttons, stateMask, controlPosition, screenPosition); + } + } + + public static class MouseDoubleClickedEvent extends MouseButtonEvent { + private static final long serialVersionUID = -8046967155607105912L; + + public MouseDoubleClickedEvent(Object context, long time, int mouseId, int buttons, int stateMask, + int button, Point2D controlPosition, Point2D screenPosition) { + super(context, time, mouseId, buttons, stateMask, button, controlPosition, screenPosition); + } + } + + public static class MouseClickEvent extends MouseButtonEvent { + private static final long serialVersionUID = -1737712792090986607L; + /** + * Indicates the number of quick consecutive clicks of + * a mouse button. + */ + public final int clickCount; + + public MouseClickEvent(Object context, long time, int mouseId, int buttons, int stateMask, + int button, int clickCount, Point2D controlPosition, Point2D screenPosition) { + super(context, time, mouseId, buttons, stateMask, button, controlPosition, screenPosition); + this.clickCount = clickCount; + } + } + + public static class MouseDragBegin extends MouseButtonEvent { + private static final long serialVersionUID = 3882552912240236450L; + public final Point2D startCanvasPos; + public final Point2D startControlPos; + public Transferable transferable = null; + public MouseDragBegin(Object context, long time, int mouseId, int buttons, int stateMask, + int button, Point2D startCanvasPos, Point2D startControlPos, Point2D controlPosition, Point2D screenPosition) { + super(context, time, mouseId, buttons, stateMask, button, controlPosition, screenPosition); + this.startCanvasPos = startCanvasPos; + this.startControlPos = startControlPos; + } + } + + /** + * Spans button bit mask into individual button ids (starting from 1) + * @param buttons + * @return + */ + public static int[] getButtonIds(int buttons) + { + // calculate 1 bits + int size = 0; + for (int i=0; i<32; i++) + if ((buttons & (1<