]> gerrit.simantics Code Review - simantics/platform.git/blobdiff - bundles/org.simantics.graphviz/src/org/simantics/graphviz/drawable/JViewer.java
Prevent some NPEs in Graphviz plugin
[simantics/platform.git] / bundles / org.simantics.graphviz / src / org / simantics / graphviz / drawable / JViewer.java
index 2543a7a667429d10626e7a92fe8e507fad4ef493..d50f577567977129748c62e246c1c7883ae345f9 100644 (file)
@@ -97,6 +97,8 @@ public class JViewer extends JFrame {
                addMouseMotionListener(new MouseAdapter() {
                        @Override
                        public void mouseDragged(MouseEvent e) {
+                           if(transform == null)
+                               return;
                                Point cur = e.getPoint();
                                if (prev == null)
                                    prev = cur;
@@ -111,16 +113,16 @@ public class JViewer extends JFrame {
 
                                @Override
                                public void mouseWheelMoved(MouseWheelEvent e) {
-                                       if(transform != null) {
-                                               double scale = Math.exp(-0.1*e.getUnitsToScroll());
-                                               Point p = e.getPoint();
-                                               AffineTransform mod = new AffineTransform();
-                                               mod.translate(p.getX(), p.getY());
-                                               mod.scale(scale, scale);
-                                               mod.translate(-p.getX(), -p.getY());
-                                               transform.preConcatenate(mod);                                          
-                                               repaint();
-                                       }
+                                       if(transform == null)
+                                           return;
+                                       double scale = Math.exp(-0.1*e.getUnitsToScroll());
+                                       Point p = e.getPoint();
+                                       AffineTransform mod = new AffineTransform();
+                                       mod.translate(p.getX(), p.getY());
+                                       mod.scale(scale, scale);
+                                       mod.translate(-p.getX(), -p.getY());
+                                       transform.preConcatenate(mod);
+                                       repaint();
                                }
                        
                });
@@ -135,8 +137,11 @@ public class JViewer extends JFrame {
                
        private void fit() {
                Rectangle2D bounds = drawable.getBounds();
-               
                Rectangle2D container = getBounds();
+               
+               if(bounds == null || container == null)
+                   return;
+               
                double scale = container == null ? 1 : Math.min(
                                container.getWidth() / bounds.getWidth(), 
                                container.getHeight() / bounds.getHeight());
@@ -161,8 +166,15 @@ public class JViewer extends JFrame {
                g.setRenderingHint(RenderingHints.KEY_RENDERING, RenderingHints.VALUE_RENDER_QUALITY);
                g.setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING, RenderingHints.VALUE_TEXT_ANTIALIAS_ON);
                                
-               if(transform == null)
+               if(transform == null) {
                        fit();
+                       if(transform == null) {
+                           g.setTransform(new AffineTransform());
+                           g.setColor(Color.BLACK);
+                           g.drawString("No data available yet", 20f, 20f);
+                           return;
+                       }
+               }
                g.setTransform(transform);
                
                drawable.draw(g, null);