]> gerrit.simantics Code Review - simantics/platform.git/blobdiff - bundles/org.simantics.diagram/src/org/simantics/diagram/elements/SVGNode.java
Robustness fixes for inline SVG text editing on diagrams
[simantics/platform.git] / bundles / org.simantics.diagram / src / org / simantics / diagram / elements / SVGNode.java
index 8084c2a41fcef9e6e2c8a235719cf648e381f24b..bccba4aa769ad96ebcc47080187846e4e3f2db22 100644 (file)
@@ -51,12 +51,14 @@ public class SVGNode extends org.simantics.scenegraph.g2d.nodes.SVGNode {
     public void render(Graphics2D g2d) {
         if (!parametersProcessed) {
             SingleElementNode sne = getSingleElementNode();
-            Boolean enableEditing = sne.getParameter("enableEditing");
-            if (enableEditing != null && enableEditing) {
-                esm = new EditorStateManager(this);
-                addEventHandler(this);
+            if (sne != null) {
+                Boolean enableEditing = sne.getParameter("enableEditing");
+                if (enableEditing != null && enableEditing) {
+                    esm = new EditorStateManager(this);
+                    addEventHandler(this);
+                }
+                parametersProcessed = true;
             }
-            parametersProcessed = true;
         }
 
         super.render(g2d);
@@ -76,7 +78,9 @@ public class SVGNode extends org.simantics.scenegraph.g2d.nodes.SVGNode {
     }
 
     private boolean isSelected(IG2DNode node) {
-        ICanvasContext ctx = DiagramNodeUtil.getCanvasContext(this);
+        ICanvasContext ctx = DiagramNodeUtil.getPossibleCanvasContext(this);
+        if (ctx == null)
+            return false;
         IElement ie = DiagramNodeUtil.getElement(ctx, node);
         if (ie == null)
             return false;
@@ -119,10 +123,6 @@ public class SVGNode extends org.simantics.scenegraph.g2d.nodes.SVGNode {
     }
 
     SingleElementNode getSingleElementNode() {
-        ICanvasContext ctx = DiagramNodeUtil.getCanvasContext(this);
-        // FIXME: needed only because eventdelegator registrations are done before adding node to scene graph.
-        if (ctx == null)
-            return null;
         return (SingleElementNode)NodeUtil.getNearestParentOfType(this, SingleElementNode.class);
     }