*/
package org.simantics.scenegraph.g2d.events.adapter;
+import java.awt.Component;
+import java.awt.dnd.DnDConstants;
+import java.awt.dnd.DragGestureEvent;
+import java.awt.dnd.DragGestureListener;
+import java.awt.dnd.DragSource;
import java.awt.event.InputEvent;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.event.MouseWheelEvent;
import java.awt.event.MouseWheelListener;
import java.awt.geom.Point2D;
+import java.util.function.UnaryOperator;
import org.simantics.scenegraph.g2d.events.EventDebugPolicy;
import org.simantics.scenegraph.g2d.events.IEventHandler;
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.MouseDragBegin;
import org.simantics.scenegraph.g2d.events.MouseEvent.MouseEnterEvent;
import org.simantics.scenegraph.g2d.events.MouseEvent.MouseExitEvent;
import org.simantics.scenegraph.g2d.events.MouseEvent.MouseMovedEvent;
System.out.println("AWT mouse clicked: " + e);
}
+ public void initDragGestureListener(Component rootPane, UnaryOperator<Point2D> controlToCanvas) {
+ final DragSource ds = new DragSource();
+ DragGestureListener dgl = new DragGestureListener() {
+ @Override
+ public void dragGestureRecognized(DragGestureEvent dge) {
+ InputEvent ie = dge.getTriggerEvent();
+ if (ie instanceof java.awt.event.MouseEvent) {
+ java.awt.event.MouseEvent e = (java.awt.event.MouseEvent) ie;
+ Point2D controlPos = getControlPosition(e);
+ Point2D canvasPos = controlToCanvas.apply(controlPos);
+
+ MouseDragBegin event = new MouseDragBegin(this,
+ e.getWhen(), 0,
+ getButtonStatus(e),
+ getStateMask(e),
+ getMouseButton(e),
+ canvasPos,
+ controlPos,
+ controlPos,
+ getScreenPosition(e));
+
+ handleEvent(event);
+
+ if (event.transferable != null) {
+ ds.startDrag(dge, null, event.transferable, null);
+ }
+ }
+ }
+ };
+ ds.createDefaultDragGestureRecognizer(
+ rootPane,
+ DnDConstants.ACTION_COPY_OR_MOVE | DnDConstants.ACTION_LINK,
+ dgl);
+ }
}