]> gerrit.simantics Code Review - simantics/platform.git/commitdiff
Merge changes I3a38eed6,I3f8b3504
authorTuukka Lehtonen <tuukka.lehtonen@semantum.fi>
Tue, 4 Feb 2020 15:53:13 +0000 (15:53 +0000)
committerGerrit Code Review <gerrit2@simantics>
Tue, 4 Feb 2020 15:53:13 +0000 (15:53 +0000)
* changes:
  Wrong graph was used when performing async query from session
  DB request scheduling scheme fails with district diagrams

bundles/org.simantics.diagram.connection/src/org/simantics/diagram/connection/RouteGraph.java
bundles/org.simantics.diagram.connection/src/org/simantics/diagram/connection/RouteLine.java
bundles/org.simantics.diagram.connection/src/org/simantics/diagram/connection/RouteLink.java
bundles/org.simantics.diagram.connection/src/org/simantics/diagram/connection/RouteTerminal.java
bundles/org.simantics.diagram.connection/src/org/simantics/diagram/connection/SimpleConnectionUtility.java
bundles/org.simantics.scenegraph/META-INF/MANIFEST.MF

index 249399d0a8b5b7b6c875c68d8464fda198961160..9b707eae7e51524ec96c298042d9694e369cd4e5 100644 (file)
@@ -42,12 +42,12 @@ public class RouteGraph implements Serializable {
     public static final boolean RETURN_UNMODIFIABLE_COLLECTIONS = false;
     public static final boolean CHECK_PARAMERS = true;
 
-    ArrayList<RouteLine> lines = new ArrayList<RouteLine>(4);
-    ArrayList<RouteTerminal> terminals = new ArrayList<RouteTerminal>(4);
-    ArrayList<RouteLine> transientLines = new ArrayList<RouteLine>(4);
-    int caseId;
-    boolean isSimpleConnection;
-    boolean needsUpdate = false;
+    protected ArrayList<RouteLine> lines = new ArrayList<RouteLine>(4);
+    protected ArrayList<RouteTerminal> terminals = new ArrayList<RouteTerminal>(4);
+    protected ArrayList<RouteLine> transientLines = new ArrayList<RouteLine>(4);
+    protected int caseId;
+    protected boolean isSimpleConnection;
+    protected boolean needsUpdate = false;
 
     public void updateTerminals() {
         boolean changed = false;
@@ -270,7 +270,7 @@ public class RouteGraph implements Serializable {
         needsUpdate = true;
     }
     
-    void removeTransientRouteLines() {
+    protected void removeTransientRouteLines() {
         for(RouteLine line : transientLines)
             line.remove();
         transientLines.clear();
@@ -336,6 +336,11 @@ public class RouteGraph implements Serializable {
                 line.addPoint(b);
                 line.terminal = a;
                 transientLines.add(line);
+                
+                // Path terminal
+                a.line = line;
+                b.line = line;
+                
                 break;
             }
             case SimpleConnectionUtility.ONE_BEND_HORIZONTAL_VERTICAL: {
@@ -348,6 +353,10 @@ public class RouteGraph implements Serializable {
                 line2.terminal = b;
                 transientLines.add(line1);
                 transientLines.add(line2);
+               
+                // Path terminal
+                a.line = line1;
+                b.line = line2;
                 break;
             }
             case SimpleConnectionUtility.ONE_BEND_VERTICAL_HORIZONTAL: {
@@ -360,6 +369,10 @@ public class RouteGraph implements Serializable {
                 line2.terminal = b;
                 transientLines.add(line1);
                 transientLines.add(line2);
+                
+                //Path terminal
+                a.line = line1;
+                b.line = line2;
                 break;
             }
             case SimpleConnectionUtility.MORE_BENDS_BBS_DONT_INTERSECT: 
@@ -375,6 +388,7 @@ public class RouteGraph implements Serializable {
                 break;
             }
             }
+            //routeFromTerminals(caseId==SimpleConnectionUtility.MORE_BENDS_BBS_INTERSECT);
         }
         else {
             caseId = SimpleConnectionUtility.COMPLEX_CONNECTION;
@@ -396,7 +410,7 @@ public class RouteGraph implements Serializable {
         }
     }
     
-    static class Interval {
+    public static class Interval {
         public final double min;
         public final double max;
         public Interval(double min, double max) {
@@ -405,7 +419,7 @@ public class RouteGraph implements Serializable {
         }
     }
     
-    class IntervalCache {
+    public class IntervalCache {
         THashMap<RouteLine, Interval> cache = 
                 new THashMap<RouteLine, Interval>();
         public Interval get(RouteLine line) {
@@ -457,7 +471,7 @@ public class RouteGraph implements Serializable {
         }
     } 
     
-    private void routeFromTerminals(boolean boundingBoxesIntersect) {
+    protected void routeFromTerminals(boolean boundingBoxesIntersect) {
         IntervalCache cache = new IntervalCache();
         for(RouteTerminal terminal : terminals) 
             if(terminal.line != null) {
index 315b11c1290bceb0dc512ca58d8a9ebf3c0318b0..a6a4f22d2ff1b5ba0be0add013fe7d9c412ff29a 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);
@@ -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);
@@ -187,6 +191,10 @@ public class RouteLine implements RouteNode, Serializable {
     public RouteTerminal getTerminal() {
         return terminal;
     }
+    
+    public void setTerminal(RouteTerminal terminal) {
+               this.terminal = terminal;
+       }
 
     public RouteLine getNextTransient() {
         return nextTransient;
index d3dccca5d8f145b841d3b09d1bc24e99f7c51f03..a108ba3a59542182ab9574d7502a79d1f1ffaafa 100644 (file)
@@ -28,7 +28,7 @@ public class RouteLink extends RoutePoint implements Serializable {
     private RouteLink() {
     }
     
-    RouteLink(RouteLine a, RouteLine b) {
+    public RouteLink(RouteLine a, RouteLine b) {
         this.a = a;
         this.b = b;
         a.addPoint(this);
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;
index 109f8fe735ed9cf1bb947530c290e618633ea842..0628573d0576962d7efff9efa3da0ebef159a44e 100644 (file)
@@ -17,7 +17,7 @@ package org.simantics.diagram.connection;
  * 
  * @author Hannu Niemist&ouml;
  */
-class SimpleConnectionUtility {
+public class SimpleConnectionUtility {
 
     public static boolean allowsDirection(RouteTerminal a, int dir) {
         return Directions.isAllowed(a.getAllowedDirections(), dir);
index 883ce3ac8a1f44e52304ce1b54fe3a3a2e5af6ef..f2c70f5c60d54bf752903db7da33ec31cd6c7b90 100644 (file)
@@ -24,6 +24,8 @@ Bundle-ClassPath: .,
 Export-Package: com.kitfox.svg,
  com.kitfox.svg.animation,
  com.kitfox.svg.xml,
+ org.apache.batik.ext.awt.geom,
+ org.apache.batik.parser,
  org.simantics.scenegraph,
  org.simantics.scenegraph.adapters,
  org.simantics.scenegraph.g2d,