]> gerrit.simantics Code Review - simantics/platform.git/blob - bundles/org.simantics.scenegraph.swing/src/org/simantics/scenegraph/swing/RadioButtonNode.java
Fixed all line endings of the repository
[simantics/platform.git] / bundles / org.simantics.scenegraph.swing / src / org / simantics / scenegraph / swing / RadioButtonNode.java
1 /*******************************************************************************
2  * Copyright (c) 2007, 2010 Association for Decentralized Information Management
3  * in Industry THTH ry.
4  * All rights reserved. This program and the accompanying materials
5  * are made available under the terms of the Eclipse Public License v1.0
6  * which accompanies this distribution, and is available at
7  * http://www.eclipse.org/legal/epl-v10.html
8  *
9  * Contributors:
10  *     VTT Technical Research Centre of Finland - initial API and implementation
11  *******************************************************************************/
12 package org.simantics.scenegraph.swing;
13
14 import java.awt.Color;
15 import java.awt.Font;
16 import java.awt.Graphics2D;
17 import java.awt.event.ActionEvent;
18 import java.awt.event.ActionListener;
19 import java.awt.geom.Rectangle2D;
20 import java.util.HashSet;
21 import java.util.Set;
22
23 import javax.swing.JRadioButton;
24
25 public class RadioButtonNode extends ComponentNode<JRadioButton> implements ActionListener {
26
27     private static final long serialVersionUID = 3161843367263793336L;
28
29     protected String text;
30     protected Font font = null;
31     protected Color color = null;
32
33     protected transient Set<ActionListener> actionListeners = new HashSet<ActionListener>();
34     
35     @Override
36     public void render(Graphics2D g2d) {
37         if(component != null && component.getText() != null && component.getText().equals(text) == false)
38                 component.setText(text);
39         super.render(g2d);
40     }
41
42     @SyncField("bounds")
43     public void setBounds(Rectangle2D bounds) {
44         this.bounds = bounds;
45     }
46
47     @SyncField("text")
48     public void setText(String text) {
49         this.text = text;
50     }
51     
52     @SyncField("font")
53     public void setFont(Font font) {
54         this.font = font;
55         if (component != null) {
56             setComponentFont(font);
57         }
58     }
59
60     @SyncField("color")
61     public void setColor(Color color) {
62         this.color = color;
63         if (component != null) {
64             component.setForeground(color);
65         }
66     }
67     
68     public Font getFont() {
69         return font;
70     }
71
72     @ServerSide
73         @Override
74         public void actionPerformed(ActionEvent e) {
75                 for(ActionListener listener : actionListeners)
76                         listener.actionPerformed(e);
77         }
78         
79     public void addActionListener(ActionListener l) {
80         actionListeners.add(l);
81     }
82     
83     public void removeActionListener(ActionListener l) {
84         actionListeners.remove(l);
85     }
86
87     @Override
88     public void init() {
89         component = new JRadioButton();
90                 component.addActionListener(this);
91         super.init();
92     }
93 }