--- /dev/null
+/*******************************************************************************\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.scenegraph.swing;
+
+import java.awt.Color;\r
+import java.awt.Font;\r
+import java.awt.Graphics2D;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;\r
+import java.util.HashSet;
+import java.util.Set;
+
+import javax.swing.JButton;\r
+
+public class ButtonNode extends ComponentNode<JButton> implements ActionListener {
+
+ private static final long serialVersionUID = 3161843367263793336L;
+
+ protected String text;
+ protected Font font = null;\r
+ protected Color color = null;\r
+
+ protected transient Set<ActionListener> actionListeners = new HashSet<ActionListener>();
+
+ @Override
+ public void render(Graphics2D g2d) {\r
+ if (component != null)\r
+ component.setText(text);\r
+ super.render(g2d);
+ }\r
+
+ @SyncField("text")
+ public void setText(String text) {
+ this.text = text;
+ }\r
+ \r
+ @PropertySetter("Font")
+ @SyncField("font")\r
+ public void setFont(Font font) {\r
+ this.font = font;\r
+ if (component != null) {\r
+ setComponentFont(font);\r
+ }\r
+ }\r
+\r
+ @PropertySetter("Color")\r
+ @SyncField("color")\r
+ public void setColor(Color color) {\r
+ this.color = color;\r
+ if (component != null) {\r
+ component.setForeground(color);\r
+ }\r
+ }\r
+ \r
+ public Font getFont() {\r
+ return font;\r
+ }\r
+
+ @ServerSide
+ @Override
+ public void actionPerformed(ActionEvent e) {
+ for(ActionListener listener : actionListeners)
+ listener.actionPerformed(e);
+ }
+
+ public void addActionListener(ActionListener l) {
+ actionListeners.add(l);
+ }
+
+ public void removeActionListener(ActionListener l) {
+ actionListeners.remove(l);
+ }\r
+
+ @Override\r
+ public void init() {\r
+ component = new JButton();\r
+ component.addActionListener(this);\r
+// scale = true;\r
+ super.init();\r
+ }
+}