]> gerrit.simantics Code Review - simantics/platform.git/blobdiff - bundles/org.simantics.diagram/src/org/simantics/diagram/participant/PointerInteractor2.java
Fixed all line endings of the repository
[simantics/platform.git] / bundles / org.simantics.diagram / src / org / simantics / diagram / participant / PointerInteractor2.java
index 64b3647aecc8d5ac47942f98c6c698db38081f15..832e9aba98d26176f4c764e8a7a43a6a2ce9d92c 100644 (file)
-/*******************************************************************************\r
- * Copyright (c) 2007, 2010 Association for Decentralized Information Management\r
- * in Industry THTH ry.\r
- * All rights reserved. This program and the accompanying materials\r
- * are made available under the terms of the Eclipse Public License v1.0\r
- * which accompanies this distribution, and is available at\r
- * http://www.eclipse.org/legal/epl-v10.html\r
- *\r
- * Contributors:\r
- *     VTT Technical Research Centre of Finland - initial API and implementation\r
- *******************************************************************************/\r
-package org.simantics.diagram.participant;\r
-\r
-import java.awt.geom.Point2D;\r
-import java.util.List;\r
-import java.util.Set;\r
-\r
-import org.simantics.g2d.canvas.Hints;\r
-import org.simantics.g2d.canvas.ICanvasParticipant;\r
-import org.simantics.g2d.canvas.IToolMode;\r
-import org.simantics.g2d.diagram.DiagramHints;\r
-import org.simantics.g2d.diagram.participant.pointertool.PointerInteractor;\r
-import org.simantics.g2d.diagram.participant.pointertool.TerminalUtil;\r
-import org.simantics.g2d.diagram.participant.pointertool.TerminalUtil.TerminalInfo;\r
-import org.simantics.g2d.element.ElementClassProviders;\r
-import org.simantics.g2d.element.IElement;\r
-import org.simantics.g2d.element.IElementClassProvider;\r
-import org.simantics.scenegraph.g2d.events.MouseEvent;\r
-import org.simantics.scenegraph.g2d.snap.ISnapAdvisor;\r
-\r
-/**\r
- * Adds support for drawing connections through {@link ConnectTool2} and\r
- * {@link RouteGraphConnectTool} to {@link PointerInteractor}.\r
- * \r
- * @author Tuukka Lehtonen\r
- */\r
-public class PointerInteractor2 extends PointerInteractor {\r
-\r
-    public PointerInteractor2() {\r
-        this(true, true, true, false, true, false, ElementClassProviders.staticProvider(null));\r
-    }\r
-\r
-    public PointerInteractor2(boolean clickSelect, boolean boxSelect, boolean dragElement, boolean dndDragElement, boolean connect, IElementClassProvider newConnectionClassProvider) {\r
-        this(clickSelect, boxSelect, dragElement, dndDragElement, connect, false, newConnectionClassProvider);\r
-    }\r
-\r
-    public PointerInteractor2(boolean clickSelect, boolean boxSelect, boolean dragElement, boolean dndDragElement, boolean connect, boolean doubleClickEdit, IElementClassProvider newConnectionClassProvider) {\r
-        super(clickSelect, boxSelect, dragElement, dndDragElement, connect, doubleClickEdit, newConnectionClassProvider, null); \r
-    }\r
-\r
-    @Override\r
-    protected ICanvasParticipant createConnectTool(TerminalInfo ti, int mouseId, Point2D startCanvasPos) {\r
-        return new ConnectTool2(ti, mouseId, startCanvasPos);\r
-    }\r
-\r
-    @Override\r
-    protected ICanvasParticipant createConnectToolWithTerminals(List<TerminalInfo> tis, int mouseId, Point2D startCanvasPos) {\r
-        return new ConnectTool2(tis, mouseId, startCanvasPos);\r
-    }\r
-\r
-    protected ICanvasParticipant initiateRouteGraphConnectTool(RouteGraphTarget target, int mouseId) {\r
-        return new RouteGraphConnectTool(target, mouseId);\r
-    }\r
-\r
-    @Override\r
-    protected ICanvasParticipant createTranslateTool(int mouseId, Point2D startCanvasPos, Point2D curCanvasPos, Set<IElement> elementsToDrag) {\r
-        return new TranslateMode2(startCanvasPos, curCanvasPos, mouseId, elementsToDrag);\r
-    }\r
-\r
-    protected boolean checkInitiateConnectTool(MouseEvent me, Point2D mouseCanvasPos) {\r
-        // Pick Terminal\r
-        IToolMode mode = getToolMode();\r
-        if (mode == Hints.CONNECTTOOL || me.hasAnyModifier(MouseEvent.ALT_MASK | MouseEvent.ALT_GRAPH_MASK)) {\r
-            //IConnectionAdvisor advisor = diagram.getHint(DiagramHints.CONNECTION_ADVISOR);\r
-            List<TerminalInfo> tis = pickTerminals(me.controlPosition);\r
-\r
-            ICanvasParticipant bsi = null;\r
-\r
-            if (tis.isEmpty()) {\r
-                // Look for potential connection to branch.\r
-                RouteGraphTarget cp = RouteGraphConnectTool.pickRouteGraphConnection(diagram,\r
-                        getCanvasPickShape(me.controlPosition), getPickDistance());\r
-                if (cp != null) {\r
-                    bsi = initiateRouteGraphConnectTool(cp, me.mouseId);\r
-                } else {\r
-                    ISnapAdvisor snapAdvisor = getHint(DiagramHints.SNAP_ADVISOR);\r
-                    if (snapAdvisor != null)\r
-                        snapAdvisor.snap(mouseCanvasPos);\r
-\r
-                    // Start connection out of thin air, without a terminal.\r
-                    bsi = createConnectTool(null, me.mouseId, mouseCanvasPos);\r
-                }\r
-            } else {\r
-                // Find the terminals that are equally close\r
-                tis = TerminalUtil.findNearestOverlappingTerminals(tis);\r
-                int tcount = tis.size();\r
-                if (tcount > 0) {\r
-                    if (tcount == 1) {\r
-                        bsi = createConnectTool(tis.get(0), me.mouseId, mouseCanvasPos);\r
-                    } else {\r
-                        //System.out.println("many terminals (" + tcount + "):\n" + EString.implode(tis));\r
-                        bsi = createConnectToolWithTerminals(tis, me.mouseId, mouseCanvasPos);\r
-                    }\r
-                }\r
-            }\r
-\r
-            // Did we catch anything?\r
-            if (bsi != null) {\r
-                startConnectTool(bsi);\r
-                return true;\r
-            }\r
-        }\r
-\r
-        return false;\r
-    }\r
-\r
-}\r
+/*******************************************************************************
+ * 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
+ *******************************************************************************/
+package org.simantics.diagram.participant;
+
+import java.awt.geom.Point2D;
+import java.util.List;
+import java.util.Set;
+
+import org.simantics.g2d.canvas.Hints;
+import org.simantics.g2d.canvas.ICanvasParticipant;
+import org.simantics.g2d.canvas.IToolMode;
+import org.simantics.g2d.diagram.DiagramHints;
+import org.simantics.g2d.diagram.participant.pointertool.PointerInteractor;
+import org.simantics.g2d.diagram.participant.pointertool.TerminalUtil;
+import org.simantics.g2d.diagram.participant.pointertool.TerminalUtil.TerminalInfo;
+import org.simantics.g2d.element.ElementClassProviders;
+import org.simantics.g2d.element.IElement;
+import org.simantics.g2d.element.IElementClassProvider;
+import org.simantics.scenegraph.g2d.events.MouseEvent;
+import org.simantics.scenegraph.g2d.snap.ISnapAdvisor;
+
+/**
+ * Adds support for drawing connections through {@link ConnectTool2} and
+ * {@link RouteGraphConnectTool} to {@link PointerInteractor}.
+ * 
+ * @author Tuukka Lehtonen
+ */
+public class PointerInteractor2 extends PointerInteractor {
+
+    public PointerInteractor2() {
+        this(true, true, true, false, true, false, ElementClassProviders.staticProvider(null));
+    }
+
+    public PointerInteractor2(boolean clickSelect, boolean boxSelect, boolean dragElement, boolean dndDragElement, boolean connect, IElementClassProvider newConnectionClassProvider) {
+        this(clickSelect, boxSelect, dragElement, dndDragElement, connect, false, newConnectionClassProvider);
+    }
+
+    public PointerInteractor2(boolean clickSelect, boolean boxSelect, boolean dragElement, boolean dndDragElement, boolean connect, boolean doubleClickEdit, IElementClassProvider newConnectionClassProvider) {
+        super(clickSelect, boxSelect, dragElement, dndDragElement, connect, doubleClickEdit, newConnectionClassProvider, null); 
+    }
+
+    @Override
+    protected ICanvasParticipant createConnectTool(TerminalInfo ti, int mouseId, Point2D startCanvasPos) {
+        return new ConnectTool2(ti, mouseId, startCanvasPos);
+    }
+
+    @Override
+    protected ICanvasParticipant createConnectToolWithTerminals(List<TerminalInfo> tis, int mouseId, Point2D startCanvasPos) {
+        return new ConnectTool2(tis, mouseId, startCanvasPos);
+    }
+
+    protected ICanvasParticipant initiateRouteGraphConnectTool(RouteGraphTarget target, int mouseId) {
+        return new RouteGraphConnectTool(target, mouseId);
+    }
+
+    @Override
+    protected ICanvasParticipant createTranslateTool(int mouseId, Point2D startCanvasPos, Point2D curCanvasPos, Set<IElement> elementsToDrag) {
+        return new TranslateMode2(startCanvasPos, curCanvasPos, mouseId, elementsToDrag);
+    }
+
+    protected boolean checkInitiateConnectTool(MouseEvent me, Point2D mouseCanvasPos) {
+        // Pick Terminal
+        IToolMode mode = getToolMode();
+        if (mode == Hints.CONNECTTOOL || me.hasAnyModifier(MouseEvent.ALT_MASK | MouseEvent.ALT_GRAPH_MASK)) {
+            //IConnectionAdvisor advisor = diagram.getHint(DiagramHints.CONNECTION_ADVISOR);
+            List<TerminalInfo> tis = pickTerminals(me.controlPosition);
+
+            ICanvasParticipant bsi = null;
+
+            if (tis.isEmpty()) {
+                // Look for potential connection to branch.
+                RouteGraphTarget cp = RouteGraphConnectTool.pickRouteGraphConnection(diagram,
+                        getCanvasPickShape(me.controlPosition), getPickDistance());
+                if (cp != null) {
+                    bsi = initiateRouteGraphConnectTool(cp, me.mouseId);
+                } else {
+                    ISnapAdvisor snapAdvisor = getHint(DiagramHints.SNAP_ADVISOR);
+                    if (snapAdvisor != null)
+                        snapAdvisor.snap(mouseCanvasPos);
+
+                    // Start connection out of thin air, without a terminal.
+                    bsi = createConnectTool(null, me.mouseId, mouseCanvasPos);
+                }
+            } else {
+                // Find the terminals that are equally close
+                tis = TerminalUtil.findNearestOverlappingTerminals(tis);
+                int tcount = tis.size();
+                if (tcount > 0) {
+                    if (tcount == 1) {
+                        bsi = createConnectTool(tis.get(0), me.mouseId, mouseCanvasPos);
+                    } else {
+                        //System.out.println("many terminals (" + tcount + "):\n" + EString.implode(tis));
+                        bsi = createConnectToolWithTerminals(tis, me.mouseId, mouseCanvasPos);
+                    }
+                }
+            }
+
+            // Did we catch anything?
+            if (bsi != null) {
+                startConnectTool(bsi);
+                return true;
+            }
+        }
+
+        return false;
+    }
+
+}