]> gerrit.simantics Code Review - simantics/platform.git/blobdiff - bundles/org.simantics.diagram.connection/src/org/simantics/diagram/connection/RouteLine.java
Don't create degenerated transient RouteLines to RouteGraph
[simantics/platform.git] / bundles / org.simantics.diagram.connection / src / org / simantics / diagram / connection / RouteLine.java
index c32b0ee240ec0291a21354b365d6317f61664b97..2011bfa28f153afec115d4c8b3aab2baf9a1dde9 100644 (file)
@@ -34,7 +34,7 @@ public class RouteLine implements RouteNode, Serializable {
     RouteLine nextTransient;
     RouteTerminal terminal;
     
-    RouteLine(boolean isHorizontal, double position) {
+    public RouteLine(boolean isHorizontal, double position) {
         this.isHorizontal = isHorizontal;
         this.position = position;
     }
@@ -57,6 +57,10 @@ public class RouteLine implements RouteNode, Serializable {
                return hidden;
        }
     
+    public void setHidden(boolean hidden) {
+               this.hidden = hidden;
+       }
+    
     public double getPosition() {
         return position;
     }
@@ -68,7 +72,7 @@ public class RouteLine implements RouteNode, Serializable {
                return points;
     }
     
-    void addPoint(RoutePoint link) {
+    public void addPoint(RoutePoint link) {
         points.add(link);        
     }
 
@@ -77,7 +81,7 @@ public class RouteLine implements RouteNode, Serializable {
             point.removeFromOther(this);
     }
     
-    void setPointPositions() {        
+    public void setPointPositions() {        
         if(isHorizontal) {
             for(RoutePoint point : points)
                 point.y = position;
@@ -88,7 +92,7 @@ public class RouteLine implements RouteNode, Serializable {
         }
     }
 
-    void sortPoints() {
+    public void sortPoints() {
         Collections.sort(points, isHorizontal 
                 ? RoutePoint.X_COMPARATOR 
                 : RoutePoint.Y_COMPARATOR);
@@ -97,11 +101,11 @@ public class RouteLine implements RouteNode, Serializable {
     public boolean isNear(double x2, double y2, double tolerance) {
         return isHorizontal 
                 ? Math.abs(y2-position) <= tolerance 
-                    && points.get(0).x <= x2 
-                    && x2 <= points.get(points.size()-1).x
+                    && points.get(0).x - tolerance <= x2
+                    && x2 <= points.get(points.size()-1).x + tolerance
                 : Math.abs(x2-position) <= tolerance 
-                    && points.get(0).y <= y2 
-                    && y2 <= points.get(points.size()-1).y;
+                    && points.get(0).y - tolerance <= y2
+                    && y2 <= points.get(points.size()-1).y + tolerance;
     }
 
     public void print(PrintStream out) {
@@ -158,7 +162,7 @@ public class RouteLine implements RouteNode, Serializable {
         return terminal != null;
     }
 
-    RouteLine copy(THashMap<Object, Object> map) {     
+    public RouteLine copy(THashMap<Object, Object> map) {      
         RouteLine copy = (RouteLine)map.get(this);
         if(copy == null) {
                copy = new RouteLine(isHorizontal, position);
@@ -184,9 +188,21 @@ public class RouteLine implements RouteNode, Serializable {
        return lines;
     }
 
+    public void removeRouteTerminals() {
+        points.removeIf(p -> p instanceof RouteTerminal);
+    }
+
     public RouteTerminal getTerminal() {
         return terminal;
     }
+    
+    public void setTerminal(RouteTerminal terminal) {
+               this.terminal = terminal;
+       }
+
+    public RouteLine getNextTransient() {
+        return nextTransient;
+    }
 
     public boolean beginsWithTerminal() {
         RoutePoint begin = points.get(0);