]> gerrit.simantics Code Review - simantics/interop.git/blobdiff - org.simantics.interop.diagram/src/org/simantics/interop/diagram/Symbol.java
Support for symbol removes.
[simantics/interop.git] / org.simantics.interop.diagram / src / org / simantics / interop / diagram / Symbol.java
index 22160aa916d422684cabaea578aa55959296d687..b2f7c30d05edbcdbaef33425f3b492a08ee0dbe8 100644 (file)
@@ -207,21 +207,26 @@ public abstract class Symbol {
                
                // Relation from element1 to connector1
                Resource isConnected1 = getDiagramConnectionRelation(g, element, componentConRel1);
-               
+               Resource connectorRel1 = g.getPossibleObject(componentConRel1, s.HasAttachmentRelation);
+               if (connectorRel1 == null)
+                       connectorRel1 = d.HasPlainConnector;
+                               
                // connector1
                Resource connector1 = g.newResource();
                g.claim(connector1, b.InstanceOf, d.Connector);
                g.claim(element, isConnected1, connector1);
-               g.claim(diagramConnection, d.HasPlainConnector, connector1);
+               g.claim(diagramConnection, connectorRel1, connector1);
                
                // Relation from element2 to connector2
                Resource isConnected2 = getDiagramConnectionRelation(g, symbolConf2.element, componentConRel2);
-               
+               Resource connectorRel2 = g.getPossibleObject(componentConRel2, s.HasAttachmentRelation);
+               if (connectorRel2 == null)
+                       connectorRel2 = d.HasArrowConnector;
                // connector2
                Resource connector2 = g.newResource();
                g.claim(connector2, b.InstanceOf, d.Connector);
                g.claim(symbolConf2.element, isConnected2, connector2);
-               g.claim(diagramConnection, d.HasArrowConnector, connector2);
+               g.claim(diagramConnection, connectorRel2, connector2);
                
                // connect connectors
                g.claim(connector1, d.AreConnected, connector2);
@@ -721,6 +726,35 @@ public abstract class Symbol {
                return symbols.iterator().next();
        }
        
+       public void remove(WriteGraph g) throws DatabaseException{
+               Layer0 L0 = Layer0.getInstance(g);
+               StructuralResource2 STR = StructuralResource2.getInstance(g);
+               DiagramResource DIA = DiagramResource.getInstance(g);
+               OrderedSetUtils.remove(g, diagram.getDiagram(), element);
+               if (component != null)
+                       g.deny(component, L0.PartOf);
+               Collection<Statement> statements = g.getStatements(element, STR.IsConnectedTo);
+               for (Statement s : statements) {
+                       if (g.isInstanceOf(s.getObject(),DIA.Connector)) {
+                               Resource connectedConnector = g.getPossibleObject(s.getObject(), DIA.AreConnected);
+                               if (connectedConnector != null)
+                                       g.deny(connectedConnector);
+                               g.deny(s.getObject());
+                       }
+               }
+               if (component != null) {
+                       statements = g.getStatements(component, STR.IsConnectedTo);
+                       for (Statement s : statements) {
+                               if (g.isInstanceOf(s.getObject(),STR.Connection)) {
+                                       g.deny(s.getObject());
+                               }
+                       }
+               }
+               g.deny(element);
+               if (component != null)
+                       g.deny(component);
+       }
+       
        public void dispose() {
                diagram = null;
                component = null;
@@ -830,47 +864,6 @@ public abstract class Symbol {
                }
        }
        
-       private static class PointConnectionDataImpl implements PointConnectionData {
-               
-               private Symbol point;
-               
-               public PointConnectionDataImpl(Symbol point) {
-                       this.point = point;
-               }
-               
-               @Override
-               public Symbol getPoint() {
-                       return point;
-               }
-       }
-       
-       private static class SignalConnectionDataImpl implements SignalConnectionData, DiagramConnectionData{
-               
-               private Resource signalComponent;
-               private Resource[] connectors;
-               
-               public SignalConnectionDataImpl(Resource signalComponent, Resource... connectors) {
-                       this.signalComponent = signalComponent;
-                       this.connectors = connectors;
-               }
-               
-               @Override
-               public Resource getSignalComponent() {
-                       return signalComponent;
-               }
-               
-               @Override
-               public Resource getConnection(int index) {
-                       return connectors[index];
-               }
-               
-               @Override
-               public int getConnectionCount() {
-                       return connectors.length;
-               }
-               
-       }
-       
        private static class FlagConnectionDataImpl implements FlagConnectionData, DiagramConnectionData {
                
                private Symbol firstFlag;