]> gerrit.simantics Code Review - simantics/platform.git/blobdiff - bundles/org.simantics.diagram.connection/src/org/simantics/diagram/connection/RouteTerminal.java
Support for random shaped terminals
[simantics/platform.git] / bundles / org.simantics.diagram.connection / src / org / simantics / diagram / connection / RouteTerminal.java
index c43c7de1c4996914d8ac6bbc5c208e4c9b2c64ff..dd660d4aaa659df5bce98302794586549e423c04 100644 (file)
@@ -44,7 +44,7 @@ public class RouteTerminal extends RoutePoint implements RouteNode, Serializable
 
     RouteLine line;
 
-    RouteTerminal(double x, double y, double minX, double minY,
+    public RouteTerminal(double x, double y, double minX, double minY,
             double maxX, double maxY, int allowedDirections,
             boolean routeToBounds,
             ILineEndStyle style, RouteTerminalPosition dynamicPosition) {
@@ -98,7 +98,7 @@ public class RouteTerminal extends RoutePoint implements RouteNode, Serializable
      * adding necessary transient route lines.
      * @param cache 
      */
-    void route(ArrayList<RouteLine> lines, IntervalCache cache, boolean boundingBoxesIntersect) {
+    protected void route(ArrayList<RouteLine> lines, IntervalCache cache, boolean boundingBoxesIntersect) {
         if(routeToBounds) {
             int lineDir;
             boolean routeLineDoesNotIntersectTerminal;
@@ -139,7 +139,8 @@ public class RouteTerminal extends RoutePoint implements RouteNode, Serializable
                 return;
             }
             else {
-                line.addPoint(this);
+               if (!line.getPoints().contains(this))
+                  line.addPoint(this);
                 Interval interval = cache.get(line);
                 if(line.isHorizontal) {
                     if(interval.min < minX)
@@ -257,7 +258,7 @@ public class RouteTerminal extends RoutePoint implements RouteNode, Serializable
         }
     }
     
-    private RouteLine createLine0(int dir) {
+    protected RouteLine createLine0(int dir) {
         RouteLine line0 = (dir&1) == 0 
                 ? new RouteLine(true, y)
                 : new RouteLine(false, x)
@@ -377,7 +378,7 @@ public class RouteTerminal extends RoutePoint implements RouteNode, Serializable
         }
     }
 
-    RouteTerminal copy(THashMap<Object, Object> map) {
+    public RouteTerminal copy(THashMap<Object, Object> map) {
        RouteTerminal copy = (RouteTerminal)map.get(this);
        if(copy == null) {      
                copy = new RouteTerminal(x,  y, minX, minY, maxX, maxY, 
@@ -418,6 +419,10 @@ public class RouteTerminal extends RoutePoint implements RouteNode, Serializable
         return line;
     }
     
+    public void setLine(RouteLine line) {
+               this.line = line;
+       }
+    
     public void setMinX(double minX) {
                this.minX = minX;
        }
@@ -456,6 +461,8 @@ public class RouteTerminal extends RoutePoint implements RouteNode, Serializable
     public RouteTerminalPosition getDynamicPosition() {
         return dynamicPosition;
     }
+    
+    
 
     public boolean updateDynamicPosition() {
         boolean changed = false;