View Javadoc

1   /*
2    *  UnBBayes
3    *  Copyright (C) 2002, 2008 Universidade de Brasilia - http://www.unb.br
4    *
5    *  This file is part of UnBBayes.
6    *
7    *  UnBBayes is free software: you can redistribute it and/or modify
8    *  it under the terms of the GNU General Public License as published by
9    *  the Free Software Foundation, either version 3 of the License, or
10   *  (at your option) any later version.
11   *
12   *  UnBBayes is distributed in the hope that it will be useful,
13   *  but WITHOUT ANY WARRANTY; without even the implied warranty of
14   *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15   *  GNU General Public License for more details.
16   *
17   *  You should have received a copy of the GNU General Public License
18   *  along with UnBBayes.  If not, see <http://www.gnu.org/licenses/>.
19   *
20   */
21  package unbbayes.gui.table;
22  
23  import java.awt.Component;
24  
25  import javax.swing.BorderFactory;
26  import javax.swing.JRadioButton;
27  import javax.swing.JTable;
28  import javax.swing.UIManager;
29  import javax.swing.border.Border;
30  import javax.swing.plaf.UIResource;
31  import javax.swing.table.TableCellRenderer;
32  
33  /**
34   * Adapted from BooleanRenderer class found in source code of
35   * javax.swing.JTable
36   */
37  public class RadioButtonCellRenderer implements TableCellRenderer, UIResource {
38  	JRadioButton radioButton;
39  
40  	Border emptyBorder;
41  
42  	public RadioButtonCellRenderer() {
43  		radioButton = new JRadioButton();
44  		radioButton.setHorizontalAlignment(JRadioButton.CENTER);
45  		radioButton.setBorderPainted(true);
46  		emptyBorder = BorderFactory.createEmptyBorder(1, 1, 1, 1);
47  	}
48  
49  	public Component getTableCellRendererComponent(JTable table,
50  			Object value, boolean isSelected, boolean hasFocus, int row,
51  			int col) {
52  		if (isSelected) {
53  			radioButton.setBackground(table.getSelectionBackground());
54  			radioButton.setForeground(table.getSelectionForeground());
55  		} else {
56  			radioButton.setBackground(table.getBackground());
57  			radioButton.setForeground(table.getForeground());
58  		}
59  		if (hasFocus)
60  			radioButton.setBorder(UIManager
61  					.getBorder("Table.focusCellHighlightBorder"));
62  		else
63  			radioButton.setBorder(emptyBorder);
64  
65  		radioButton.setSelected(((Boolean) value).booleanValue());
66  		return radioButton;
67  	}
68  }