]> gerrit.simantics Code Review - simantics/3d.git/blobdiff - org.simantics.plant3d/src/org/simantics/plant3d/scenegraph/controlpoint/PipeControlPoint.java
White space clean-up
[simantics/3d.git] / org.simantics.plant3d / src / org / simantics / plant3d / scenegraph / controlpoint / PipeControlPoint.java
index 51addbb09ee9edf707af756c8d9d035807aa99d2..cb4b57eb898eefcb69d2797ccb3a182570d6c2a9 100644 (file)
@@ -23,15 +23,15 @@ import vtk.vtkRenderer;
 
 
 public class PipeControlPoint extends G3DNode implements IP3DNode {
-    
-    private static boolean DEBUG = false;
-       
+
+       private static boolean DEBUG = false;
+
        public enum PointType{INLINE,TURN,END};
        public enum Direction{NEXT,PREVIOUS};
        public enum PositionType {SPLIT,NEXT,PREVIOUS,PORT}
-       
+
        private PipelineComponent component;
-       
+
        private PointType type;
        private boolean isFixed = true;
        private boolean isRotate = false;
@@ -39,19 +39,19 @@ public class PipeControlPoint extends G3DNode implements IP3DNode {
        private boolean isDeletable = true;
        private boolean isSizeChange = false;
        private boolean isSub = false;
-       
+
        public PipeControlPoint(PipelineComponent component) {
                this.component = component;
                if (component.getPipeRun() != null)
                        component.getPipeRun().addChild(this);
-               
+
        }
-       
+
        public PipeControlPoint(PipelineComponent component, PipeRun piperun) {
                this.component = component;
                piperun.addChild(this);
        }
-       
+
        @Override
        public void update(vtkRenderer ren) {
                try {
@@ -59,146 +59,146 @@ public class PipeControlPoint extends G3DNode implements IP3DNode {
                } catch (Exception e) {
                        e.printStackTrace();
                }
-               
+
        }
-       
+
        public PipeRun getPipeRun() {
                return (PipeRun)getParent();
        }
-       
+
        public PipelineComponent getPipelineComponent() {
                return component;
        }
-       
+
        public PointType getType() {
                return type;
        }
-       
+
        public void setType(PointType type) {
                this.type = type;
        }
-       
+
        @GetPropertyValue(name="Fixed",tabId="Debug",value="fixed")
        public boolean isFixed() {
                return isFixed;
        }
-       
-       
+
+
        public void setFixed(boolean fixed) {
                this.isFixed = fixed;
        }
-       
+
        @GetPropertyValue(name="Rotate",tabId="Debug",value="rotate")
        public boolean isRotate() {
                return isRotate;
        }
-       
+
        public void setRotate(boolean rotate) {
                this.isRotate = rotate;
        }
-       
+
        @GetPropertyValue(name="Reverse",tabId="Debug",value="reverse")
        public boolean isReverse() {
                return isReverse;
        }
-       
+
        public void setReverse(boolean reverse) {
                this.isReverse = reverse;
        }
-       
+
        public void setSub(boolean sub) {
                this.isSub = sub;
        }
-               
+
        @GetPropertyValue(name="Deletable",tabId="Debug",value="deletable")
        public boolean isDeletable() {
                return isDeletable;
        }
-       
+
        public void setDeletable(boolean deletable) {
                this.isDeletable = deletable;
        }
-       
+
        public boolean isPathLegEnd() {
                return type != PointType.INLINE;
        }
-       
+
        public boolean isEnd() {
                return type == PointType.END;
        }
-       
+
        public boolean isTurn() {
                return type == PointType.TURN;
        }
-       
+
        public boolean isInline() {
                return type == PointType.INLINE;
        }
-       
+
        public boolean isDirected() {
                return isFixed && isEnd();
        }
-       
+
        public boolean isNonDirected() {
                return !isFixed && isEnd();
        }
-       
+
        public boolean isVariableLength() {
                return !isFixed && isInline();
        }
-       
+
        public boolean isVariableAngle() {
                return !isFixed && isTurn();
        }
-       
+
        public boolean isBranchEnd() {
                return isDeletable && isEnd();
        }
-       
+
        public boolean isOffset() {
                return offset != null;
        }
-       
+
        public boolean isDualSub() {
                return parent != null && isSub;
        }
-       
+
        public boolean isDualInline() {
                return children.size() == 1 && children.get(0).isDualSub();
        }
-       
+
        public boolean isSizeChange() {
-           return isSizeChange;
-//             if (children.size() == 0)
-//                     return false;
-//             if (!isDualInline())
-//                     return false;
-//             return getPipeRun() != children.get(0).getPipeRun();
-       }
-       
+               return isSizeChange;
+               //              if (children.size() == 0)
+               //                      return false;
+               //              if (!isDualInline())
+               //                      return false;
+               //              return getPipeRun() != children.get(0).getPipeRun();
+       }
+
        public void setSizeChange(boolean isSizeChange) {
-        this.isSizeChange = isSizeChange;
-    }
+               this.isSizeChange = isSizeChange;
+       }
+
 
-       
        private PipeControlPoint next;
        private PipeControlPoint previous;
-       
+
        public PipeControlPoint getNext() {
                return next;
        }
-       
+
        public PipeControlPoint getPrevious() {
                return previous;
        }
-       
+
        public void setNext(PipeControlPoint next) {
                if (isEnd() && previous != null && next != null)
                        throw new RuntimeException("End control points are allowed to have only one connection");
                if (next == this)
-            throw new RuntimeException("Cannot connect to self");
+                       throw new RuntimeException("Cannot connect to self");
                if (this.next == next)
-                   return;
+                       return;
                if (DEBUG) System.out.println(this + " next " + next);
                this.next = next;
                if (component != null) {
@@ -208,16 +208,16 @@ public class PipeControlPoint extends G3DNode implements IP3DNode {
                                component.setBranch0(next != null ? next.component : null);
                        updateSubPoint();
                }
-               
+
        }
-       
+
        public void setPrevious(PipeControlPoint previous) {
                if (isEnd() && next != null && previous != null)
                        throw new RuntimeException("End control points are allowed to have only one connection");
                if (previous == this)
-                   throw new RuntimeException("Cannot connect to self");
+                       throw new RuntimeException("Cannot connect to self");
                if (this.previous == previous)
-                   return;
+                       return;
                if (DEBUG) System.out.println(this + " previous " + previous);
                this.previous = previous;
                if (component != null) {
@@ -227,21 +227,21 @@ public class PipeControlPoint extends G3DNode implements IP3DNode {
                                component.setBranch0(previous != null ? previous.component : null);
                        updateSubPoint();
                }
-               
+
        }
-       
+
        public PipeControlPoint parent;
        public List<PipeControlPoint> children = new ArrayList<PipeControlPoint>();
-       
+
        public List<PipeControlPoint> getSubPoint() {
                return children;
        }
-       
+
        public PipeControlPoint getParentPoint() {
                return parent;
        }
 
-       
+
        private double length;
        private Double turnAngle;
        private Vector3d turnAxis;
@@ -249,12 +249,12 @@ public class PipeControlPoint extends G3DNode implements IP3DNode {
        private Double offset;
        private Double rotationAngle;
        private Boolean reversed;
-       
+
        @GetPropertyValue(name="Length",tabId="Debug",value="length")
        public double getLength() {
                return length;
        }
-       
+
        public void setLength(double l) {
                if (Double.isInfinite(l) || Double.isNaN(l)) {
                        return;
@@ -266,38 +266,38 @@ public class PipeControlPoint extends G3DNode implements IP3DNode {
                if (isDualInline())
                        getSubPoint().get(0).setLength(l);
        }
-       
+
        @GetPropertyValue(name="Turn Angle",tabId="Debug",value="turnAngle")
        public Double getTurnAngle() {
                return turnAngle;
        }
-       
+
        @GetPropertyValue(name="Turn Axis",tabId="Debug",value="turnAxis")
        public Vector3d getTurnAxis() {
                return turnAxis;
        }
-       
+
        @GetPropertyValue(name="Offset",tabId="Debug",value="offset")
        public Double getOffset() {
                return offset;
        }
-       
+
        @GetPropertyValue(name="Rotation Angle",tabId="Debug",value="rotationAngle")
        public Double getRotationAngle() {
                return rotationAngle;
        }
-       
+
        @GetPropertyValue(name="Reversed",tabId="Debug",value="reversed")
        public Boolean getReversed() {
                return reversed;
        }
-       
+
        public boolean _getReversed() {
-           if (reversed == null)
-               return false;
-        return reversed;
-    }
-       
+               if (reversed == null)
+                       return false;
+               return reversed;
+       }
+
        public void setTurnAngle(Double turnAngle) {
                if (turnAngle == null || Double.isInfinite(turnAngle) || Double.isNaN(turnAngle)) {
                        return;
@@ -307,14 +307,14 @@ public class PipeControlPoint extends G3DNode implements IP3DNode {
                this.turnAngle = turnAngle;
                firePropertyChanged("turnAngle");
        }
-       
+
        public void setTurnAxis(Vector3d turnAxis) {
-           if (this.turnAxis != null && MathTools.equals(turnAxis, this.turnAxis))
-            return;
-           this.turnAxis = turnAxis;
+               if (this.turnAxis != null && MathTools.equals(turnAxis, this.turnAxis))
+                       return;
+               this.turnAxis = turnAxis;
                firePropertyChanged("turnAxis");
        }
-       
+
        public void setOffset(Double offset) {
                if (Double.isInfinite(offset) || Double.isNaN(offset)) {
                        return;
@@ -324,7 +324,7 @@ public class PipeControlPoint extends G3DNode implements IP3DNode {
                this.offset = offset;
                firePropertyChanged("offset");
        }
-       
+
        public void setRotationAngle(Double rotationAngle) {
                if (Double.isInfinite(rotationAngle) || Double.isNaN(rotationAngle)) {
                        return;
@@ -334,12 +334,12 @@ public class PipeControlPoint extends G3DNode implements IP3DNode {
                this.rotationAngle = rotationAngle;
                firePropertyChanged("rotationAngle");
        }
-       
+
        public void setReversed(Boolean reversed) {
                this.reversed = reversed;
                firePropertyChanged("reversed");
        }
-       
+
        public Vector3d getSizeChangeOffsetVector(Vector3d dir) {
                Quat4d q;
                if (rotationAngle == null)
@@ -347,11 +347,11 @@ public class PipeControlPoint extends G3DNode implements IP3DNode {
                else
                        q = getControlPointOrientationQuat(dir, rotationAngle);
                Vector3d v = new Vector3d(0.0,offset,0.0);
-       Vector3d offset = new Vector3d();
-       MathTools.rotate(q, v, offset);
-       return offset;
+               Vector3d offset = new Vector3d();
+               MathTools.rotate(q, v, offset);
+               return offset;
        }
-       
+
        public Vector3d getSizeChangeOffsetVector() {
                Quat4d q;
                if (rotationAngle == null)
@@ -359,175 +359,175 @@ public class PipeControlPoint extends G3DNode implements IP3DNode {
                else
                        q = getControlPointOrientationQuat(rotationAngle);
                Vector3d v = new Vector3d(0.0,offset,0.0);
-       Vector3d offset = new Vector3d();
-       MathTools.rotate(q, v, offset);
-       return offset;
+               Vector3d offset = new Vector3d();
+               MathTools.rotate(q, v, offset);
+               return offset;
        }
-       
+
        @GetPropertyValue(name="Next",tabId="Debug",value="next")
        private String getNextString() {
                if (next == null)
                        return null;
                return next.toString();
        }
-       
+
        @GetPropertyValue(name="Previous",tabId="Debug",value="previous")
        private String getPrevString() {
                if (previous == null)
                        return null;
                return previous.toString();
        }
-       
+
        @GetPropertyValue(name="Sub",tabId="Debug",value="sub")
        private String getSubString() {
                if (children.size() == 0)
                        return "";
                return Arrays.toString(children.toArray());
        }
-       
+
        @GetPropertyValue(name="Type",tabId="Debug",value="type")
        public String getTypeString() {
                return type.name();
        }
-       
+
        public Quat4d getControlPointOrientationQuat(double angle) {
-                
-                if (turnAxis == null) {
-                        Vector3d dir = getPathLegDirection(Direction.NEXT);
-                        if (dir.lengthSquared() > MathTools.NEAR_ZERO)
-                                dir.normalize();
-                        return getControlPointOrientationQuat(dir, angle);
-                } else {
-                        Vector3d dir = getPathLegDirection(Direction.PREVIOUS);
-                        dir.negate();
-                        if (dir.lengthSquared() > MathTools.NEAR_ZERO)
-                                dir.normalize();
-                        return getControlPointOrientationQuat(dir, turnAxis, angle);
-                }
-       }
-        
-    public Quat4d getControlPointOrientationQuat(double angle, boolean reversed) {
-                
-                if (turnAxis == null) {
-                        Vector3d dir = getPathLegDirection(Direction.NEXT);
-                        if (dir.lengthSquared() > MathTools.NEAR_ZERO)
-                                dir.normalize();
-                        Quat4d q =  getControlPointOrientationQuat(dir, angle);
-                        if (reversed) {
+
+               if (turnAxis == null) {
+                       Vector3d dir = getPathLegDirection(Direction.NEXT);
+                       if (dir.lengthSquared() > MathTools.NEAR_ZERO)
+                               dir.normalize();
+                       return getControlPointOrientationQuat(dir, angle);
+               } else {
+                       Vector3d dir = getPathLegDirection(Direction.PREVIOUS);
+                       dir.negate();
+                       if (dir.lengthSquared() > MathTools.NEAR_ZERO)
+                               dir.normalize();
+                       return getControlPointOrientationQuat(dir, turnAxis, angle);
+               }
+       }
+
+       public Quat4d getControlPointOrientationQuat(double angle, boolean reversed) {
+
+               if (turnAxis == null) {
+                       Vector3d dir = getPathLegDirection(Direction.NEXT);
+                       if (dir.lengthSquared() > MathTools.NEAR_ZERO)
+                               dir.normalize();
+                       Quat4d q =  getControlPointOrientationQuat(dir, angle);
+                       if (reversed) {
                                Quat4d q2 = new Quat4d();
                                q2.set(new AxisAngle4d(MathTools.Y_AXIS, Math.PI));
                                q.mulInverse(q2);
-                        }
-                        return q;
-                } else {
-                        Vector3d dir = getPathLegDirection(Direction.PREVIOUS);
-                        dir.negate();
-                        if (dir.lengthSquared() > MathTools.NEAR_ZERO)
-                                dir.normalize();
-                        return getControlPointOrientationQuat(dir, turnAxis, angle);
-                }
-       }
-        
-       
-       
-       public static Quat4d getControlPointOrientationQuat(Vector3d dir, double angle) {
-                       if (dir.lengthSquared() < MathTools.NEAR_ZERO)
-                               return MathTools.getIdentityQuat();
-               
-               
-                       Vector3d up = new Vector3d(0.0, 1.0, 0.0);
-                       double a = up.angle(dir);
-                       if (a < 0.1 || (Math.PI - a) < 0.1) {
-                               up.set(1.0, 0.0, 0.0);
                        }
-                       
-
-                       return getControlPointOrientationQuat(dir, up, angle);
-           }
-        
-        public static Quat4d getControlPointOrientationQuat(Vector3d dir, Vector3d up,  double angle) {
-                       if (dir.lengthSquared() < MathTools.NEAR_ZERO)
-                               return MathTools.getIdentityQuat();
-               
-               final Vector3d front = new Vector3d(1.0,0.0,0.0);
-               
-               Quat4d q1 = new Quat4d();
-
-
-                       Vector3d right = new Vector3d();
-
-                       right.cross(dir, up);
-                       up.cross(right, dir);
-                       right.normalize();
-                       up.normalize();
-
-                       Matrix3d m = new Matrix3d();
-                       m.m00 = dir.x;
-                       m.m10 = dir.y;
-                       m.m20 = dir.z;
-                       m.m01 = up.x;
-                       m.m11 = up.y;
-                       m.m21 = up.z;
-                       m.m02 = right.x;
-                       m.m12 = right.y;
-                       m.m22 = right.z;
-
-                       //q1.set(m); MathTools contains more stable conversion
-                       MathTools.getQuat(m, q1);
-
-//                     if (DEBUG) System.out.println("PipingTools.getPipeComponentOrientationQuat() " + dir+ " " + up + " " + right);
-
-                       Quat4d q2 = new Quat4d();
-                       q2.set(new AxisAngle4d(front, angle));
-                       q1.mul(q2);
-                       return q1;
-           }
-       
+                       return q;
+               } else {
+                       Vector3d dir = getPathLegDirection(Direction.PREVIOUS);
+                       dir.negate();
+                       if (dir.lengthSquared() > MathTools.NEAR_ZERO)
+                               dir.normalize();
+                       return getControlPointOrientationQuat(dir, turnAxis, angle);
+               }
+       }
+
+
+
+       public static Quat4d getControlPointOrientationQuat(Vector3d dir, double angle) {
+               if (dir.lengthSquared() < MathTools.NEAR_ZERO)
+                       return MathTools.getIdentityQuat();
+
+
+               Vector3d up = new Vector3d(0.0, 1.0, 0.0);
+               double a = up.angle(dir);
+               if (a < 0.1 || (Math.PI - a) < 0.1) {
+                       up.set(1.0, 0.0, 0.0);
+               }
+
+
+               return getControlPointOrientationQuat(dir, up, angle);
+       }
+
+       public static Quat4d getControlPointOrientationQuat(Vector3d dir, Vector3d up,  double angle) {
+               if (dir.lengthSquared() < MathTools.NEAR_ZERO)
+                       return MathTools.getIdentityQuat();
+
+               final Vector3d front = new Vector3d(1.0,0.0,0.0);
+
+               Quat4d q1 = new Quat4d();
+
+
+               Vector3d right = new Vector3d();
+
+               right.cross(dir, up);
+               up.cross(right, dir);
+               right.normalize();
+               up.normalize();
+
+               Matrix3d m = new Matrix3d();
+               m.m00 = dir.x;
+               m.m10 = dir.y;
+               m.m20 = dir.z;
+               m.m01 = up.x;
+               m.m11 = up.y;
+               m.m21 = up.z;
+               m.m02 = right.x;
+               m.m12 = right.y;
+               m.m22 = right.z;
+
+               //q1.set(m); MathTools contains more stable conversion
+               MathTools.getQuat(m, q1);
+
+               //                      if (DEBUG) System.out.println("PipingTools.getPipeComponentOrientationQuat() " + dir+ " " + up + " " + right);
+
+               Quat4d q2 = new Quat4d();
+               q2.set(new AxisAngle4d(front, angle));
+               q1.mul(q2);
+               return q1;
+       }
+
        public Vector3d getDirection(Direction direction) {
-           if (isDirected())
-               return getDirectedControlPointDirection();
-           if (isTurn() && isFixed()) {
-               if (direction == Direction.NEXT) {
-                   if (previous != null) {
-                   PipeControlPoint pcp = this;
-                    Vector3d dir = new Vector3d();
-                    dir.sub(pcp.getWorldPosition(),previous.getWorldPosition());
-                    if (dir.lengthSquared() > MathTools.NEAR_ZERO)
-                         dir.normalize();
-                    else
-                        return null;
-                    Quat4d q = getControlPointOrientationQuat(dir, pcp.getRotationAngle() != null ? pcp.getRotationAngle() : 0.0);
-                    AxisAngle4d aa = new AxisAngle4d(MathTools.Y_AXIS,pcp.getTurnAngle() == null ? 0.0 : pcp.getTurnAngle());
-                    Quat4d q2 = MathTools.getQuat(aa);
-                    Vector3d v = new Vector3d(1.,0.,0.);
-                    Vector3d offset = new Vector3d();
-                    MathTools.rotate(q2, v, offset);
-                    MathTools.rotate(q, offset, dir);
-                    return dir;
-                   }
-               } else {
-                   if (next != null) {
-                   PipeControlPoint pcp = this;
-                    Vector3d dir = new Vector3d();
-                    dir.sub(next.getWorldPosition(),pcp.getWorldPosition());
-                    if (dir.lengthSquared() > MathTools.NEAR_ZERO)
-                         dir.normalize();
-                    else
-                        return null;
-                    Quat4d q = getControlPointOrientationQuat(dir, pcp.getRotationAngle() != null ? pcp.getRotationAngle() : 0.0);
-                    AxisAngle4d aa = new AxisAngle4d(MathTools.Y_AXIS,pcp.getTurnAngle() == null ? 0.0 : pcp.getTurnAngle());
-                    Quat4d q2 = MathTools.getQuat(aa);
-                    Vector3d v = new Vector3d(1.,0.,0.);
-                    Vector3d offset = new Vector3d();
-                    MathTools.rotate(q2, v, offset);
-                    MathTools.rotate(q, offset, dir);
-                    return dir;
-                   }
-               }
-           }
-           return null;
-       }
-       
+               if (isDirected())
+                       return getDirectedControlPointDirection();
+               if (isTurn() && isFixed()) {
+                       if (direction == Direction.NEXT) {
+                               if (previous != null) {
+                                       PipeControlPoint pcp = this;
+                                       Vector3d dir = new Vector3d();
+                                       dir.sub(pcp.getWorldPosition(),previous.getWorldPosition());
+                                       if (dir.lengthSquared() > MathTools.NEAR_ZERO)
+                                               dir.normalize();
+                                       else
+                                               return null;
+                                       Quat4d q = getControlPointOrientationQuat(dir, pcp.getRotationAngle() != null ? pcp.getRotationAngle() : 0.0);
+                                       AxisAngle4d aa = new AxisAngle4d(MathTools.Y_AXIS,pcp.getTurnAngle() == null ? 0.0 : pcp.getTurnAngle());
+                                       Quat4d q2 = MathTools.getQuat(aa);
+                                       Vector3d v = new Vector3d(1.,0.,0.);
+                                       Vector3d offset = new Vector3d();
+                                       MathTools.rotate(q2, v, offset);
+                                       MathTools.rotate(q, offset, dir);
+                                       return dir;
+                               }
+                       } else {
+                               if (next != null) {
+                                       PipeControlPoint pcp = this;
+                                       Vector3d dir = new Vector3d();
+                                       dir.sub(next.getWorldPosition(),pcp.getWorldPosition());
+                                       if (dir.lengthSquared() > MathTools.NEAR_ZERO)
+                                               dir.normalize();
+                                       else
+                                               return null;
+                                       Quat4d q = getControlPointOrientationQuat(dir, pcp.getRotationAngle() != null ? pcp.getRotationAngle() : 0.0);
+                                       AxisAngle4d aa = new AxisAngle4d(MathTools.Y_AXIS,pcp.getTurnAngle() == null ? 0.0 : pcp.getTurnAngle());
+                                       Quat4d q2 = MathTools.getQuat(aa);
+                                       Vector3d v = new Vector3d(1.,0.,0.);
+                                       Vector3d offset = new Vector3d();
+                                       MathTools.rotate(q2, v, offset);
+                                       MathTools.rotate(q, offset, dir);
+                                       return dir;
+                               }
+                       }
+               }
+               return null;
+       }
+
        public void insert(PipeControlPoint previous, PipeControlPoint next) {
                // inserting an offsetpoint is error, 
                if (isDualSub())
@@ -543,11 +543,11 @@ public class PipeControlPoint extends G3DNode implements IP3DNode {
                } else {
                        piperun.addChild(this);
                }
-               
+
                // insert new BranchControlPoint between straight's control points
                PipeControlPoint previousNext = previous.getNext();
                PipeControlPoint previousPrevious = previous.getPrevious();
-               
+
                PipeControlPoint offsetCP = null;
                if (isOffset()) {
                        offsetCP = getSubPoint().get(0);
@@ -565,7 +565,7 @@ public class PipeControlPoint extends G3DNode implements IP3DNode {
                                previous.getParentPoint().setNext(this);
                        }
                        this.setNext(next);
-                       
+
                        if (offsetCP == null) {
                                next.setPrevious(this);
                        } else {
@@ -573,17 +573,17 @@ public class PipeControlPoint extends G3DNode implements IP3DNode {
                                offsetCP.setNext(next);
                                offsetCP.setPrevious(previous);
                        }
-                       
+
                        if (next.isDualInline()) {
                                next.getSubPoint().get(0).setPrevious(this);
                        }
                } else if (previousPrevious != null && previousPrevious == next) {
-                        // control point were given in reverse order 
+                       // control point were given in reverse order 
                        if (next.isDualInline())
                                throw new RuntimeException();
                        if (previous.isDualSub())
                                throw new RuntimeException();
-                       
+
                        this.setNext(previous);
                        if (offsetCP == null) {
                                previous.setNext(this);
@@ -600,16 +600,16 @@ public class PipeControlPoint extends G3DNode implements IP3DNode {
                        if (next.isDualSub()) {
                                next.getParentPoint().setNext(this);
                        }
-                       
+
                } else {
                        throw new RuntimeException();
                }       
-               
+
                PipingRules.validate(piperun);
        }
-       
-       
-       
+
+
+
        public void insert(PipeControlPoint pcp, Direction direction) {
                if (isDualSub())
                        throw new RuntimeException();
@@ -651,11 +651,11 @@ public class PipeControlPoint extends G3DNode implements IP3DNode {
                                else
                                        ocp.setPrevious(nocp);
                        }
-                       
+
                }
                PipingRules.validate(getPipeRun());
        }
-       
+
        public Vector3d getDirectedControlPointDirection() {
                assert (isDirected());
                Vector3d dir = new Vector3d();
@@ -663,7 +663,7 @@ public class PipeControlPoint extends G3DNode implements IP3DNode {
                dir.normalize();
                return dir;
        }
-       
+
        public Vector3d getPathLegDirection(Direction direction) {
                if (direction == Direction.NEXT) {
                        if (next != null) {
@@ -679,10 +679,10 @@ public class PipeControlPoint extends G3DNode implements IP3DNode {
                                        if (!isDirected())
                                                throw new RuntimeException("Cannot calculate path leg direction for unconnected control point");
                                        return getDirectedControlPointDirection();
-                                       
+
                                } else {
-                                   if (isVariableAngle())
-                           throw new RuntimeException("Cannot calculate path leg direction for unconnected variable angle control point");
+                                       if (isVariableAngle())
+                                               throw new RuntimeException("Cannot calculate path leg direction for unconnected variable angle control point");
                                        if (isInline()) {
                                                PipeControlPoint pcp = this;
                                                if (pcp.isDualSub()) {
@@ -698,7 +698,7 @@ public class PipeControlPoint extends G3DNode implements IP3DNode {
                                                v.sub(getWorldPosition(),previous.getWorldPosition());
                                                return v;
                                        } else if (isTurn() && isFixed() && !_getReversed()) {
-                                          return getDirection(Direction.NEXT);
+                                               return getDirection(Direction.NEXT);
                                        }
                                        throw new RuntimeException("Missing implementation");
                                }
@@ -719,9 +719,9 @@ public class PipeControlPoint extends G3DNode implements IP3DNode {
                                        v.negate();
                                        return v;
                                } else {
-                                   if (isVariableAngle())
-                           throw new RuntimeException("Cannot calculate path leg direction for unconnected variable angle control point");
-                       if (isInline()) {
+                                       if (isVariableAngle())
+                                               throw new RuntimeException("Cannot calculate path leg direction for unconnected variable angle control point");
+                                       if (isInline()) {
                                                PipeControlPoint pcp = this;
                                                if (pcp.isDualInline()) {
                                                        pcp = pcp.getSubPoint().get(0);
@@ -738,17 +738,17 @@ public class PipeControlPoint extends G3DNode implements IP3DNode {
                                                v.sub(getWorldPosition(),next.getWorldPosition());
                                                return v;
                                        } else if (isTurn() && isFixed() && _getReversed()) {
-                                           return getDirection(Direction.PREVIOUS);
-                    }
+                                               return getDirection(Direction.PREVIOUS);
+                                       }
                                        throw new RuntimeException("Missing implementation");
                                }
                        }
                }
        }
-       
+
        public void getInlineControlPointEnds(Tuple3d p1, Tuple3d p2) {
                assert (isInline());
-               
+
                Vector3d pos = getWorldPosition();
                Vector3d dir = getPathLegDirection(Direction.NEXT);
                dir.normalize();
@@ -758,7 +758,7 @@ public class PipeControlPoint extends G3DNode implements IP3DNode {
                p1.sub(dir);
                p2.add(dir);
        }
-       
+
        public void getControlPointEnds(Tuple3d p1, Tuple3d p2) {
                Vector3d pos = getWorldPosition();
                Vector3d dir1 = getPathLegDirection(Direction.PREVIOUS);
@@ -777,10 +777,10 @@ public class PipeControlPoint extends G3DNode implements IP3DNode {
                p1.add(dir1);
                p2.add(dir2);
        }
-       
+
        public void getInlineControlPointEnds(Tuple3d p1, Tuple3d p2, Vector3d dir) {
                assert (isInline());
-               
+
                Vector3d pos = getWorldPosition();
                dir.set(getPathLegDirection(Direction.NEXT));
                dir.normalize();
@@ -790,10 +790,10 @@ public class PipeControlPoint extends G3DNode implements IP3DNode {
                p1.sub(dir);
                p2.add(dir);
        }
-       
+
        public void getInlineControlPointEnds(Tuple3d center, Tuple3d p1, Tuple3d p2, Vector3d dir) {
                assert (isInline());
-               
+
                Vector3d pos = getWorldPosition();
                center.set(pos);
                dir.set(getPathLegDirection(Direction.NEXT));
@@ -804,7 +804,7 @@ public class PipeControlPoint extends G3DNode implements IP3DNode {
                p1.sub(dir);
                p2.add(dir);
        }
-       
+
        public double getInlineLength() {
                if (type == PointType.TURN)
                        return length;
@@ -812,7 +812,7 @@ public class PipeControlPoint extends G3DNode implements IP3DNode {
                        return length * 0.5;
                return 0;
        }
-       
+
        public Vector3d getRealPosition(PositionType type) {
                Vector3d pos = getWorldPosition();
                switch (type) {
@@ -839,11 +839,11 @@ public class PipeControlPoint extends G3DNode implements IP3DNode {
                case SPLIT:
                        // do nothing
                        break;
-                       
+
                }
                return pos;
        }
-       
+
        public void getInlineMovement(Tuple3d start, Tuple3d end) {
                // FIXME : check type of neighbor components and allow movement on top of variable length components,
                //         find proper range for movement (pcp's position is not)
@@ -852,46 +852,46 @@ public class PipeControlPoint extends G3DNode implements IP3DNode {
                start.set(p.getWorldPosition());
                end.set(n.getWorldPosition());
        }
-       
+
        public PipeControlPoint findNextEnd() {
                ArrayList<PipeControlPoint> t = new ArrayList<PipeControlPoint>();
-        return findNextEnd( t);
+               return findNextEnd( t);
        }
-       
+
        public PipeControlPoint findPreviousEnd() {
                ArrayList<PipeControlPoint> t = new ArrayList<PipeControlPoint>();
-        return findPreviousEnd(t);
+               return findPreviousEnd(t);
        }
-       
+
        public PipeControlPoint findNextEnd(List<PipeControlPoint> nextList) {
-                while (true) {
-            PipeControlPoint pcp = null;
-            PipeControlPoint p = null;
-            if (nextList.size() == 0)
-                p = this;
-                
-            else
-                p = nextList.get(nextList.size() - 1);
-
-            pcp = p.getNext();
-            if (pcp == null) {
-               pcp = p;
-               if (nextList.size() > 0)
-                       nextList.remove(nextList.size() - 1);
-//             if (DEBUG) System.out.println(" " + pcp.getResource() + " not full");
-               return pcp;
-               //break;
-            }
-            if (pcp.isPathLegEnd()) {
-               //if (DEBUG) System.out.println(" " + pcp.getResource());
-                return pcp;
-            } else {
-                nextList.add(pcp);
-               // if (DEBUG) System.out.print(" " + pcp.getResource());
-            }
-        }
-       }
-       
+               while (true) {
+                       PipeControlPoint pcp = null;
+                       PipeControlPoint p = null;
+                       if (nextList.size() == 0)
+                               p = this;
+
+                       else
+                               p = nextList.get(nextList.size() - 1);
+
+                       pcp = p.getNext();
+                       if (pcp == null) {
+                               pcp = p;
+                               if (nextList.size() > 0)
+                                       nextList.remove(nextList.size() - 1);
+                               //              if (DEBUG) System.out.println(" " + pcp.getResource() + " not full");
+                               return pcp;
+                               //break;
+                       }
+                       if (pcp.isPathLegEnd()) {
+                               //if (DEBUG) System.out.println(" " + pcp.getResource());
+                               return pcp;
+                       } else {
+                               nextList.add(pcp);
+                               // if (DEBUG) System.out.print(" " + pcp.getResource());
+                       }
+               }
+       }
+
        public PipeControlPoint findPreviousEnd(List<PipeControlPoint> prevList) {
                while (true) {
                        PipeControlPoint pcp = null;
@@ -907,19 +907,19 @@ public class PipeControlPoint extends G3DNode implements IP3DNode {
                                pcp = p;
                                if (prevList.size() > 0)
                                        prevList.remove(prevList.size() - 1);
-//                             if (DEBUG) System.out.println(" " + pcp.getResource() + " not full");
+                               //                              if (DEBUG) System.out.println(" " + pcp.getResource() + " not full");
                                return pcp;
                        }
                        if (pcp.isPathLegEnd()) {
-//                             if (DEBUG)      System.out.println(" " + pcp.getResource());
+                               //                              if (DEBUG)      System.out.println(" " + pcp.getResource());
                                return pcp;
                        } else {
                                prevList.add(pcp);
-//                             if (DEBUG)System.out.print(" " + pcp.getResource());
+                               //                              if (DEBUG)System.out.print(" " + pcp.getResource());
                        }
                }
        }
-       
+
        public void _remove() {
                if (component == null && next == null && previous == null)
                        return;
@@ -930,7 +930,7 @@ public class PipeControlPoint extends G3DNode implements IP3DNode {
                PipeRun pipeRun = getPipeRun();
                if (pipeRun == null)
                        return;
-               
+
                PipeControlPoint additionalRemove = null;
                if (!PipingRules.isEnabled()) {
                        setPrevious(null);
@@ -948,16 +948,16 @@ public class PipeControlPoint extends G3DNode implements IP3DNode {
                                boolean link = true;
                                if (currentNext.isBranchEnd()) {
                                        link = false;
-//                                     currentNext.setPrevious(null);
-//                                     currentNext.setNext(null);
+                                       //                                      currentNext.setPrevious(null);
+                                       //                                      currentNext.setNext(null);
                                        currentNext.remove();
                                        currentNext = null;
                                        setNext(null);
                                }
                                if (currentPrev.isBranchEnd()) {
                                        link = false;
-//                                     currentPrev.setPrevious(null);
-//                                     currentPrev.setNext(null);
+                                       //                                      currentPrev.setPrevious(null);
+                                       //                                      currentPrev.setNext(null);
                                        currentPrev.remove();
                                        currentPrev = null;
                                        setPrevious(null);
@@ -1015,7 +1015,7 @@ public class PipeControlPoint extends G3DNode implements IP3DNode {
                                                currentPrev.setNext(currentNext);
                                        else
                                                currentPrev.setNext(null);
-                                       
+
                                        setPrevious(null);
                                } else {
                                        throw new RuntimeException("Removing PipeControlPoint " + this + " structure damaged");
@@ -1026,9 +1026,9 @@ public class PipeControlPoint extends G3DNode implements IP3DNode {
                                                additionalRemove = currentPrev;
                                                // combine lengths and set the location of remaining control point to the center.
                                                Point3d ps = new Point3d();
-                                           Point3d pe = new Point3d();
-                                           Point3d ns = new Point3d();
-                        Point3d ne = new Point3d();
+                                               Point3d pe = new Point3d();
+                                               Point3d ns = new Point3d();
+                                               Point3d ne = new Point3d();
                                                currentPrev.getInlineControlPointEnds(ps, pe);
                                                currentNext.getInlineControlPointEnds(ns, ne);
                                                double l = currentPrev.getLength() + currentNext.getLength();
@@ -1081,9 +1081,9 @@ public class PipeControlPoint extends G3DNode implements IP3DNode {
                        } else if (parent!= null) {
                                removeParentPoint();
                        }
-                       
+
                }
-               
+
                removeComponent();
                pipeRun.remChild(this);
                checkRemove(pipeRun);
@@ -1092,7 +1092,7 @@ public class PipeControlPoint extends G3DNode implements IP3DNode {
                if (additionalRemove != null)
                        additionalRemove.remove();
        }
-       
+
        public void remove() {
                PipeControlPoint currentPrev = previous;
                PipeControlPoint currentNext = next;
@@ -1106,7 +1106,7 @@ public class PipeControlPoint extends G3DNode implements IP3DNode {
                        e.printStackTrace();
                }
        }
-       
+
        private void checkRemove(PipeRun pipeRun) {
                Collection<PipeControlPoint> points = pipeRun.getControlPoints();
                if (points.size() == 0) {
@@ -1117,7 +1117,7 @@ public class PipeControlPoint extends G3DNode implements IP3DNode {
                                pcp._remove();
                }
        }
-       
+
        private void removeDualPoint() {
                if (previous != null)
                        previous.setNext(null);
@@ -1134,15 +1134,15 @@ public class PipeControlPoint extends G3DNode implements IP3DNode {
                }
                PipeRun p1 = ocp.getPipeRun();
                PipeRun p2 = sccp.getPipeRun();
-               
+
                ocp.removeComponent();
                sccp.removeComponent();
-               
+
                if (p1 != null)
-                   p1.remChild(ocp);
+                       p1.remChild(ocp);
                if (p2 != null)
-                   p2.remChild(sccp);
-               
+                       p2.remChild(sccp);
+
                // TODO : now we assume that this is size change, and we do
                if (ocp.next != null)
                        ocp.next.setPrevious(null);
@@ -1156,13 +1156,13 @@ public class PipeControlPoint extends G3DNode implements IP3DNode {
                ocp.setPrevious(null);
                sccp.setNext(null);
                sccp.setPrevious(null);
-               
+
                if (p1 != null)
-                   checkRemove(p1);
+                       checkRemove(p1);
                if (p2 != null)
-                   checkRemove(p2);
+                       checkRemove(p2);
        }
-       
+
        private void removeSubPoints() {
                for (PipeControlPoint p : children) {
                        // TODO : this may affect delete routine, since classification of the point changes.
@@ -1171,11 +1171,11 @@ public class PipeControlPoint extends G3DNode implements IP3DNode {
                }
                children.clear();
        }
-       
+
        private void removeParentPoint() {
                throw new RuntimeException("Child points cannot be removed directly");
        }
-       
+
        private void removeComponent() {
                if (component == null)
                        return;
@@ -1191,7 +1191,7 @@ public class PipeControlPoint extends G3DNode implements IP3DNode {
                        else if (next.getPrevious() == component)
                                next.setPrevious(null);
                        else if (next.getBranch0() == component)
-                           next.setBranch0(null);
+                               next.setBranch0(null);
                }
                if (prev != null) {
                        if (prev.getNext() == component)
@@ -1199,22 +1199,22 @@ public class PipeControlPoint extends G3DNode implements IP3DNode {
                        else if (prev.getPrevious() == component)
                                prev.setPrevious(null);
                        else if (prev.getBranch0() == component)
-                           prev.setBranch0(null);
+                               prev.setBranch0(null);
                }
                if (br0 != null) {
-                   if (br0.getNext() == component)
-                       br0.setNext(null);
-                   else if (br0.getPrevious() == component)
-                       br0.setPrevious(null);
-                   else if (br0.getBranch0() == component)
-                       br0.setBranch0(null);
+                       if (br0.getNext() == component)
+                               br0.setNext(null);
+                       else if (br0.getPrevious() == component)
+                               br0.setPrevious(null);
+                       else if (br0.getBranch0() == component)
+                               br0.setBranch0(null);
                }
                PipelineComponent comp = component;
                component = null;
-               
+
                comp.remove();
        }
-       
+
        @Override
        public void setOrientation(Quat4d orientation) {
                if (MathTools.equals(orientation, getOrientation()))
@@ -1224,7 +1224,7 @@ public class PipeControlPoint extends G3DNode implements IP3DNode {
                        component._setWorldOrientation(getWorldOrientation());
                updateSubPoint();
        }
-       
+
        @Override
        public void setPosition(Vector3d position) {
                if (MathTools.equals(position, getPosition()))
@@ -1236,7 +1236,7 @@ public class PipeControlPoint extends G3DNode implements IP3DNode {
                        component._setWorldPosition(getWorldPosition());
                updateSubPoint();
        }
-       
+
        private void updateSubPoint() {
                if (isOffset()) {
                        if (next == null && previous == null) {
@@ -1260,19 +1260,19 @@ public class PipeControlPoint extends G3DNode implements IP3DNode {
                }
        }
 
-       
+
        public void _setWorldPosition(Vector3d position) {
                Vector3d localPos = getLocalPosition(position);
                super.setPosition(localPos);
                updateSubPoint();
        }
-       
+
        public void _setWorldOrientation(Quat4d orientation) {
                Quat4d localOr = getLocalOrientation(orientation);
                super.setOrientation(localOr);
                updateSubPoint();
        }
-       
+
        @Override
        public String toString() {
                return getClass().getName() + "@" + Integer.toHexString(hashCode());