Add node class names to generated SVG 38/3238/1
authorMarko Luukkainen <marko.luukkainen@semantum.fi>
Wed, 11 Sep 2019 10:06:27 +0000 (13:06 +0300)
committerMarko Luukkainen <marko.luukkainen@semantum.fi>
Wed, 11 Sep 2019 10:06:27 +0000 (13:06 +0300)
gitlab #380

Change-Id: I721d774f8adf8864704409ec48c88f3a06fe15a3

bundles/org.simantics.modeling/src/org/simantics/modeling/SCLScenegraph.java

index 40a5265852fa79083df1781db24a563df95d4532..fad803ce41a4a84bdb11991a06f73e0bdc3a3451 100644 (file)
@@ -85,6 +85,7 @@ import org.slf4j.LoggerFactory;
 import org.w3c.dom.DOMImplementation;
 import org.w3c.dom.Document;
 import org.w3c.dom.Element;
+import org.w3c.dom.Node;
 import org.w3c.dom.NodeList;
 
 public class SCLScenegraph {
@@ -916,10 +917,21 @@ public class SCLScenegraph {
             } else if (!(node instanceof RouteGraphNode) && !(node instanceof LinkNode)){
                try {
                        Element doc = renderSVGNode(svgGenerator, (IG2DNode)node);
-                       if (doc.getElementsByTagName("g").getLength() == 0)
+                       NodeList gList = doc.getElementsByTagName("g");
+                       if (gList.getLength() == 0)
                                return;
+                       boolean hasContent = false;
+                       for (int i = 0; i < gList.getLength(); i++) {
+                           Node gNode = gList.item(i);
+                           if (gNode.hasChildNodes()) {
+                               hasContent = true;
+                               break;
+                           }
+                       }
+                       if (!hasContent)
+                           return;
                        String svg = printSVGDocument(doc);
-                       parentBuilder.append(MAIN_SECTION, "<g>");
+                       parentBuilder.append(MAIN_SECTION, "<g class=\"" +node.getSimpleClassName() +"\">");
                        parentBuilder.append(MAIN_SECTION, svg);
                        parentBuilder.append(MAIN_SECTION, "\n</g>");
                } catch (Exception e) {