]> gerrit.simantics Code Review - simantics/platform.git/blobdiff - bundles/org.simantics.scenegraph/src/org/simantics/scenegraph/g2d/nodes/SingleElementNode.java
G2DParentNode handles "undefined" child bounds separately
[simantics/platform.git] / bundles / org.simantics.scenegraph / src / org / simantics / scenegraph / g2d / nodes / SingleElementNode.java
index beee2538a534092c9f32c79577d9559b3851e3d9..29ef9954eb37a604a1ca593439e9614a1e3d4510 100644 (file)
@@ -16,7 +16,9 @@ import java.awt.Composite;
 import java.awt.Graphics2D;
 import java.awt.geom.Point2D;
 import java.awt.geom.Rectangle2D;
+import java.util.Map;
 
+import org.simantics.scenegraph.INode;
 import org.simantics.scenegraph.g2d.G2DRenderingHints;
 import org.simantics.scenegraph.g2d.IG2DNode;
 import org.simantics.scenegraph.g2d.events.EventTypes;
@@ -34,15 +36,42 @@ public class SingleElementNode extends TransformNode implements InitValueSupport
     protected Boolean visible = Boolean.TRUE;
     protected Boolean hidden = Boolean.FALSE;
     private transient Object key;
+    private transient String typeClass;
+    private transient Map<String, Object> parameters;
 
     public void setKey(Object key) {
         this.key = key;
     }
 
+    public void setTypeClass(String typeClass) {
+        this.typeClass = typeClass;
+    }
+
     public Object getKey() {
         return key;
     }
 
+    public String getTypeClass() {
+        return typeClass;
+    }
+
+    public void setParameters(Map<String,Object> parameters) {
+        this.parameters = parameters;
+    }
+
+    public <T> T getParameter(String key) {
+        if (parameters != null) {
+            @SuppressWarnings("unchecked")
+            T t = (T) parameters.get(key);
+            if(t != null) return t;
+        }
+        INode parent = NodeUtil.getNearestParentOfType(this, SingleElementNode.class);
+        if (parent instanceof SingleElementNode) {
+            return ((SingleElementNode)parent).getParameter(key);
+        }
+        return null;
+    }
+
     public void setTransferableProvider(TransferableProvider transferableProvider) {
         if (transferableProvider != this.transferableProvider) {
             if (this.transferableProvider != null)