]> gerrit.simantics Code Review - simantics/platform.git/blobdiff - bundles/org.simantics.diagram/src/org/simantics/diagram/profile/ButtonNode.java
Fixed all line endings of the repository
[simantics/platform.git] / bundles / org.simantics.diagram / src / org / simantics / diagram / profile / ButtonNode.java
index e387057408d5c85bb04ac773dd583f709b628b89..2ad90acbe26fa59ad41799f9dcc654947f9886cd 100644 (file)
-package org.simantics.diagram.profile;\r
-\r
-import java.awt.Graphics2D;\r
-import java.awt.geom.AffineTransform;\r
-import java.awt.geom.Point2D;\r
-import java.awt.geom.Rectangle2D;\r
-\r
-import org.simantics.datatypes.literal.RGB;\r
-import org.simantics.datatypes.literal.Vec2d;\r
-import org.simantics.diagram.elements.DiagramNodeUtil;\r
-import org.simantics.diagram.internal.Activator;\r
-import org.simantics.diagram.profile.ButtonResult.A;\r
-import org.simantics.diagram.profile.ButtonResult.B;\r
-import org.simantics.scenegraph.g2d.G2DNode;\r
-import org.simantics.scenegraph.g2d.events.EventTypes;\r
-import org.simantics.scenegraph.g2d.events.MouseEvent;\r
-import org.simantics.scenegraph.g2d.events.MouseEvent.MouseButtonPressedEvent;\r
-import org.simantics.scenegraph.g2d.events.MouseEvent.MouseButtonReleasedEvent;\r
-import org.simantics.scenegraph.g2d.nodes.SVGNode;\r
-import org.simantics.scenegraph.utils.NodeUtil;\r
-import org.simantics.scl.runtime.function.Function1;\r
-\r
-public class ButtonNode extends IconButtonNode {\r
-       \r
-       private static final long serialVersionUID = -1963362069190362275L;\r
-       \r
-       private B config;\r
-       private boolean isDown = false;\r
-       private Function1<Boolean, Boolean> pressed;\r
-       \r
-       private static SVGNode ON = new SVGNode();\r
-       private static SVGNode OFF = new SVGNode();\r
-       private static boolean initialized = false;\r
-       \r
-    Rectangle2D EMPTY = new Rectangle2D.Double(0, 0, 0, 0);\r
-       \r
-       private SVGNode current = OFF;\r
-       private Rectangle2D lastBounds = EMPTY; \r
-\r
-       public void staticInit() {\r
-               if(!initialized) {\r
-                       ON.setData(createSVG("BUTTON_ON"));\r
-                       OFF.setData(createSVG("BUTTON_OFF"));\r
-                       initialized = true;\r
-               }\r
-       }\r
-       \r
-       @Override\r
-       public void init() {\r
-               staticInit();\r
-        addEventHandler(this);\r
-       }\r
-       \r
-    @Override\r
-    public void cleanup() {\r
-        removeEventHandler(this);\r
-        super.cleanup();\r
-    }\r
-       \r
-       private void setValue(double value) {\r
-               \r
-               // Value does not affect LATCH buttons\r
-               if(ButtonMode.LATCH.equals(config.mode)) return;\r
-               \r
-               if(value < 0.5) {\r
-                       current = OFF;\r
-               } else {\r
-                       current = ON;\r
-               } \r
-               \r
-       }\r
-       \r
-       private void setConfig(B config) {\r
-\r
-               if(this.config == config) return;\r
-        this.config = config;\r
-               \r
-       }\r
-       \r
-       public void setA(A data) {\r
-\r
-               setConfig(data.config);\r
-        setValue(data.value);\r
-               \r
-       }\r
-       \r
-    @Override\r
-    public void render(Graphics2D g2d) {\r
-\r
-               AffineTransform ot = null;\r
-               if (!transform.isIdentity()) {\r
-                       ot = g2d.getTransform();\r
-                       g2d.transform(transform);\r
-               }\r
-       \r
-               current.render(g2d);\r
-               lastBounds = current.getBounds();\r
-\r
-               if (ot != null)\r
-                       g2d.setTransform(ot);\r
-       \r
-    }\r
-\r
-       @Override\r
-       public Rectangle2D getBoundsInLocal() {\r
-               return lastBounds;\r
-       }\r
-\r
-       @Override\r
-       void setData(IconButtonResult state) {\r
-               ButtonResult br = (ButtonResult)state;\r
-               setA(br.getA());\r
-               pressed = br.getPressed();\r
-       }\r
-\r
-    private boolean hitTest(MouseEvent event) {\r
-        Rectangle2D bounds = getBounds();\r
-        if (bounds == null)\r
-            return false;\r
-        Point2D localPos = NodeUtil.worldToLocal(this, event.controlPosition, new Point2D.Double());\r
-        double x = localPos.getX();\r
-        double y = localPos.getY();\r
-        return bounds.contains(x, y);\r
-    }\r
-       \r
-       @Override\r
-    protected boolean mouseButtonPressed(MouseButtonPressedEvent e) {\r
-               if(!e.hasAnyButton(MouseEvent.LEFT_BUTTON)) return false;\r
-               if(!hitTest(e)) return false; \r
-               if(pressed != null) {\r
-                       pressed.apply(true);\r
-                       isDown = true;\r
-                       if(ButtonMode.LATCH.equals(config.mode)) {\r
-                               current = ON;\r
-                               DiagramNodeUtil.getCanvasContext((G2DNode)this).getContentContext().setDirty();\r
-                       }\r
-               }\r
-        return true;\r
-    }\r
-\r
-       @Override\r
-    protected boolean mouseButtonReleased(MouseButtonReleasedEvent e) {\r
-               if(e.hasAnyButton(MouseEvent.LEFT_BUTTON)) return false;\r
-               if(!hitTest(e) && !isDown) return false; \r
-               if(pressed != null) {\r
-                       pressed.apply(false);\r
-                       isDown = false;\r
-                       if(ButtonMode.LATCH.equals(config.mode)) {\r
-                               current = OFF;\r
-                               DiagramNodeUtil.getCanvasContext((G2DNode)this).getContentContext().setDirty();\r
-                       }\r
-               }\r
-        return true;\r
-    }\r
-       \r
-    @Override\r
-    public int getEventMask() {\r
-        return EventTypes.MouseButtonPressedMask\r
-                | EventTypes.MouseButtonReleasedMask\r
-                ;\r
-    }  \r
-    \r
-    public String createSVG(String iconName) {\r
-       return Activator.ICON_PROVIDER.apply(iconName, new RGB.Integer(0,  0, 0), new Vec2d(1,1));\r
-    }\r
-    \r
+package org.simantics.diagram.profile;
+
+import java.awt.Graphics2D;
+import java.awt.geom.AffineTransform;
+import java.awt.geom.Point2D;
+import java.awt.geom.Rectangle2D;
+
+import org.simantics.datatypes.literal.RGB;
+import org.simantics.datatypes.literal.Vec2d;
+import org.simantics.diagram.elements.DiagramNodeUtil;
+import org.simantics.diagram.internal.Activator;
+import org.simantics.diagram.profile.ButtonResult.A;
+import org.simantics.diagram.profile.ButtonResult.B;
+import org.simantics.scenegraph.g2d.G2DNode;
+import org.simantics.scenegraph.g2d.events.EventTypes;
+import org.simantics.scenegraph.g2d.events.MouseEvent;
+import org.simantics.scenegraph.g2d.events.MouseEvent.MouseButtonPressedEvent;
+import org.simantics.scenegraph.g2d.events.MouseEvent.MouseButtonReleasedEvent;
+import org.simantics.scenegraph.g2d.nodes.SVGNode;
+import org.simantics.scenegraph.utils.NodeUtil;
+import org.simantics.scl.runtime.function.Function1;
+
+public class ButtonNode extends IconButtonNode {
+       
+       private static final long serialVersionUID = -1963362069190362275L;
+       
+       private B config;
+       private boolean isDown = false;
+       private Function1<Boolean, Boolean> pressed;
+       
+       private static SVGNode ON = new SVGNode();
+       private static SVGNode OFF = new SVGNode();
+       private static boolean initialized = false;
+       
+    Rectangle2D EMPTY = new Rectangle2D.Double(0, 0, 0, 0);
+       
+       private SVGNode current = OFF;
+       private Rectangle2D lastBounds = EMPTY; 
+
+       public void staticInit() {
+               if(!initialized) {
+                       ON.setData(createSVG("BUTTON_ON"));
+                       OFF.setData(createSVG("BUTTON_OFF"));
+                       initialized = true;
+               }
+       }
+       
+       @Override
+       public void init() {
+               staticInit();
+        addEventHandler(this);
+       }
+       
+    @Override
+    public void cleanup() {
+        removeEventHandler(this);
+        super.cleanup();
+    }
+       
+       private void setValue(double value) {
+               
+               // Value does not affect LATCH buttons
+               if(ButtonMode.LATCH.equals(config.mode)) return;
+               
+               if(value < 0.5) {
+                       current = OFF;
+               } else {
+                       current = ON;
+               } 
+               
+       }
+       
+       private void setConfig(B config) {
+
+               if(this.config == config) return;
+        this.config = config;
+               
+       }
+       
+       public void setA(A data) {
+
+               setConfig(data.config);
+        setValue(data.value);
+               
+       }
+       
+    @Override
+    public void render(Graphics2D g2d) {
+
+               AffineTransform ot = null;
+               if (!transform.isIdentity()) {
+                       ot = g2d.getTransform();
+                       g2d.transform(transform);
+               }
+       
+               current.render(g2d);
+               lastBounds = current.getBounds();
+
+               if (ot != null)
+                       g2d.setTransform(ot);
+       
+    }
+
+       @Override
+       public Rectangle2D getBoundsInLocal() {
+               return lastBounds;
+       }
+
+       @Override
+       void setData(IconButtonResult state) {
+               ButtonResult br = (ButtonResult)state;
+               setA(br.getA());
+               pressed = br.getPressed();
+       }
+
+    private boolean hitTest(MouseEvent event) {
+        Rectangle2D bounds = getBounds();
+        if (bounds == null)
+            return false;
+        Point2D localPos = NodeUtil.worldToLocal(this, event.controlPosition, new Point2D.Double());
+        double x = localPos.getX();
+        double y = localPos.getY();
+        return bounds.contains(x, y);
+    }
+       
+       @Override
+    protected boolean mouseButtonPressed(MouseButtonPressedEvent e) {
+               if(!e.hasAnyButton(MouseEvent.LEFT_BUTTON)) return false;
+               if(!hitTest(e)) return false; 
+               if(pressed != null) {
+                       pressed.apply(true);
+                       isDown = true;
+                       if(ButtonMode.LATCH.equals(config.mode)) {
+                               current = ON;
+                               DiagramNodeUtil.getCanvasContext((G2DNode)this).getContentContext().setDirty();
+                       }
+               }
+        return true;
+    }
+
+       @Override
+    protected boolean mouseButtonReleased(MouseButtonReleasedEvent e) {
+               if(e.hasAnyButton(MouseEvent.LEFT_BUTTON)) return false;
+               if(!hitTest(e) && !isDown) return false; 
+               if(pressed != null) {
+                       pressed.apply(false);
+                       isDown = false;
+                       if(ButtonMode.LATCH.equals(config.mode)) {
+                               current = OFF;
+                               DiagramNodeUtil.getCanvasContext((G2DNode)this).getContentContext().setDirty();
+                       }
+               }
+        return true;
+    }
+       
+    @Override
+    public int getEventMask() {
+        return EventTypes.MouseButtonPressedMask
+                | EventTypes.MouseButtonReleasedMask
+                ;
+    }  
+    
+    public String createSVG(String iconName) {
+       return Activator.ICON_PROVIDER.apply(iconName, new RGB.Integer(0,  0, 0), new Vec2d(1,1));
+    }
+    
 }
\ No newline at end of file