X-Git-Url: https://gerrit.simantics.org/r/gitweb?a=blobdiff_plain;f=bundles%2Forg.simantics.g2d%2Fsrc%2Forg%2Fsimantics%2Fg2d%2Fevent%2Fadapter%2FSWTMouseEventAdapter.java;h=1da7fe6472ee78af0900d84d64f85ba3a9e5d312;hb=refs%2Fchanges%2F59%2F2659%2F2;hp=4a50d9767958ae19174d19abcae57986837f702e;hpb=969bd23cab98a79ca9101af33334000879fb60c5;p=simantics%2Fplatform.git diff --git a/bundles/org.simantics.g2d/src/org/simantics/g2d/event/adapter/SWTMouseEventAdapter.java b/bundles/org.simantics.g2d/src/org/simantics/g2d/event/adapter/SWTMouseEventAdapter.java index 4a50d9767..1da7fe647 100644 --- a/bundles/org.simantics.g2d/src/org/simantics/g2d/event/adapter/SWTMouseEventAdapter.java +++ b/bundles/org.simantics.g2d/src/org/simantics/g2d/event/adapter/SWTMouseEventAdapter.java @@ -1,174 +1,175 @@ -/******************************************************************************* - * 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.g2d.event.adapter; - -import java.awt.geom.Point2D; - -import org.eclipse.swt.events.MouseEvent; -import org.eclipse.swt.events.MouseListener; -import org.eclipse.swt.events.MouseMoveListener; -import org.eclipse.swt.events.MouseTrackListener; -import org.eclipse.swt.events.MouseWheelListener; -import org.eclipse.swt.graphics.Point; -import org.simantics.scenegraph.g2d.events.EventDebugPolicy; -import org.simantics.scenegraph.g2d.events.IEventHandler; -import org.simantics.scenegraph.g2d.events.IEventQueue; -import org.simantics.scenegraph.g2d.events.MouseEvent.MouseButtonPressedEvent; -import org.simantics.scenegraph.g2d.events.MouseEvent.MouseButtonReleasedEvent; -import org.simantics.scenegraph.g2d.events.MouseEvent.MouseDoubleClickedEvent; -import org.simantics.scenegraph.g2d.events.MouseEvent.MouseEnterEvent; -import org.simantics.scenegraph.g2d.events.MouseEvent.MouseExitEvent; -import org.simantics.scenegraph.g2d.events.MouseEvent.MouseMovedEvent; -import org.simantics.scenegraph.g2d.events.MouseEvent.MouseWheelMovedEvent; -import org.simantics.scenegraph.g2d.events.adapter.AbstractEventAdapter; - -public class SWTMouseEventAdapter extends AbstractEventAdapter implements MouseListener, MouseMoveListener, MouseTrackListener, MouseWheelListener { - - /** Mouse id of the default mouse */ - public static final int MOUSE_ID = 0; - - private long [] pressTime = new long[5]; - - int buttonStatus = 0; - - /** - * create new adapter - * @param sender the sender field in the events - * @param delegator the target of the adapted events - */ - public SWTMouseEventAdapter(Object sender, IEventHandler delegator) { - super(sender, delegator); - } - - /** - * create new adapter - * @param sender the sender field in the events - * @param queue - */ - public SWTMouseEventAdapter(Object sender, IEventQueue queue) { - super(sender, queue); - } - - private Point2D getControlPosition(MouseEvent e) - { - return new Point2D.Double(e.x, e.y); - } - - private Point2D getScreenPosition(MouseEvent e) - { - Point p = e.display.getCursorLocation(); - return new Point2D.Double(p.x, p.y); - - } - - private int getMouseButton(MouseEvent e) - { - switch (e.button) { - case 1: return 1; // LEFT - case 2: return 3; // RIGHT - case 3: return 2; // MIDDLE - case 4: return 4; // BUTTON4 - case 5: return 5; // BUTTON5 - } - return e.button; - } - - static private int getStateMask(MouseEvent e) { - return SWTKeyEventAdapter.adaptSWTModifierToAWTModifier(e.stateMask); - } - - @Override - public void mouseDoubleClick(MouseEvent e) { - if (EventDebugPolicy.SWT_MOUSE_EVENT_ADAPTION) - System.out.println("SWT mouse double clicked: " + e); - handleEvent(new MouseDoubleClickedEvent( - sender, e.time & 0xffffffff, MOUSE_ID, buttonStatus, getStateMask(e), getMouseButton(e), getControlPosition(e), getScreenPosition(e) - )); - } - - @Override - public void mouseDown(MouseEvent e) { - if (EventDebugPolicy.SWT_MOUSE_EVENT_ADAPTION) - System.out.println("SWT mouse down: " + e); - buttonStatus |= 1 << e.button; - if (e.button<=pressTime.length) pressTime[e.button-1] = e.time & 0xffffffff; - handleEvent(new MouseButtonPressedEvent( - sender, e.time & 0xffffffff, MOUSE_ID, buttonStatus, getStateMask(e), getMouseButton(e), getControlPosition(e), getScreenPosition(e) - )); - } - - @Override - public void mouseUp(MouseEvent e) { - if (EventDebugPolicy.SWT_MOUSE_EVENT_ADAPTION) - System.out.println("SWT mouse up: " + e); - buttonStatus &=~ (1<