]> gerrit.simantics Code Review - simantics/platform.git/blobdiff - bundles/org.simantics.scenegraph/src/org/simantics/scenegraph/g2d/nodes/SingleElementNode.java
Support SVG generation from scenegraph.
[simantics/platform.git] / bundles / org.simantics.scenegraph / src / org / simantics / scenegraph / g2d / nodes / SingleElementNode.java
index 00ca6b8663f59c984097508f9cc9a5dba1491fc5..9495a644084d2c83690a6b31a0769af0dd70a935 100644 (file)
@@ -17,6 +17,8 @@ import java.awt.Graphics2D;
 import java.awt.geom.Point2D;
 import java.awt.geom.Rectangle2D;
 
+import org.simantics.scenegraph.ParentNode;
+import org.simantics.scenegraph.g2d.G2DHints;
 import org.simantics.scenegraph.g2d.IG2DNode;
 import org.simantics.scenegraph.g2d.events.EventTypes;
 import org.simantics.scenegraph.g2d.events.MouseEvent;
@@ -28,11 +30,20 @@ public class SingleElementNode extends TransformNode implements InitValueSupport
 
     private static final long serialVersionUID = -4982578347433716440L;
 
+    private Object key;
     private TransferableProvider transferableProvider;
     protected Composite composite;
     protected Boolean visible = Boolean.TRUE;
     protected Boolean hidden = Boolean.FALSE;
 
+    public void setKey(Object key) {
+       this.key = key;
+    }
+    
+    public Object getKey() {
+       return key;
+    }
+    
     public void setTransferableProvider(TransferableProvider transferableProvider) {
         if (transferableProvider != this.transferableProvider) {
             if (this.transferableProvider != null)
@@ -71,11 +82,22 @@ public class SingleElementNode extends TransformNode implements InitValueSupport
         return hidden;
     }
 
+    public void beforeRender(Graphics2D g) {
+        g.setRenderingHint(G2DHints.KEY_BEGIN_ELEMENT, "definedElement");
+    }
+    
+    public void afterRender(Graphics2D g) {
+        g.setRenderingHint(G2DHints.KEY_ELEMENT_ID, getKey());
+        g.setRenderingHint(G2DHints.KEY_END_ELEMENT, "definedElement");
+    }
+
     @Override
     public void render(Graphics2D g) {
         if (!visible || hidden)
             return;
 
+        beforeRender(g);
+        
         Composite oldComposite = null;
         if(composite != null) {
             oldComposite = g.getComposite();
@@ -91,6 +113,9 @@ public class SingleElementNode extends TransformNode implements InitValueSupport
 
         if (oldComposite != null)
             g.setComposite(oldComposite);
+
+        afterRender(g);
+
     }
 
     @Override