]> gerrit.simantics Code Review - simantics/3d.git/blobdiff - org.simantics.plant3d/src/org/simantics/plant3d/scenegraph/PipelineComponent.java
Tag user modifiable length
[simantics/3d.git] / org.simantics.plant3d / src / org / simantics / plant3d / scenegraph / PipelineComponent.java
index c0feb668d183ff090dad98fa81ed844cce02ab0b..61e48585336fb7749ba30c021fd42f549f40a027 100644 (file)
@@ -78,9 +78,16 @@ public abstract class PipelineComponent extends GeometryNode {
                        return;
                this.alternativePipeRun = pipeRun;
                if (getControlPoint().isDualInline()) {
-                       PipeControlPoint sub = getControlPoint().getSubPoint().get(0);
-                       if (sub.getParent() != this.alternativePipeRun)
-                               this.alternativePipeRun.addChild(sub);
+                       PipeControlPoint sub = getControlPoint().getDualSub();
+                       if (sub.getParent() != this.alternativePipeRun) {
+                           if (this.alternativePipeRun != null) {
+                              this.alternativePipeRun.addChild(sub);
+                           } else if (sub.getPipeRun() != null) {
+                               // FIXME : how to handle child point without proper run?
+                               sub.getPipeRun().remChild(sub);
+                           }
+                       }
+                               
                }
                firePropertyChanged(Plant3D.URIs.HasAlternativePipeRun);
        }
@@ -122,6 +129,12 @@ public abstract class PipelineComponent extends GeometryNode {
         }
         setParameterMap(parameters);
     }
+    
+    public void setParameter(String name, Object value) {
+        Map<String, Object> parameters = new HashMap<>(getParameterMap());
+        parameters.put(name, value);
+        setParameterMap(parameters);
+    }
        
        public abstract void setType(String typeURI) throws Exception;
        
@@ -133,17 +146,20 @@ public abstract class PipelineComponent extends GeometryNode {
        @RelatedSetObj(Plant3D.URIs.HasNext)
        public void setNext(PipelineComponent comp) {
                if (next == comp)
-                       return;
+                   return;
                if (this.next != null)
-                       this.next._removeRef(this);
-               this.next = comp;
-               this.syncnext = false;
-               if (DEBUG) System.out.println(this + " next " + comp);
-               syncNext();
-               firePropertyChanged(Plant3D.URIs.HasNext);
-               if (comp != null)
-                       comp.sync();
-               
+                   this.next._removeRef(this);
+        _setNext(comp);
+        this.syncnext = false;
+        if (DEBUG) System.out.println(this + " next " + comp);
+        syncNext();
+        firePropertyChanged(Plant3D.URIs.HasNext);
+        if (comp != null)
+            comp.sync();
+       }
+       
+       protected void _setNext(PipelineComponent comp) {
+           this.next = comp;
        }
        
        
@@ -158,15 +174,19 @@ public abstract class PipelineComponent extends GeometryNode {
                        return;
                if (this.previous != null)
                        this.previous._removeRef(this);
-               this.previous = comp;
+               _setPrevious(comp);
                this.syncprev = false;
                if (DEBUG) System.out.println(this + " prev " + comp);
                syncPrevious();
                firePropertyChanged(Plant3D.URIs.HasPrevious);
                if (comp != null)
                        comp.sync();
-               
        }
+       
+       protected void _setPrevious(PipelineComponent comp) {
+        this.previous = comp;
+    }
+       
        private PipelineComponent branch0;
        
        @RelatedGetObj(Plant3D.URIs.HasBranch0)
@@ -214,8 +234,8 @@ public abstract class PipelineComponent extends GeometryNode {
        
        private PipeControlPoint getBranchPoint() {
                PipeControlPoint branchPoint;
-               if (getControlPoint().getSubPoint().size() > 0) {
-                       branchPoint = getControlPoint().getSubPoint().get(0);
+               if (getControlPoint().getChildPoints().size() > 0) {
+                       branchPoint = getControlPoint().getChildPoints().get(0);
                } else {
                        if (branch0.getPipeRun() == null)
                                return null;
@@ -236,27 +256,27 @@ public abstract class PipelineComponent extends GeometryNode {
                if (pcp.getNext() != nextPCP) {
                        pcp.setNext(nextPCP);
                }
-               if (pcp.isDualInline()) {
-                       PipeControlPoint sub = pcp.getSubPoint().get(0);
-                       if (sub.getNext() != nextPCP)
-                               sub.setNext(nextPCP);
-               }
+//             if (pcp.isDualInline()) {
+//                     PipeControlPoint sub = pcp.getChildPoints().get(0);
+//                     if (sub.getNext() != nextPCP)
+//                             sub.setNext(nextPCP);
+//             }
                return true;
        }
        
        private boolean  _connectPrev(PipeControlPoint pcp, PipeControlPoint prevPCP) {
                if (prevPCP == null)
                        return false;
-               if (prevPCP.isDualInline())
-                       prevPCP = prevPCP.getSubPoint().get(0);
+//             if (prevPCP.isDualInline())
+//                     prevPCP = prevPCP.getChildPoints().get(0);
                if (pcp.getPrevious() != prevPCP) {
                        pcp.setPrevious(prevPCP);
                }
-               if (pcp.isDualInline()) {
-                       PipeControlPoint sub = pcp.getSubPoint().get(0);
-                       if (sub.getPrevious() != prevPCP)
-                               sub.setPrevious(prevPCP);
-               }
+//             if (pcp.isDualInline()) {
+//                     PipeControlPoint sub = pcp.getChildPoints().get(0);
+//                     if (sub.getPrevious() != prevPCP)
+//                             sub.setPrevious(prevPCP);
+//             }
                return true;
        }
        
@@ -264,13 +284,13 @@ public abstract class PipelineComponent extends GeometryNode {
        // Control point structure is left into illegal state.
        private void _removeRef(PipelineComponent comp) {
                if (next == comp) {
-                       next = null;
+                       _setNext(null);
                        syncnext = false;
                        if (DEBUG) System.out.println(this + " remove next " + comp);
                        firePropertyChanged(Plant3D.URIs.HasNext);
                        syncNext();
                } else if (previous == comp) {
-                       previous = null;
+                       _setPrevious(null);
                        syncprev = false;
                        if (DEBUG) System.out.println(this + " remove prev " + comp);
                        firePropertyChanged(Plant3D.URIs.HasPrevious);
@@ -394,7 +414,7 @@ public abstract class PipelineComponent extends GeometryNode {
                                        return false;
                                }
                                
-                       } else if (getControlPoint().getSubPoint().size() > 0) { // TODO : this may cause problems? (Removes branch point, before branch has been set?)
+                       } else if (getControlPoint().getChildPoints().size() > 0) { // TODO : this may cause problems? (Removes branch point, before branch has been set?)
                                //getControlPoint().getSubPoint().get(0).remove();
                                //getControlPoint().children.clear();
                                return true;
@@ -421,7 +441,7 @@ public abstract class PipelineComponent extends GeometryNode {
        }
        
        public Map<String,Object> updateParameterMap() {
-               return Collections.EMPTY_MAP;
+               return Collections.emptyMap();
        }
        
        public abstract String getType();