]> gerrit.simantics Code Review - simantics/3d.git/blobdiff - org.simantics.plant3d/src/org/simantics/plant3d/scenegraph/P3DParentNode.java
Remove listener calls when property values not updated.
[simantics/3d.git] / org.simantics.plant3d / src / org / simantics / plant3d / scenegraph / P3DParentNode.java
index 08c289da72b4d4e6469177e0d6fe75d4bb704eee..d7f6749e53fcb4dacbdd1dc50da03a0f47b40125 100644 (file)
@@ -1,6 +1,7 @@
 package org.simantics.plant3d.scenegraph;
 
 import java.util.HashSet;
+import java.util.Objects;
 import java.util.Set;
 
 import javax.vecmath.Quat4d;
@@ -35,7 +36,7 @@ public abstract class P3DParentNode<T extends IP3DNode> extends ParentNode<T> im
        @RelatedSetValue(Layer0.URIs.HasName)
        @SetPropertyValue(Layer0.URIs.HasName)
        public void setName(String name) {
-               if (name == null)
+               if (name == null || name.equals(this.name))
                        return;
                this.name = name;
                firePropertyChanged(Layer0.URIs.HasName);
@@ -80,6 +81,9 @@ public abstract class P3DParentNode<T extends IP3DNode> extends ParentNode<T> im
        @SetPropertyValue(G3D.URIs.hasOrientation)
        public void setOrientation(Quat4d orientation) {
                assert(orientation != null);
+               if (Objects.equals(this.orientation, orientation))
+                       return;
+               
                this.orientation = orientation;
                
                firePropertyChanged(G3D.URIs.hasOrientation);
@@ -89,6 +93,9 @@ public abstract class P3DParentNode<T extends IP3DNode> extends ParentNode<T> im
        @SetPropertyValue(G3D.URIs.hasPosition)
        public void setPosition(Vector3d position) {
                assert(position != null);
+               if (Objects.equals(this.position, position))
+                       return;
+               
                this.position = position;
                
                firePropertyChanged(G3D.URIs.hasPosition);
@@ -167,9 +174,9 @@ public abstract class P3DParentNode<T extends IP3DNode> extends ParentNode<T> im
        }
        
        @Override
-       public Object getAdapter(Class adapter) {
-               if (IG3DNode.class == adapter)
-                       return this;
+       public <C> C getAdapter(Class<C> adapter) {
+               if (adapter.isInstance(this))
+                       return adapter.cast(this);
                return null;
        }
        
@@ -190,5 +197,5 @@ public abstract class P3DParentNode<T extends IP3DNode> extends ParentNode<T> im
                }
        }
 
-    
+       
 }