]> gerrit.simantics Code Review - simantics/3d.git/blobdiff - org.simantics.plant3d/src/org/simantics/plant3d/scenegraph/PipeRun.java
Remove listener calls when property values not updated.
[simantics/3d.git] / org.simantics.plant3d / src / org / simantics / plant3d / scenegraph / PipeRun.java
index 1d199f53f2ec604737d798a3ec074e7978bda485..86f649aa136e49b6d0f7ac00cf956fb7de9e4392 100644 (file)
@@ -1,12 +1,14 @@
 package org.simantics.plant3d.scenegraph;
 
 import java.util.ArrayList;
+import java.util.Arrays;
 import java.util.Collection;
 import java.util.Collections;
 import java.util.Comparator;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
+import java.util.Objects;
 
 import org.simantics.g3d.math.MathTools;
 import org.simantics.g3d.property.annotations.GetPropertyValue;
@@ -64,6 +66,8 @@ public class PipeRun extends P3DParentNode<IP3DNode> {
        @RelatedSetValue(Plant3D.URIs.HasTurnRadius)
        @SetPropertyValue(Plant3D.URIs.HasTurnRadius)
        public void setTurnRadius(double turnRadius) {
+               if (this.turnRadius[0] == turnRadius)
+                       return;
                this.turnRadius[0] = turnRadius;
                firePropertyChanged(Plant3D.URIs.HasTurnRadius);
                firePropertyChanged(Plant3D.URIs.HasTurnRadiusArray);
@@ -78,7 +82,7 @@ public class PipeRun extends P3DParentNode<IP3DNode> {
     @RelatedSetValue(Plant3D.URIs.HasTurnRadiusArray)
     @SetPropertyValue(Plant3D.URIs.HasTurnRadiusArray)
     public void setTurnRadiusArray(double[] turnRadiusArray) {
-        if (turnRadiusArray == null || turnRadiusArray.length == 0)
+        if (turnRadiusArray == null || turnRadiusArray.length == 0 || Arrays.equals(this.turnRadius, turnRadiusArray))
             return;
         this.turnRadius = turnRadiusArray;
         firePropertyChanged(Plant3D.URIs.HasTurnRadiusArray);
@@ -93,7 +97,10 @@ public class PipeRun extends P3DParentNode<IP3DNode> {
        @RelatedSetValue(Plant3D.URIs.HasPipeDiameter)
        @SetPropertyValue(Plant3D.URIs.HasPipeDiameter)
        public void setPipeDiameter(double pipeDiameter) {
-               this.pipeDiameter = pipeDiameter;       
+               if (Objects.equals(this.pipeDiameter, pipeDiameter))
+                       return;
+               
+               this.pipeDiameter = pipeDiameter;
                firePropertyChanged(Plant3D.URIs.HasPipeDiameter);
        }