X-Git-Url: https://gerrit.simantics.org/r/gitweb?a=blobdiff_plain;f=org.simantics.plant3d%2Fsrc%2Forg%2Fsimantics%2Fplant3d%2Fscenegraph%2FPipelineComponent.java;h=35df6121bb9575b30375619cad1b83f228ebbb49;hb=9070983be64f9f107e0a6388549aad475fcd9d76;hp=3f393364e3ccf456cc9ab63b53b8c01927ee6278;hpb=46c28cc32944d0f73c5ab4062bd6b0b232143be7;p=simantics%2F3d.git diff --git a/org.simantics.plant3d/src/org/simantics/plant3d/scenegraph/PipelineComponent.java b/org.simantics.plant3d/src/org/simantics/plant3d/scenegraph/PipelineComponent.java index 3f393364..35df6121 100644 --- a/org.simantics.plant3d/src/org/simantics/plant3d/scenegraph/PipelineComponent.java +++ b/org.simantics.plant3d/src/org/simantics/plant3d/scenegraph/PipelineComponent.java @@ -1,15 +1,21 @@ package org.simantics.plant3d.scenegraph; import java.util.Collections; +import java.util.HashMap; import java.util.Map; +import java.util.Map.Entry; import javax.vecmath.Quat4d; import javax.vecmath.Tuple3d; import javax.vecmath.Vector3d; import org.simantics.g3d.math.MathTools; +import org.simantics.g3d.property.annotations.CompoundGetPropertyValue; +import org.simantics.g3d.property.annotations.CompoundSetPropertyValue; import org.simantics.g3d.property.annotations.GetPropertyValue; import org.simantics.g3d.property.annotations.PropertyContributor; +import org.simantics.objmap.graph.annotations.CompoundRelatedGetValue; +import org.simantics.objmap.graph.annotations.CompoundRelatedSetValue; import org.simantics.objmap.graph.annotations.RelatedGetObj; import org.simantics.objmap.graph.annotations.RelatedSetObj; import org.simantics.plant3d.ontology.Plant3D; @@ -26,6 +32,8 @@ import org.simantics.plant3d.scenegraph.controlpoint.PipingRules; */ @PropertyContributor public abstract class PipelineComponent extends GeometryNode { + + private static boolean DEBUG = false; private PipeRun pipeRun; @@ -83,6 +91,38 @@ public abstract class PipelineComponent extends GeometryNode { super.updateParameters(); } + @Override + @CompoundRelatedGetValue(objRelation=Plant3D.URIs.hasParameter,objType=Plant3D.URIs.Parameter,valRelation=Plant3D.URIs.hasParameterValue) + public Map getParameterMap() { + return super.getParameterMap(); + } + + @Override + @CompoundRelatedSetValue(Plant3D.URIs.hasParameter) + public void setParameterMap(Map parameters) { + super.setParameterMap(parameters); + } + + @CompoundGetPropertyValue(name="Parameters",tabId="Parameters",value="parameters") + public Map getParameterMapUI() { + // TODO : how to filter parameters that are calculated by geometry provider? + Map map = new HashMap(getParameterMap()); + map.remove("radius"); + map.remove("radius2"); + map.remove("offset"); + return map; + } + + @CompoundSetPropertyValue(value="parameters") + public void setParameterMapUI(Map parameters) { + Map curr = getParameterMap(); + for (Entry entry : curr.entrySet()) { + if (!parameters.containsKey(entry.getKey())) + parameters.put(entry.getKey(), entry.getValue()); + } + setParameterMap(parameters); + } + public abstract void setType(String typeURI) throws Exception; @RelatedGetObj(Plant3D.URIs.HasNext) @@ -98,11 +138,12 @@ public abstract class PipelineComponent extends GeometryNode { 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(); -// System.out.println(this + " next " + comp); + } @@ -119,11 +160,12 @@ public abstract class PipelineComponent extends GeometryNode { this.previous._removeRef(this); this.previous = comp; this.syncprev = false; + if (DEBUG) System.out.println(this + " prev " + comp); syncPrevious(); firePropertyChanged(Plant3D.URIs.HasPrevious); if (comp != null) comp.sync(); -// System.out.println(this + " prev " + comp); + } private PipelineComponent branch0; @@ -140,11 +182,11 @@ public abstract class PipelineComponent extends GeometryNode { this.branch0._removeRef(this); this.branch0 = comp; this.syncbr0 = false; + if (DEBUG) System.out.println(this + " br0 " + comp); syncBranch0(); firePropertyChanged(Plant3D.URIs.HasBranch0); if (comp != null) comp.sync(); -// System.out.println(this + " next " + comp); } @GetPropertyValue(name="Previous",tabId="Debug",value=Plant3D.URIs.HasPrevious) @@ -224,14 +266,20 @@ public abstract class PipelineComponent extends GeometryNode { if (next == comp) { next = null; syncnext = false; + if (DEBUG) System.out.println(this + " remove next " + comp); + firePropertyChanged(Plant3D.URIs.HasNext); syncNext(); } else if (previous == comp) { previous = null; syncprev = false; + if (DEBUG) System.out.println(this + " remove prev " + comp); + firePropertyChanged(Plant3D.URIs.HasPrevious); syncPrevious(); } else if (branch0 == comp) { branch0 = null; syncbr0 = false; + if (DEBUG) System.out.println(this + " remove br0 " + comp); + firePropertyChanged(Plant3D.URIs.HasBranch0); syncBranch0(); } } @@ -347,8 +395,8 @@ public abstract class PipelineComponent extends GeometryNode { } } else if (getControlPoint().getSubPoint().size() > 0) { // TODO : this may cause problems? (Removes branch point, before branch has been set?) - getControlPoint().getSubPoint().get(0).remove(); - getControlPoint().children.clear(); + //getControlPoint().getSubPoint().get(0).remove(); + //getControlPoint().children.clear(); return true; } } else { @@ -381,6 +429,7 @@ public abstract class PipelineComponent extends GeometryNode { @Override public void remove() { + if (DEBUG) System.out.println(this + " remove"); PipeControlPoint pcp = getControlPoint(); // Second check is needed, when remove process is initiated from control point. if (pcp != null && pcp.getPipelineComponent() != null) {