X-Git-Url: https://gerrit.simantics.org/r/gitweb?a=blobdiff_plain;f=org.simantics.plant3d%2Fsrc%2Forg%2Fsimantics%2Fplant3d%2Fscenegraph%2FEquipment.java;h=214b632fdde54657d89e16b3c4321e451615a6c6;hb=HEAD;hp=27a76067be46d08f8db412f5dc61f2ef2229f170;hpb=1c986f49dd51037e0a189df77a76abce890ae8ae;p=simantics%2F3d.git diff --git a/org.simantics.plant3d/src/org/simantics/plant3d/scenegraph/Equipment.java b/org.simantics.plant3d/src/org/simantics/plant3d/scenegraph/Equipment.java index 27a76067..214b632f 100644 --- a/org.simantics.plant3d/src/org/simantics/plant3d/scenegraph/Equipment.java +++ b/org.simantics.plant3d/src/org/simantics/plant3d/scenegraph/Equipment.java @@ -45,8 +45,12 @@ public class Equipment extends P3DParentGeometryNode { @RelatedElementsAdd(Plant3D.URIs.HasNozzle) public void addChild(Nozzle node) { + Collection children = getChild(); + if (numberOfFixedNozzles() > 0 && children.size() >= numberOfFixedNozzles()) + throw new RuntimeException("Equipment has already all fixed nozzles"); + Set ids = new HashSet(); - for (Nozzle n : getChild()) { + for (Nozzle n : children) { ids.add(n.getNozzleId()); } int newId = 0; @@ -55,7 +59,7 @@ public class Equipment extends P3DParentGeometryNode { addNode(Plant3D.URIs.HasNozzle,node); node.setNozzleId(newId); if (fnp != null) - syncNozzles(); + syncNozzles(); } @RelatedElementsGet(Plant3D.URIs.HasNozzle) @@ -80,21 +84,22 @@ public class Equipment extends P3DParentGeometryNode { @CompoundSetPropertyValue(value="parameters") public void setParameterMap(Map parameters) { super.setParameterMap(parameters); + syncNozzles(); } @Override public void setGeometry(GeometryProvider provider) { - super.setGeometry(provider); - if (provider instanceof FixedNozzleProvider) { - fnp = (FixedNozzleProvider)provider; - syncNozzles(); - } + super.setGeometry(provider); + if (provider instanceof FixedNozzleProvider) { + fnp = (FixedNozzleProvider)provider; + syncNozzles(); + } } public int numberOfFixedNozzles() { - if (fnp == null) - return 0; - return fnp.numberOfNozzles(); + if (fnp == null) + return 0; + return fnp.numberOfNozzles(); } /** @@ -103,19 +108,19 @@ public class Equipment extends P3DParentGeometryNode { * Note: this method does not create nozzles, just sets their positions and names. */ public void syncNozzles() { - if (fnp == null) - return; - - int count = fnp.numberOfNozzles(); - List currentNozzles = getNodes(); - for (int i = 0; i < count; i++) { - if (i < currentNozzles.size()) { - Nozzle nozzle = currentNozzles.get(i); - nozzle.setName(fnp.getNozzleName(i)); - fnp.updateNozzlePosition(i, nozzle); - nozzle.setFixed(true); - } - } + if (fnp == null) + return; + updateParameters(); + int count = fnp.numberOfNozzles(); + List currentNozzles = getNodes(); + for (int i = 0; i < count; i++) { + if (i < currentNozzles.size()) { + Nozzle nozzle = currentNozzles.get(i); + nozzle.setName(fnp.getNozzleName(i)); + fnp.updateNozzlePosition(i, nozzle); + nozzle.setFixed(true); + } + } } @Override