]> gerrit.simantics Code Review - simantics/district.git/blobdiff - org.simantics.district.network.ui/src/org/simantics/district/network/ui/nodes/DistrictNetworkVertexNode.java
Dynamic vertex SVG symbol generation
[simantics/district.git] / org.simantics.district.network.ui / src / org / simantics / district / network / ui / nodes / DistrictNetworkVertexNode.java
index 0cd5ea884fd29058c2e12907eca01112a3e2dbe0..d063d48c4982d30ee08af9ce18e8b0868179b8ba 100644 (file)
@@ -10,12 +10,15 @@ import java.awt.geom.Rectangle2D;
 
 import org.simantics.district.network.ModelledCRS;
 import org.simantics.district.network.ui.adapters.DistrictNetworkVertex;
+import org.simantics.scenegraph.INode;
 import org.simantics.scenegraph.ISelectionPainterNode;
 import org.simantics.scenegraph.g2d.G2DNode;
+import org.simantics.scenegraph.g2d.G2DParentNode;
+import org.simantics.scenegraph.g2d.nodes.SVGNode;
 import org.simantics.scenegraph.utils.GeometryUtils;
 import org.simantics.scenegraph.utils.NodeUtil;
 
-public class DistrictNetworkVertexNode extends G2DNode implements ISelectionPainterNode {
+public class DistrictNetworkVertexNode extends G2DParentNode implements ISelectionPainterNode {
 
     //private static final Logger LOGGER = LoggerFactory.getLogger(DistrictNetworkVertexNode.class);
 
@@ -98,12 +101,19 @@ public class DistrictNetworkVertexNode extends G2DNode implements ISelectionPain
         if (changeColor)
             g2d.setColor(newColor);
         g2d.fill(toDraw);
-
+        
         // Reset settings
         if (changeColor)
             g2d.setColor(oldColor);
         if (oaaHint != null)
-           g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING, aaHint);
+            g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING, aaHint);
+
+        // Render SVG symbol
+        for (INode nn : getNodes()) {
+            ((G2DNode)nn).setTransform(new AffineTransform(toDraw.getWidth(), 0.0, 0.0, toDraw.getHeight(), toDraw.getCenterX(), toDraw.getCenterY()));
+            ((G2DNode)nn).render(g2d);
+        }
+        
         if (ot != null)
             g2d.setTransform(ot);
     }
@@ -187,6 +197,14 @@ public class DistrictNetworkVertexNode extends G2DNode implements ISelectionPain
         return color;
     }
 
+    @PropertySetter(value = "SVG")
+    public void setSVG(String value) {
+        for (INode nn : this.getNodes())
+            if (nn instanceof SVGNode)
+                ((SVGNode)nn).setData(value);
+    }
+    
+    
     @PropertySetter(value = "size")
     public void setSize(Double size) {
         boolean changed = false;