KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > snow > sortabletable > UniversalTableEditor


1 package snow.sortabletable;
2
3 import snow.utils.gui.FontSelector;
4
5 import javax.swing.table.*;
6 import javax.swing.*;
7 import javax.swing.event.*;
8 import javax.swing.border.*;
9 import java.awt.*;
10 import java.text.*;
11 import javax.swing.text.*;
12 import java.awt.font.*;
13 import java.awt.event.*;
14 import java.awt.geom.*;
15 import java.nio.*;
16 import java.nio.charset.*;
17 import java.util.*;
18
19
20 public final class UniversalTableEditor extends AbstractCellEditor implements TableCellEditor
21 {
22   protected final ColorCellEditor colorCellEditor = new ColorCellEditor();
23   protected final DefaultCellEditor textFieldDefaultCellEditor= new DefaultCellEditor(new JTextField());
24   protected final DefaultCellEditor comboBoxDefaultCellEditor = new DefaultCellEditor(new JComboBox());
25   protected final DefaultCellEditor checkBoxDefaultCellEditor = new DefaultCellEditor(new JCheckBox());
26   protected final FontCellEditor fontCellEditor = new FontCellEditor();
27   protected final NumberTableCellEditor numberTableCellEditor = new NumberTableCellEditor();
28
29   private CellEditor selectedEditor = null;
30
31   public UniversalTableEditor()
32   {
33   } // Constructor
34

35
36   // CELL EDITOR INTERFACE
37
//
38

39   public void addCellEditorListener(CellEditorListener l)
40   {
41     /*
42     colorCellEditor.addCellEditorListener(l);
43     textFieldDefaultCellEditor.addCellEditorListener(l);
44     comboBoxDefaultCellEditor.addCellEditorListener(l);
45     checkBoxDefaultCellEditor.addCellEditorListener(l);
46     fontCellEditor.addCellEditorListener(l);
47     numberTableCellEditor.addCellEditorListener(l);*/

48
49     if(selectedEditor!=null)
50     {
51       selectedEditor.addCellEditorListener(l);
52     }
53     //l.
54
//l
55

56   }
57
58   public void removeCellEditorListener(CellEditorListener l)
59   { /*
60     colorCellEditor.removeCellEditorListener(l);
61     textFieldDefaultCellEditor.removeCellEditorListener(l);
62     comboBoxDefaultCellEditor.removeCellEditorListener(l);
63     checkBoxDefaultCellEditor.removeCellEditorListener(l);
64     fontCellEditor.removeCellEditorListener(l);
65     numberTableCellEditor.removeCellEditorListener(l); */

66     if(selectedEditor!=null)
67     {
68       selectedEditor.removeCellEditorListener(l);
69     }
70
71   }
72
73   public void cancelCellEditing()
74   { /*
75     colorCellEditor.cancelCellEditing();
76     textFieldDefaultCellEditor.cancelCellEditing();
77     comboBoxDefaultCellEditor.cancelCellEditing();
78     checkBoxDefaultCellEditor.cancelCellEditing();
79     fontCellEditor.cancelCellEditing();
80     numberTableCellEditor.cancelCellEditing(); */

81     if(selectedEditor!=null)
82     {
83       selectedEditor.cancelCellEditing();
84     }
85
86   }
87
88   public boolean stopCellEditing()
89   {
90   /*
91     colorCellEditor.stopCellEditing();
92     textFieldDefaultCellEditor.stopCellEditing();
93     comboBoxDefaultCellEditor.stopCellEditing();
94     checkBoxDefaultCellEditor.stopCellEditing();
95     fontCellEditor.stopCellEditing();
96     numberTableCellEditor.stopCellEditing();
97     return true;
98     */

99     if(selectedEditor!=null)
100     {
101       return selectedEditor.stopCellEditing();
102     }
103     return true;
104   }
105
106
107   public Object JavaDoc getCellEditorValue()
108   {
109     if(selectedEditor!=null)
110     {
111       return selectedEditor.getCellEditorValue();
112     }
113     return null;
114     //textFieldDefaultCellEditor.getCellEditorValue();
115
}
116
117   public boolean isCellEditable(EventObject anEvent)
118   {
119     //System.out.println(""+anEvent);
120
if(selectedEditor!=null)
121     {
122       return selectedEditor.isCellEditable(anEvent);
123     }
124     // if false, nothing will be editable !!
125
return true;
126   }
127
128   public boolean shouldSelectCell(EventObject anEvent)
129   {
130     if(selectedEditor!=null)
131     {
132       return selectedEditor.shouldSelectCell(anEvent);
133     }
134     return true; // normally true, maybe no for checkboxes...
135
}
136
137
138
139
140
141   /** TableCellEditor interface impl
142   */

143   public Component getTableCellEditorComponent(JTable table,
144                                                Object JavaDoc value,
145                                                boolean isSelected,
146                                                int row,
147                                                int column)
148   {
149      // is null allowed ?? yes, may be casted for example to color
150
// if(value==null) return new JLabel("No editor for null value");
151

152      if(value instanceof Color)
153      {
154        selectedEditor = colorCellEditor;
155        return colorCellEditor.getTableCellEditorComponent(table, (Color) value, isSelected, row, column);
156      }
157      else if(value instanceof Boolean JavaDoc)
158      {
159        selectedEditor = checkBoxDefaultCellEditor;
160        return checkBoxDefaultCellEditor.getTableCellEditorComponent(table, value, isSelected, row, column);
161      }
162      else if(value instanceof Font)
163      {
164        selectedEditor = fontCellEditor;
165        return fontCellEditor.getTableCellEditorComponent(table, value, isSelected, row, column);
166      }
167      else if(value instanceof Double JavaDoc
168            ||value instanceof Float JavaDoc
169            ||value instanceof Integer JavaDoc)
170      {
171        selectedEditor = numberTableCellEditor;
172        return numberTableCellEditor.getTableCellEditorComponent(table, value, isSelected, row, column);
173      }
174      else
175      {
176        // default
177
selectedEditor = textFieldDefaultCellEditor;
178        return textFieldDefaultCellEditor.getTableCellEditorComponent(table, value, isSelected, row, column);
179      }
180
181
182     // return new JLabel("NO EDITOR FOR "+value.getClass().getName());
183
}
184
185
186  class FontCellEditor extends AbstractCellEditor
187                          implements TableCellEditor,
188                                     ActionListener {
189     Font currentFont;
190     JButton button;
191     //FontSelector fontChooser;
192
JDialog dialog;
193     protected static final String JavaDoc EDIT = "edit";
194
195     public FontCellEditor() {
196         button = new JButton();
197         button.setActionCommand(EDIT);
198         button.addActionListener(this);
199         button.setBorderPainted(false);
200
201         //Set up the dialog that the button brings up.
202
//fontChooser = new FontSelector.();
203
}
204
205     public void actionPerformed(ActionEvent e) {
206         if (EDIT.equals(e.getActionCommand()))
207         {
208             //The user has clicked the cell, so
209
//bring up the dialog.
210
//button.setBackground(currentColor);
211
//colorChooser.setColor(currentColor);
212
//dialog.setVisible(true);
213

214             //fontChooser.setFont(currentFont);
215
currentFont = FontSelector.chooseFont(button, currentFont);
216
217             fireEditingStopped(); //Make the renderer reappear.
218

219         }
220         else
221         { //User pressed dialog's "OK" button.
222
//currentFont = fontChooser.getFont();
223
}
224     }
225
226     //Implement the one CellEditor method that AbstractCellEditor doesn't.
227
public Object JavaDoc getCellEditorValue() {
228         return currentFont;
229     }
230
231     //Implement the one method defined by TableCellEditor.
232
public Component getTableCellEditorComponent(JTable table,
233                                                  Object JavaDoc value,
234                                                  boolean isSelected,
235                                                  int row,
236                                                  int column)
237     {
238         if(value instanceof Font)
239         {
240           currentFont = (Font) value;
241         }
242         return button;
243     }
244 }
245
246
247
248 } // UniversalTableEditor
Popular Tags