/* * Copyright (C) 2004 The Concord Consortium, Inc., * 10 Concord Crossing, Concord, MA 01742 * * Web Site: http://www.concord.org * Email: info@concord.org * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * * END LICENSE */ package org.concord.swing.beans; import java.awt.Component; import java.awt.GridLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.beans.PropertyEditorSupport; import java.util.Enumeration; import java.util.Hashtable; import javax.swing.ButtonGroup; import javax.swing.JPanel; import javax.swing.JRadioButton; public class RadioGroupPropertyEditor extends PropertyEditorSupport implements ActionListener { JPanel radioPanel; ButtonGroup radioGroup; Hashtable radioButtonValues; public RadioGroupPropertyEditor() { radioPanel=new JPanel(); radioGroup=new ButtonGroup(); radioPanel.setLayout(new GridLayout(1, 5)); radioButtonValues=new Hashtable(); initValues(); } public Component getCustomEditor() { return radioPanel; } public boolean supportsCustomEditor() { return true; } public void actionPerformed(ActionEvent e) { firePropertyChange(); } public Object getValue() { Enumeration values; Integer val; values=radioButtonValues.keys(); while (values.hasMoreElements()){ val=(Integer)values.nextElement(); if (((JRadioButton)radioButtonValues.get(val)).isSelected()){ return val; } } return new Integer(0); } public void setValue(Object value) { JRadioButton butt; butt = (JRadioButton)radioButtonValues.get(value); if (butt!=null){ butt.setSelected(true); } } protected void initValues() { addRadio("test",0); } public void addRadio(String label, int value) { JRadioButton radio; radio = new JRadioButton(); radio.setText(label); radio.addActionListener(this); radioButtonValues.put(new Integer(value),radio); radioGroup.add(radio); radioPanel.add(radio); radioPanel.validate(); } }