]> gerrit.simantics Code Review - simantics/sysdyn.git/commitdiff
refs #5185
authorjsimomaa <jsimomaa@ac1ea38d-2e2b-0410-8846-a27921b304fc>
Mon, 25 Aug 2014 06:12:27 +0000 (06:12 +0000)
committerjsimomaa <jsimomaa@ac1ea38d-2e2b-0410-8846-a27921b304fc>
Mon, 25 Aug 2014 06:12:27 +0000 (06:12 +0000)
Undoing stock removal won't return the pipes that went to or left from the stock

git-svn-id: https://www.simantics.org/svn/simantics/sysdyn/trunk@30123 ac1ea38d-2e2b-0410-8846-a27921b304fc

org.simantics.sysdyn.ui/src/org/simantics/sysdyn/ui/elements/connections/RouteFlowConnectionFactory.java

index 6515eb056fa769aeac5664c8325a987586421321..1b80dcf8b523b0d359694a897a847b499b2fa1c4 100644 (file)
@@ -128,13 +128,15 @@ public class RouteFlowConnectionFactory extends SyncElementFactory {
 \r
         // Do we need this?\r
         element.setHint(DiagramHints.ROUTE_ALGORITHM, new Router4(false));\r
-\r
+        System.out.println(connection);\r
         IModelingRules modelingRules = diagram.getHint(DiagramModelHints.KEY_MODELING_RULES);\r
 \r
-        IElement mappedElement = ElementUtils.getByData(diagram, connection);\r
-        if (mappedElement == null)\r
-            // FIXME: With undo this seems to happen, don't know why yet!\r
-            return;\r
+//        IElement mappedElement = ElementUtils.getByData(diagram, connection);\r
+//        if (mappedElement == null) {\r
+//            System.out.println("taalla ollaan mappedElement == null");\r
+//            // FIXME: With undo this seems to happen, don't know why yet!\r
+//            return;\r
+//        }\r
 \r
         Color color = null;\r
         DiagramResource DR = DiagramResource.getInstance(graph);\r
@@ -344,7 +346,7 @@ public class RouteFlowConnectionFactory extends SyncElementFactory {
         // Initialize ConnectionEntity in element\r
         // NOTE: MUST use the mapped element with class CE, not the connection (element) were loading into.\r
         // GDS will synchronize element into mappedElement in a controlled manner.\r
-        element.setHint(ElementHints.KEY_CONNECTION_ENTITY, new CE(connection, mappedElement, backendonnections));\r
+        element.setHint(ElementHints.KEY_CONNECTION_ENTITY, new CE(diagram, connection, element, backendonnections));\r
 \r
         // Setup graph writeback support for route graph modifications\r
         final Session session = graph.getSession();\r
@@ -565,6 +567,11 @@ public class RouteFlowConnectionFactory extends SyncElementFactory {
      */\r
     static class CE implements ConnectionEntity {\r
 \r
+        \r
+        private IDiagram diagram;\r
+\r
+        private transient DataElementMap dataMap;\r
+        \r
         /**\r
          * The connection instance resource in the graph backend.\r
          */\r
@@ -573,7 +580,7 @@ public class RouteFlowConnectionFactory extends SyncElementFactory {
         /**\r
          * The connection entity element which is a part of the diagram.\r
          */\r
-        final IElement               connectionElement;\r
+        IElement               connectionElement;\r
 \r
         /**\r
          * @see #getTerminalConnections(Collection)\r
@@ -585,15 +592,31 @@ public class RouteFlowConnectionFactory extends SyncElementFactory {
          */\r
         Set<Connection>              terminalConnections;\r
 \r
-        CE(Resource connection, IElement connectionElement, Set<BackendConnection> backendConnections) {\r
+        \r
+        public CE(IDiagram diagram, Resource connection, IElement connectionElement, Set<BackendConnection> backendConnections) {\r
+            if (connectionElement == null)\r
+                throw new NullPointerException("null connection element");\r
+            this.diagram = diagram;\r
+            this.dataMap = diagram.getDiagramClass().getSingleItem(DataElementMap.class);\r
             this.connection = connection;\r
             this.connectionElement = connectionElement;\r
             this.backendConnections = backendConnections;\r
+            IElement ce = getConnection0();\r
+            if (ce != null)\r
+                this.connectionElement = ce;\r
+        }\r
+\r
+        public IElement getConnection0() {\r
+            IElement connectionElement = dataMap.getElement(diagram, connection);\r
+            return connectionElement;\r
         }\r
 \r
         @Override\r
         public IElement getConnection() {\r
-            return connectionElement;\r
+            IElement c = getConnection0();\r
+            if (c == null)\r
+                c = this.connectionElement;\r
+            return c;\r
         }\r
 \r
         public Object getConnectionObject() {\r
@@ -626,7 +649,6 @@ public class RouteFlowConnectionFactory extends SyncElementFactory {
         }\r
 \r
         private Set<Connection> calculateTerminalConnections() {\r
-            IDiagram diagram = connectionElement.getDiagram();\r
             DataElementMap dem = diagram.getDiagramClass().getSingleItem(DataElementMap.class);\r
             Set<Connection> result = new HashSet<Connection>();\r
             ArrayList<Terminal> ts = new ArrayList<Terminal>();\r