001: package com.xoetrope.carousel.services;
002:
003: import java.util.EventObject;
004:
005: import java.awt.Component;
006: import java.awt.event.ActionEvent;
007: import java.awt.event.ActionListener;
008: import javax.swing.JButton;
009: import javax.swing.JTable;
010: import javax.swing.event.CellEditorListener;
011: import javax.swing.table.TableCellEditor;
012:
013: import com.xoetrope.carousel.services.dialog.XLibDataChooser;
014:
015: /**
016: * Used as the TableCellEditor when the data property is clicked for a component
017: * <p> Copyright (c) Xoetrope Ltd., 2001-2006, This software is licensed under
018: * the GNU Public License (GPL), please see license.txt for more details. If
019: * you make commercial use of this software you must purchase a commercial
020: * license from Xoetrope.</p>
021: * <p> $Revision: 1.2 $</p>
022: */
023: public class ButtonCellEditor extends JButton implements
024: TableCellEditor, ActionListener {
025: // the table we're monitering
026: JTable table;
027:
028: /**
029: * Create teh JButton with the passed caption and add an actionlistener
030: * @param caption the caption to be used by the JButton
031: */
032: public ButtonCellEditor(String caption) {
033: super (caption);
034: addActionListener(this );
035: }
036:
037: /**
038: * Called when a table row is selected for editing.
039: * @param tbl the JTable we're working with
040: * @param value the value of the cell selected
041: * @param isSelected is the row seleted
042: * @param row the edit row
043: * @param column the edit column
044: * @return this JButton component
045: */
046: public Component getTableCellEditorComponent(JTable tbl,
047: Object value, boolean isSelected, int row, int column) {
048: table = tbl;
049: if (isSelected) {
050: setForeground(table.getSelectionForeground());
051: setBackground(table.getSelectionBackground());
052: } else {
053: setForeground(table.getForeground());
054: setBackground(table.getBackground());
055: }
056: return this ;
057: }
058:
059: public void removeCellListener(CellEditorListener listener) {
060: }
061:
062: public void removeCellEditorListener(CellEditorListener listener) {
063: }
064:
065: public void addCellEditorListener(CellEditorListener listener) {
066: }
067:
068: public void cancelCellEditing() {
069: }
070:
071: public void stopCellEditing(EventObject o) {
072: }
073:
074: public boolean stopCellEditing() {
075: return true;
076: }
077:
078: public boolean shouldSelectCell(EventObject o) {
079: return true;
080: }
081:
082: public boolean isCellEditable(EventObject o) {
083: return true;
084: }
085:
086: /**
087: * get the value of the celleditor
088: * @return the text of the JButton
089: */
090: public Object getCellEditorValue() {
091: return getText();
092: }
093:
094: /**
095: * Create an XLibDataChooser dialog. If the return value is not null set the
096: * value at the editing row to that value.
097: * @param e
098: */
099: public void actionPerformed(ActionEvent e) {
100: // XLibDataChooser dlg = new XLibDataChooser();
101: // String ret = dlg.showDlg( ( String )table.getValueAt( table.getEditingRow(), 1 ) );
102: // if ( ret != null )
103: // table.setValueAt( ret, table.getEditingRow(), 1 );
104: }
105: }
|