]> gerrit.simantics Code Review - simantics/platform.git/blobdiff - bundles/org.simantics.diagram/src/org/simantics/diagram/participant/ConnectionBuilder.java
ConnectionTool fixes for overlapping terminals
[simantics/platform.git] / bundles / org.simantics.diagram / src / org / simantics / diagram / participant / ConnectionBuilder.java
index 72cdb17524fa3def3ae8acc771836153590ffcfe..8da84709b6ee89be5dd29c9ee53697e9ca7a51a0 100644 (file)
@@ -79,7 +79,6 @@ import org.simantics.structural2.modelingRules.CPTerminal;
 import org.simantics.structural2.modelingRules.ConnectionJudgement;
 import org.simantics.structural2.modelingRules.IConnectionPoint;
 import org.simantics.structural2.modelingRules.IModelingRules;
-import org.simantics.utils.datastructures.Callback;
 import org.simantics.utils.datastructures.Pair;
 import org.simantics.utils.ui.ErrorLogger;
 
@@ -222,12 +221,9 @@ public class ConnectionBuilder {
                                         }
                                     }
                                 }
-                            }, new Callback<DatabaseException>() {
-                                @Override
-                                public void run(DatabaseException e) {
-                                    if (e != null)
-                                        ErrorLogger.defaultLogError(e);
-                                }
+                            }, e -> {
+                                if (e != null)
+                                    ErrorLogger.defaultLogError(e);
                             });
                         }
                     }
@@ -501,7 +497,7 @@ public class ConnectionBuilder {
 
             Connector endConnector = null;
             if (endTerminal != null) {
-                endConnector = createConnectorForNode(graph, attachToConnection, endTerminal, EdgeEnd.End, judgment);
+               endConnector = createConnectorForNode(graph, attachToConnection, endTerminal, flagType == FlagClass.Type.In ? EdgeEnd.Begin : EdgeEnd.End, judgment);
             } else if (createFlags) {
                 EdgeEnd end = flagType == FlagClass.Type.In ? EdgeEnd.Begin : EdgeEnd.End;
                 IElement endFlag = createFlag(graph, attachToConnection, end, controlPoints.getLast(), flagType, null);
@@ -767,7 +763,9 @@ public class ConnectionBuilder {
             EdgeEnd end, ConnectionJudgement judgment) throws DatabaseException {
         IConnectionPoint cp = ConnectionUtil.toConnectionPoint(graph, element, terminal);
         CPTerminal cpt = (cp instanceof CPTerminal) ? (CPTerminal) cp : null;
-        Resource attachment = judgment.attachmentRelations.get(graph, cpt);
+        Resource attachment = null;
+        if (judgment.attachmentRelations != null)
+            attachment = judgment.attachmentRelations.get(graph, cpt);
         if (attachment == null)
             attachment = cu.toHasConnectorRelation(end);
         Resource connector = cu.getOrCreateConnector(connection, element, terminal, end, attachment);