01: package com.xoetrope.swing.table;
02:
03: import java.awt.Component;
04: import java.util.EventObject;
05: import javax.swing.DefaultCellEditor;
06: import javax.swing.JCheckBox;
07: import javax.swing.JLabel;
08: import javax.swing.JTable;
09: import javax.swing.event.CellEditorListener;
10: import javax.swing.table.TableCellRenderer;
11:
12: /**
13: * A table cell renderer that renders boolean content with a checkbox
14: *
15: * <p> Copyright (c) Xoetrope Ltd., 2001-2006, This software is licensed under
16: * the GNU Public License (GPL), please see license.txt for more details. If
17: * you make commercial use of this software you must purchase a commercial
18: * license from Xoetrope.</p>
19: */
20: public class XCheckBoxTableCellRenderer extends DefaultCellEditor
21: implements TableCellRenderer {
22: /** Creates a new instance of XCheckBoxTableCellRenderer */
23: public XCheckBoxTableCellRenderer() {
24: super (new JCheckBox());
25:
26: editorComponent.setOpaque(true);
27: editorComponent.setEnabled(true);
28: }
29:
30: /**
31: *
32: * Returns the default table cell renderer.
33: *
34: * @param table the <code>JTable</code>
35: * @param value the value to assign to the cell at
36: * <code>[row, column]</code>
37: * @param isSelected true if cell is selected
38: * @param hasFocus true if cell has focus
39: * @param row the row of the cell to render
40: * @param column the column of the cell to render
41: * @return the default table cell renderer
42: */
43: public Component getTableCellRendererComponent(JTable table,
44: Object value, boolean isSelected, boolean hasFocus,
45: int row, int column) {
46: if (isSelected) {
47: editorComponent.setForeground(table
48: .getSelectionForeground());
49: editorComponent.setBackground(table
50: .getSelectionBackground());
51: } else {
52: editorComponent.setForeground(table.getForeground());
53: editorComponent.setBackground(table.getBackground());
54: }
55:
56: ((JCheckBox) editorComponent).setSelected("true".equals(value
57: .toString()));
58:
59: return editorComponent;
60: }
61:
62: /**
63: * Sets the <code>String</code> object for the cell being rendered to
64: * <code>value</code>.
65: *
66: * @param value the string value for this cell; if value is
67: * <code>null</code> it sets the text value to an empty string
68: * @see JLabel#setText
69: *
70: */
71: public void setValue(Object value) {
72: ((JCheckBox) editorComponent).setSelected("true".equals(value
73: .toString()));
74: }
75:
76: public boolean isCellEditable(EventObject anEvent) {
77: return true;
78: }
79: }
|