]> gerrit.simantics Code Review - simantics/platform.git/blobdiff - bundles/org.simantics.graphviz/src/org/simantics/graphviz/drawable/ViewerCanvas.java
Fixed all line endings of the repository
[simantics/platform.git] / bundles / org.simantics.graphviz / src / org / simantics / graphviz / drawable / ViewerCanvas.java
index 9ab86ccbff6d91df8228900238d95066cffdbf2f..6c7cd48e280166b44a3bffd6fb58f2aa0a01640f 100644 (file)
-/*******************************************************************************\r
- * Copyright (c) 2007, 2010 Association for Decentralized Information Management\r
- * in Industry THTH ry.\r
- * All rights reserved. This program and the accompanying materials\r
- * are made available under the terms of the Eclipse Public License v1.0\r
- * which accompanies this distribution, and is available at\r
- * http://www.eclipse.org/legal/epl-v10.html\r
- *\r
- * Contributors:\r
- *     VTT Technical Research Centre of Finland - initial API and implementation\r
- *******************************************************************************/\r
-package org.simantics.graphviz.drawable;\r
-\r
-import java.awt.Canvas;\r
-import java.awt.Color;\r
-import java.awt.Graphics;\r
-import java.awt.Graphics2D;\r
-import java.awt.Point;\r
-import java.awt.RenderingHints;\r
-import java.awt.event.ComponentAdapter;\r
-import java.awt.event.ComponentEvent;\r
-import java.awt.event.KeyAdapter;\r
-import java.awt.event.KeyEvent;\r
-import java.awt.event.MouseAdapter;\r
-import java.awt.event.MouseEvent;\r
-import java.awt.event.MouseWheelEvent;\r
-import java.awt.event.MouseWheelListener;\r
-import java.awt.geom.AffineTransform;\r
-import java.awt.geom.Rectangle2D;\r
-import java.awt.image.VolatileImage;\r
-\r
-/**\r
- * A canvas showing a given Drawable.\r
- * \r
- * @author Hannu Niemist�\r
- */\r
-public class ViewerCanvas extends Canvas {\r
-\r
-    private static final long serialVersionUID = -1094658958968314511L;\r
-    \r
-    AffineTransform transform;\r
-    Point prev;\r
-    VolatileImage im;\r
-    \r
-    Drawable drawable;\r
-\r
-    public ViewerCanvas(Drawable drawable) {\r
-        this.drawable = drawable;\r
-        setBackground(Color.WHITE);    \r
-        addKeyListener(new KeyAdapter() {\r
-\r
-            @Override\r
-            public void keyPressed(KeyEvent e) {\r
-                if(e.getKeyChar()=='1') {\r
-                    fit();\r
-                    repaint();\r
-                }\r
-            }\r
-\r
-        });\r
-        addMouseListener(new MouseAdapter() {\r
-\r
-            @Override\r
-            public void mousePressed(MouseEvent e) {\r
-                prev = e.getPoint();\r
-            }                          \r
-        });\r
-        addMouseMotionListener(new MouseAdapter() {\r
-            @Override\r
-            public void mouseDragged(MouseEvent e) {\r
-                Point cur = e.getPoint();\r
-                double deltaX = cur.getX()-prev.getX();\r
-                double deltaY = cur.getY()-prev.getY();                                        \r
-                transform.preConcatenate(AffineTransform.getTranslateInstance(deltaX, deltaY));                                                \r
-                repaint();\r
-                prev = cur;\r
-            }\r
-        });\r
-        addMouseWheelListener(new MouseWheelListener() {\r
-\r
-            @Override\r
-            public void mouseWheelMoved(MouseWheelEvent e) {\r
-                if(transform != null) {\r
-                    double scale = Math.exp(-0.1*e.getUnitsToScroll());\r
-                    Point p = e.getPoint();\r
-                    AffineTransform mod = new AffineTransform();\r
-                    mod.translate(p.getX(), p.getY());\r
-                    mod.scale(scale, scale);\r
-                    mod.translate(-p.getX(), -p.getY());\r
-                    transform.preConcatenate(mod);                                             \r
-                    repaint();\r
-                }\r
-            }\r
-\r
-        });\r
-        addComponentListener(new ComponentAdapter() {\r
-            @Override\r
-            public void componentResized(ComponentEvent e) {\r
-               if(getWidth() > 0 && getHeight() > 0) {\r
-                       im = createVolatileImage(getWidth(), getHeight());\r
-                       repaint();\r
-               }\r
-            }\r
-        });\r
-    }\r
-\r
-    public void fit() {\r
-        Rectangle2D bounds = drawable.getBounds();\r
-\r
-        Rectangle2D container = getBounds();\r
-        double scale = Math.min(\r
-            container.getWidth() / bounds.getWidth(), \r
-            container.getHeight() / bounds.getHeight());\r
-\r
-        transform = new AffineTransform(\r
-            scale, 0.0,\r
-            0.0, scale,\r
-            container.getX() + container.getWidth() * 0.5 - bounds.getCenterX() * scale,\r
-            container.getY() + container.getHeight() * 0.5 - bounds.getCenterY() * scale\r
-        );\r
-    }\r
-\r
-    @Override\r
-    public void paint(Graphics _g) {\r
-       do {\r
-               if (im == null || im.validate(getGraphicsConfiguration()) ==\r
-                       VolatileImage.IMAGE_INCOMPATIBLE) {\r
-                   im = createVolatileImage(getWidth(), getHeight());\r
-               }\r
-               \r
-               Graphics2D g = (Graphics2D)im.getGraphics();\r
-               \r
-               g.clearRect(0, 0, im.getWidth(null), im.getHeight(null));\r
-       \r
-               g.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);\r
-               g.setRenderingHint(RenderingHints.KEY_RENDERING, RenderingHints.VALUE_RENDER_QUALITY);\r
-               g.setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING, RenderingHints.VALUE_TEXT_ANTIALIAS_ON);\r
-       \r
-               if(transform == null)\r
-                   fit();\r
-               g.setTransform(transform);\r
-       \r
-               drawable.draw(g, null);\r
-            g.dispose();\r
-       } while(im.contentsLost());\r
-\r
-        _g.drawImage(im, 0, 0, this);\r
-    }\r
-\r
-    @Override\r
-    public void update(Graphics g) {\r
-        paint(g);\r
-    }\r
-    \r
-    public AffineTransform getTransform() {\r
-       return transform;\r
-    }\r
-\r
-}\r
-\r
+/*******************************************************************************
+ * Copyright (c) 2007, 2010 Association for Decentralized Information Management
+ * in Industry THTH ry.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     VTT Technical Research Centre of Finland - initial API and implementation
+ *******************************************************************************/
+package org.simantics.graphviz.drawable;
+
+import java.awt.Canvas;
+import java.awt.Color;
+import java.awt.Graphics;
+import java.awt.Graphics2D;
+import java.awt.Point;
+import java.awt.RenderingHints;
+import java.awt.event.ComponentAdapter;
+import java.awt.event.ComponentEvent;
+import java.awt.event.KeyAdapter;
+import java.awt.event.KeyEvent;
+import java.awt.event.MouseAdapter;
+import java.awt.event.MouseEvent;
+import java.awt.event.MouseWheelEvent;
+import java.awt.event.MouseWheelListener;
+import java.awt.geom.AffineTransform;
+import java.awt.geom.Rectangle2D;
+import java.awt.image.VolatileImage;
+
+/**
+ * A canvas showing a given Drawable.
+ * 
+ * @author Hannu Niemist�
+ */
+public class ViewerCanvas extends Canvas {
+
+    private static final long serialVersionUID = -1094658958968314511L;
+    
+    AffineTransform transform;
+    Point prev;
+    VolatileImage im;
+    
+    Drawable drawable;
+
+    public ViewerCanvas(Drawable drawable) {
+        this.drawable = drawable;
+        setBackground(Color.WHITE);    
+        addKeyListener(new KeyAdapter() {
+
+            @Override
+            public void keyPressed(KeyEvent e) {
+                if(e.getKeyChar()=='1') {
+                    fit();
+                    repaint();
+                }
+            }
+
+        });
+        addMouseListener(new MouseAdapter() {
+
+            @Override
+            public void mousePressed(MouseEvent e) {
+                prev = e.getPoint();
+            }                          
+        });
+        addMouseMotionListener(new MouseAdapter() {
+            @Override
+            public void mouseDragged(MouseEvent e) {
+                Point cur = e.getPoint();
+                double deltaX = cur.getX()-prev.getX();
+                double deltaY = cur.getY()-prev.getY();                                        
+                transform.preConcatenate(AffineTransform.getTranslateInstance(deltaX, deltaY));                                                
+                repaint();
+                prev = cur;
+            }
+        });
+        addMouseWheelListener(new MouseWheelListener() {
+
+            @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();
+                }
+            }
+
+        });
+        addComponentListener(new ComponentAdapter() {
+            @Override
+            public void componentResized(ComponentEvent e) {
+               if(getWidth() > 0 && getHeight() > 0) {
+                       im = createVolatileImage(getWidth(), getHeight());
+                       repaint();
+               }
+            }
+        });
+    }
+
+    public void fit() {
+        Rectangle2D bounds = drawable.getBounds();
+
+        Rectangle2D container = getBounds();
+        double scale = Math.min(
+            container.getWidth() / bounds.getWidth(), 
+            container.getHeight() / bounds.getHeight());
+
+        transform = new AffineTransform(
+            scale, 0.0,
+            0.0, scale,
+            container.getX() + container.getWidth() * 0.5 - bounds.getCenterX() * scale,
+            container.getY() + container.getHeight() * 0.5 - bounds.getCenterY() * scale
+        );
+    }
+
+    @Override
+    public void paint(Graphics _g) {
+       do {
+               if (im == null || im.validate(getGraphicsConfiguration()) ==
+                       VolatileImage.IMAGE_INCOMPATIBLE) {
+                   im = createVolatileImage(getWidth(), getHeight());
+               }
+               
+               Graphics2D g = (Graphics2D)im.getGraphics();
+               
+               g.clearRect(0, 0, im.getWidth(null), im.getHeight(null));
+       
+               g.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
+               g.setRenderingHint(RenderingHints.KEY_RENDERING, RenderingHints.VALUE_RENDER_QUALITY);
+               g.setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING, RenderingHints.VALUE_TEXT_ANTIALIAS_ON);
+       
+               if(transform == null)
+                   fit();
+               g.setTransform(transform);
+       
+               drawable.draw(g, null);
+            g.dispose();
+       } while(im.contentsLost());
+
+        _g.drawImage(im, 0, 0, this);
+    }
+
+    @Override
+    public void update(Graphics g) {
+        paint(g);
+    }
+    
+    public AffineTransform getTransform() {
+       return transform;
+    }
+
+}
+