]> gerrit.simantics Code Review - simantics/platform.git/blobdiff - bundles/org.simantics.diagram/src/org/simantics/diagram/adapter/RouteGraphUtils.java
Store initial links between route notes for JS connection rendering
[simantics/platform.git] / bundles / org.simantics.diagram / src / org / simantics / diagram / adapter / RouteGraphUtils.java
index 9338e917221be3fcd06222e80ebf39f3288a7751..192b4947fdf90e3ba7dd328fb67d34ab1b056361 100644 (file)
@@ -18,6 +18,7 @@ import java.awt.Shape;
 import java.awt.Stroke;
 import java.awt.geom.AffineTransform;
 import java.awt.geom.Rectangle2D;
+import java.util.ArrayList;
 import java.util.Collection;
 import java.util.Collections;
 import java.util.Map;
@@ -34,6 +35,7 @@ import org.simantics.db.common.request.UnaryRead;
 import org.simantics.db.common.utils.NameUtils;
 import org.simantics.db.exception.DatabaseException;
 import org.simantics.diagram.connection.ConnectionVisuals;
+import org.simantics.diagram.connection.Link;
 import org.simantics.diagram.connection.RouteGraph;
 import org.simantics.diagram.connection.RouteGraphConnectionClass;
 import org.simantics.diagram.connection.RouteLine;
@@ -302,7 +304,7 @@ public class RouteGraphUtils {
 
             final ResourceTerminal rt = new ResourceTerminal(terminal);
             final TerminalLayout tl = te.getElementClass().getSingleItem(TerminalLayout.class);
-            AffineTransform terminalPos = tl.getTerminalPosition(element, rt);
+            AffineTransform terminalPos = tl.getTerminalPosition(te, rt);
 
             if (terminalPos != null) {
                 terminalTr.concatenate(terminalPos);
@@ -353,6 +355,8 @@ public class RouteGraphUtils {
             }
         }
 
+        Collection<Link> initialLinks = new ArrayList<>();
+        
         // Finish route graph loading by Linking route nodes together
         for (EdgeResource link : links) {
             RouteNode n1 = nodeByData.get(link.first());
@@ -362,7 +366,9 @@ public class RouteGraphUtils {
                 continue;
             }
             rg.link(n1, n2);
+            initialLinks.add(new Link(n1, n2));
         }
+        rg.setInitialLinks(initialLinks);
 
         return rg;
 
@@ -578,7 +584,7 @@ public class RouteGraphUtils {
 
         // Fixed style settings
         Color branchPointColor = Color.BLACK;
-        double branchPointRadius = 0.5;
+        double branchPointRadius = cv != null && cv.branchPointRadius != null ? cv.branchPointRadius : 0.5;
         double degenerateLineLength = 0.8;
         
         Color lineColor = cv != null ? cv.toColor() : null;