X-Git-Url: https://gerrit.simantics.org/r/gitweb?a=blobdiff_plain;f=bundles%2Forg.simantics.scenegraph%2Fsrc%2Forg%2Fsimantics%2Fscenegraph%2Fg2d%2Fnodes%2FSingleElementNode.java;h=29ef9954eb37a604a1ca593439e9614a1e3d4510;hb=fe29fd8956c3881e261ec4eee1cdd2ac27bc0554;hp=00ca6b8663f59c984097508f9cc9a5dba1491fc5;hpb=0ae2b770234dfc3cbb18bd38f324125cf0faca07;p=simantics%2Fplatform.git diff --git a/bundles/org.simantics.scenegraph/src/org/simantics/scenegraph/g2d/nodes/SingleElementNode.java b/bundles/org.simantics.scenegraph/src/org/simantics/scenegraph/g2d/nodes/SingleElementNode.java index 00ca6b866..29ef9954e 100644 --- a/bundles/org.simantics.scenegraph/src/org/simantics/scenegraph/g2d/nodes/SingleElementNode.java +++ b/bundles/org.simantics.scenegraph/src/org/simantics/scenegraph/g2d/nodes/SingleElementNode.java @@ -16,7 +16,10 @@ 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; import org.simantics.scenegraph.g2d.events.MouseEvent; @@ -32,6 +35,42 @@ public class SingleElementNode extends TransformNode implements InitValueSupport protected Composite composite; protected Boolean visible = Boolean.TRUE; protected Boolean hidden = Boolean.FALSE; + private transient Object key; + private transient String typeClass; + private transient Map 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 parameters) { + this.parameters = parameters; + } + + public 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) { @@ -169,4 +208,12 @@ public class SingleElementNode extends TransformNode implements InitValueSupport return EventTypes.MouseDragBeginMask; } + public void beforeRender(Graphics2D g) { + g.setRenderingHint(G2DRenderingHints.KEY_BEGIN_ELEMENT, "definedElement"); + } + + public void afterRender(Graphics2D g) { + g.setRenderingHint(G2DRenderingHints.KEY_END_ELEMENT, "definedElement"); + } + }