X-Git-Url: https://gerrit.simantics.org/r/gitweb?a=blobdiff_plain;f=bundles%2Forg.simantics.scenegraph%2Fsrc%2Forg%2Fsimantics%2Fscenegraph%2Fg2d%2Fnodes%2FBooleanToggleValueNode.java;h=44c08c8783504cbd3c21c8b2698da9462cdcc02d;hb=bc195f999a0a3f4571ff45342327223b4b480750;hp=33a69098d2fab78717d896565a1d643bae801b55;hpb=969bd23cab98a79ca9101af33334000879fb60c5;p=simantics%2Fplatform.git diff --git a/bundles/org.simantics.scenegraph/src/org/simantics/scenegraph/g2d/nodes/BooleanToggleValueNode.java b/bundles/org.simantics.scenegraph/src/org/simantics/scenegraph/g2d/nodes/BooleanToggleValueNode.java index 33a69098d..44c08c878 100644 --- a/bundles/org.simantics.scenegraph/src/org/simantics/scenegraph/g2d/nodes/BooleanToggleValueNode.java +++ b/bundles/org.simantics.scenegraph/src/org/simantics/scenegraph/g2d/nodes/BooleanToggleValueNode.java @@ -1,137 +1,137 @@ -/******************************************************************************* - * 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.scenegraph.g2d.nodes; - -import java.awt.BasicStroke; -import java.awt.Color; -import java.awt.Graphics2D; -import java.awt.Shape; -import java.awt.event.ActionEvent; -import java.awt.event.ActionListener; -import java.awt.geom.AffineTransform; -import java.awt.geom.Line2D; -import java.awt.geom.Point2D; -import java.awt.geom.Rectangle2D; - -import org.simantics.scenegraph.g2d.G2DNode; -import org.simantics.scenegraph.g2d.events.EventTypes; -import org.simantics.scenegraph.g2d.events.MouseEvent.MouseClickEvent; -import org.simantics.scenegraph.g2d.events.MouseEvent.MouseMovedEvent; -import org.simantics.scenegraph.utils.DummyComponent; -import org.simantics.scenegraph.utils.NodeUtil; - -public class BooleanToggleValueNode extends G2DNode implements ActionListener { - private static final long serialVersionUID = 3255791584573492072L; - - protected static final BasicStroke STROKE = new BasicStroke(1.0f); - protected static final Rectangle2D BOUNDS = new Rectangle2D.Double(-10, -10, 20, 20); - - protected Boolean value = null; - protected transient boolean mouseOver = false; - - @Override - public void init() { - super.init(); - addEventHandler(this); - } - - @SyncField("value") - public void setValue(Boolean value) { - this.value = value; - } - - @Override - public void render(Graphics2D g) { - Color borderColor = new Color(160, 10, 10); - Color fillColor = new Color(210, 10, 10); - boolean in = false; - if(value != null && value) { - borderColor = new Color(10, 160, 10); - fillColor = new Color(10, 210, 10); - in = true; - } - - if(mouseOver) borderColor = borderColor.darker(); - AffineTransform ot = g.getTransform(); - - g.transform(transform); - - g.setColor(fillColor); - g.fill(BOUNDS); - - g.setStroke(STROKE); - g.setColor(in ? borderColor.darker().darker() : borderColor); - g.draw(new Line2D.Double(BOUNDS.getMinX(), BOUNDS.getMinY(), BOUNDS.getMinX(), BOUNDS.getMaxY())); - g.draw(new Line2D.Double(BOUNDS.getMinX(), BOUNDS.getMinY(), BOUNDS.getMaxX(), BOUNDS.getMinY())); - - g.setColor(in ? borderColor : borderColor.darker().darker()); - g.draw(new Line2D.Double(BOUNDS.getMaxX(), BOUNDS.getMinY(), BOUNDS.getMaxX(), BOUNDS.getMaxY())); - g.draw(new Line2D.Double(BOUNDS.getMinX(), BOUNDS.getMaxY(), BOUNDS.getMaxX(), BOUNDS.getMaxY())); - - g.setTransform(ot); - } - - /** - * Helper method to be used inside MonitorClass - * @return - */ - public static Shape getOutline() { - return BOUNDS; - } - - @Override - public Rectangle2D getBoundsInLocal() { - return BOUNDS; - } - - protected transient ActionListener actionListener = null; - - public void setActionListener(ActionListener actionListener) { - this.actionListener = actionListener; - } - - @ServerSide - @Override - public void actionPerformed(ActionEvent e) { - if(actionListener != null) { - actionListener.actionPerformed(e); - } - } - - @Override - protected boolean mouseClicked(MouseClickEvent e) { - Point2D pt = NodeUtil.worldToLocal(this, e.controlPosition, new Point2D.Double()); - if (BOUNDS.contains(pt)) { - setValue((value == null || value == false) ? true : false); // Toggle value - actionPerformed(new ActionEvent(new DummyComponent(), ActionEvent.ACTION_PERFORMED, ""+value)); - repaint(); - return true; - } - return false; - } - - @Override - protected boolean mouseMoved(MouseMovedEvent e) { - Point2D pt = NodeUtil.worldToLocal(this, e.controlPosition, new Point2D.Double()); - boolean tmp = mouseOver; - mouseOver = BOUNDS.contains(pt); - if (tmp != mouseOver) - repaint(); - return false; - } - - @Override - public int getEventMask() { - return EventTypes.MouseMovedMask | EventTypes.MouseClickMask; - } - -} +/******************************************************************************* + * 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.scenegraph.g2d.nodes; + +import java.awt.BasicStroke; +import java.awt.Color; +import java.awt.Graphics2D; +import java.awt.Shape; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; +import java.awt.geom.AffineTransform; +import java.awt.geom.Line2D; +import java.awt.geom.Point2D; +import java.awt.geom.Rectangle2D; + +import org.simantics.scenegraph.g2d.G2DNode; +import org.simantics.scenegraph.g2d.events.EventTypes; +import org.simantics.scenegraph.g2d.events.MouseEvent.MouseClickEvent; +import org.simantics.scenegraph.g2d.events.MouseEvent.MouseMovedEvent; +import org.simantics.scenegraph.utils.DummyComponent; +import org.simantics.scenegraph.utils.NodeUtil; + +public class BooleanToggleValueNode extends G2DNode implements ActionListener { + private static final long serialVersionUID = 3255791584573492072L; + + protected static final BasicStroke STROKE = new BasicStroke(1.0f); + protected static final Rectangle2D BOUNDS = new Rectangle2D.Double(-10, -10, 20, 20); + + protected Boolean value = null; + protected transient boolean mouseOver = false; + + @Override + public void init() { + super.init(); + addEventHandler(this); + } + + @SyncField("value") + public void setValue(Boolean value) { + this.value = value; + } + + @Override + public void render(Graphics2D g) { + Color borderColor = new Color(160, 10, 10); + Color fillColor = new Color(210, 10, 10); + boolean in = false; + if(value != null && value) { + borderColor = new Color(10, 160, 10); + fillColor = new Color(10, 210, 10); + in = true; + } + + if(mouseOver) borderColor = borderColor.darker(); + AffineTransform ot = g.getTransform(); + + g.transform(transform); + + g.setColor(fillColor); + g.fill(BOUNDS); + + g.setStroke(STROKE); + g.setColor(in ? borderColor.darker().darker() : borderColor); + g.draw(new Line2D.Double(BOUNDS.getMinX(), BOUNDS.getMinY(), BOUNDS.getMinX(), BOUNDS.getMaxY())); + g.draw(new Line2D.Double(BOUNDS.getMinX(), BOUNDS.getMinY(), BOUNDS.getMaxX(), BOUNDS.getMinY())); + + g.setColor(in ? borderColor : borderColor.darker().darker()); + g.draw(new Line2D.Double(BOUNDS.getMaxX(), BOUNDS.getMinY(), BOUNDS.getMaxX(), BOUNDS.getMaxY())); + g.draw(new Line2D.Double(BOUNDS.getMinX(), BOUNDS.getMaxY(), BOUNDS.getMaxX(), BOUNDS.getMaxY())); + + g.setTransform(ot); + } + + /** + * Helper method to be used inside MonitorClass + * @return + */ + public static Shape getOutline() { + return BOUNDS; + } + + @Override + public Rectangle2D getBoundsInLocal() { + return BOUNDS; + } + + protected transient ActionListener actionListener = null; + + public void setActionListener(ActionListener actionListener) { + this.actionListener = actionListener; + } + + @ServerSide + @Override + public void actionPerformed(ActionEvent e) { + if(actionListener != null) { + actionListener.actionPerformed(e); + } + } + + @Override + protected boolean mouseClicked(MouseClickEvent e) { + Point2D pt = NodeUtil.worldToLocal(this, e.controlPosition, new Point2D.Double()); + if (BOUNDS.contains(pt)) { + setValue((value == null || value == false) ? true : false); // Toggle value + actionPerformed(new ActionEvent(new DummyComponent(), ActionEvent.ACTION_PERFORMED, ""+value)); + repaint(); + return true; + } + return false; + } + + @Override + protected boolean mouseMoved(MouseMovedEvent e) { + Point2D pt = NodeUtil.worldToLocal(this, e.controlPosition, new Point2D.Double()); + boolean tmp = mouseOver; + mouseOver = BOUNDS.contains(pt); + if (tmp != mouseOver) + repaint(); + return false; + } + + @Override + public int getEventMask() { + return EventTypes.MouseMovedMask | EventTypes.MouseClickMask; + } + +}