1 /*******************************************************************************
\r
2 * Copyright (c) 2007, 2010 Association for Decentralized Information Management
\r
3 * in Industry THTH ry.
\r
4 * All rights reserved. This program and the accompanying materials
\r
5 * are made available under the terms of the Eclipse Public License v1.0
\r
6 * which accompanies this distribution, and is available at
\r
7 * http://www.eclipse.org/legal/epl-v10.html
\r
10 * VTT Technical Research Centre of Finland - initial API and implementation
\r
11 *******************************************************************************/
\r
12 package org.simantics.scenegraph.swing;
\r
14 import java.awt.Color;
\r
15 import java.awt.Font;
\r
16 import java.awt.event.ActionEvent;
\r
17 import java.awt.event.ActionListener;
\r
18 import java.util.HashMap;
\r
19 import java.util.List;
\r
20 import java.util.Map;
\r
22 import javax.swing.Box;
\r
23 import javax.swing.BoxLayout;
\r
24 import javax.swing.JRadioButton;
\r
26 public class RadioButtonListNode extends ComponentNode<Box> implements ActionListener {
\r
30 private static final long serialVersionUID = 7073028693751719102L;
\r
32 protected boolean editable = true;
\r
33 protected Object value = "";
\r
34 protected String tooltip = "";
\r
35 protected double borderWidth = 0;
\r
37 protected transient ActionListener actionListener = null;
\r
39 protected Font font = null;
\r
40 protected Color color = null;
\r
41 protected Map<String, JRadioButton> items = new HashMap<String, JRadioButton>();
\r
44 public String toString() {
\r
45 return super.toString() + "[editable=" + editable + ", value=" + value + "]";
\r
49 public void init() {
\r
50 component = new Box(BoxLayout.Y_AXIS);
\r
51 component.setEnabled(editable);
\r
52 component.setLocation(0, 0);
\r
58 public void setItems(List<String> items) {
\r
60 component.removeAll();
\r
61 for(String item : items) {
\r
62 JRadioButton btn = new JRadioButton();
\r
64 btn.addActionListener(this);
\r
66 this.items.put(item, btn);
\r
68 if(items.size() > 0)
\r
69 ((JRadioButton)component.getComponent(0)).setSelected(true); // First item selected
\r
71 component.doLayout();
\r
74 @SyncField("editable")
\r
75 public void setEditable(boolean value) {
\r
76 this.editable = value;
\r
78 if(component != null) {
\r
79 component.setEnabled(value);
\r
83 @PropertySetter("Stroke Width")
\r
84 @SyncField("borderWidth")
\r
85 public void setBorderWidth(Float borderWidth) {
\r
86 this.borderWidth = borderWidth;
\r
87 // if(component != null) {
\r
88 // ((TextField)component).setBorder(borderWidth);
\r
93 public void setValue(Object value) {
\r
95 // RemoteViewer does not have component initialized
\r
96 if (component != null && value != null) {
\r
97 JRadioButton b = items.get(value);
\r
99 for(JRadioButton i : items.values()) {
\r
101 i.setSelected(true);
\r
103 i.setSelected(false);
\r
110 @SyncField("tooltip")
\r
111 public void setToolTipText(String tooltip) {
\r
112 this.tooltip = tooltip;
\r
113 if (component != null) {
\r
114 component.setToolTipText(tooltip);
\r
118 @PropertySetter("Font")
\r
120 public void setFont(Font font) {
\r
122 if (component != null) {
\r
123 setComponentFont(font);
\r
127 @PropertySetter("Color")
\r
128 @SyncField("color")
\r
129 public void setColor(Color color) {
\r
130 this.color = color;
\r
131 if (component != null) {
\r
132 component.setForeground(color);
\r
136 public Object getValue() {
\r
140 public Font getFont() {
\r
144 public void setActionListener(ActionListener actionListener) {
\r
145 this.actionListener = actionListener;
\r
149 * Wrapper method to send event to server side
\r
154 public void performAction(ActionEvent e) {
\r
155 if (actionListener != null) {
\r
156 //System.out.println("MonitorNode.performAction(" + e + ")");
\r
157 actionListener.actionPerformed(e);
\r
161 public void actionPerformed(ActionEvent e) {
\r
162 JRadioButton b = items.get(e.getActionCommand());
\r
164 for(JRadioButton i : items.values()) {
\r
166 i.setSelected(true);
\r
168 i.setSelected(false);
\r