X-Git-Url: https://gerrit.simantics.org/r/gitweb?a=blobdiff_plain;f=org.simantics.plant3d%2Fsrc%2Forg%2Fsimantics%2Fplant3d%2Fscenegraph%2FPipelineComponent.java;h=e1a24f10369024c61a29a1b3d1e8e525039cac3f;hb=3f17b6e42935927f12683fc26ecd5808bf66cde6;hp=b052bae435d2a25d8061e29881717b007656f237;hpb=1ca09aa9bae3ea1e3382ceff0a2a09427f173286;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 b052bae4..e1a24f10 100644 --- a/org.simantics.plant3d/src/org/simantics/plant3d/scenegraph/PipelineComponent.java +++ b/org.simantics.plant3d/src/org/simantics/plant3d/scenegraph/PipelineComponent.java @@ -129,6 +129,12 @@ public abstract class PipelineComponent extends GeometryNode { } setParameterMap(parameters); } + + public void setParameter(String name, Object value) { + Map parameters = new HashMap<>(getParameterMap()); + parameters.put(name, value); + setParameterMap(parameters); + } public abstract void setType(String typeURI) throws Exception; @@ -139,8 +145,10 @@ public abstract class PipelineComponent extends GeometryNode { @RelatedSetObj(Plant3D.URIs.HasNext) public void setNext(PipelineComponent comp) { - if (next == comp) + if (next == comp) { + syncNext(); return; + } if (this.next != null) this.next._removeRef(this); _setNext(comp); @@ -164,8 +172,10 @@ public abstract class PipelineComponent extends GeometryNode { @RelatedSetObj(Plant3D.URIs.HasPrevious) public void setPrevious(PipelineComponent comp) { - if (previous == comp) + if (previous == comp) { + syncPrevious(); return; + } if (this.previous != null) this.previous._removeRef(this); _setPrevious(comp); @@ -190,8 +200,10 @@ public abstract class PipelineComponent extends GeometryNode { @RelatedSetObj(Plant3D.URIs.HasBranch0) public void setBranch0(PipelineComponent comp) { - if (branch0 == comp) + if (branch0 == comp) { + syncBranch0(); return; + } if (this.branch0 != null) this.branch0._removeRef(this); this.branch0 = comp; @@ -299,7 +311,7 @@ public abstract class PipelineComponent extends GeometryNode { } boolean syncnext = false; - private void syncNext() { + protected void syncNext() { if (syncnext) return; syncnext = _syncNext(); @@ -338,7 +350,7 @@ public abstract class PipelineComponent extends GeometryNode { } boolean syncprev = false; - private void syncPrevious() { + protected void syncPrevious() { if (syncprev) return; syncprev = _syncPrevious(); @@ -375,7 +387,7 @@ public abstract class PipelineComponent extends GeometryNode { } boolean syncbr0 = false; - private void syncBranch0() { + protected void syncBranch0() { if (syncbr0) return; syncbr0 = _syncBranch0(); @@ -449,6 +461,7 @@ public abstract class PipelineComponent extends GeometryNode { if (pcp != null && pcp.getPipelineComponent() != null) { pcp.remove(); } + setPipeRun(null); super.remove(); } @@ -458,6 +471,7 @@ public abstract class PipelineComponent extends GeometryNode { if (pcp != null && pcp.getPipelineComponent() != null) { pcp.removeAndSplit(); } + setPipeRun(null); super.remove(); } @@ -661,4 +675,32 @@ public abstract class PipelineComponent extends GeometryNode { throw new IllegalStateException("No centroid defined"); } } + + + private String error; + + /** + * Returns possible pipe modelling error, or null; + * @return + */ + @GetPropertyValue(name="Error", value="error", tabId = "Default") + public String getError() { + return error; + } + + /** + * Sets pipe modelling error. + * + * Error is usually set by PipingRules. + * @param error + */ + public void setError(String error) { + if (this.error == null) { + if (error == null) + return; + } else if (this.error.equals(error)) + return; + this.error = error; + firePropertyChanged("error"); + } }