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 } 35 36 39 public void addCellEditorListener(CellEditorListener l) 40 { 41 48 49 if(selectedEditor!=null) 50 { 51 selectedEditor.addCellEditorListener(l); 52 } 53 56 } 57 58 public void removeCellEditorListener(CellEditorListener l) 59 { 66 if(selectedEditor!=null) 67 { 68 selectedEditor.removeCellEditorListener(l); 69 } 70 71 } 72 73 public void cancelCellEditing() 74 { 81 if(selectedEditor!=null) 82 { 83 selectedEditor.cancelCellEditing(); 84 } 85 86 } 87 88 public boolean stopCellEditing() 89 { 90 99 if(selectedEditor!=null) 100 { 101 return selectedEditor.stopCellEditing(); 102 } 103 return true; 104 } 105 106 107 public Object getCellEditorValue() 108 { 109 if(selectedEditor!=null) 110 { 111 return selectedEditor.getCellEditorValue(); 112 } 113 return null; 114 } 116 117 public boolean isCellEditable(EventObject anEvent) 118 { 119 if(selectedEditor!=null) 121 { 122 return selectedEditor.isCellEditable(anEvent); 123 } 124 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; } 136 137 138 139 140 141 143 public Component getTableCellEditorComponent(JTable table, 144 Object value, 145 boolean isSelected, 146 int row, 147 int column) 148 { 149 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 ) 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 168 ||value instanceof Float 169 ||value instanceof Integer ) 170 { 171 selectedEditor = numberTableCellEditor; 172 return numberTableCellEditor.getTableCellEditorComponent(table, value, isSelected, row, column); 173 } 174 else 175 { 176 selectedEditor = textFieldDefaultCellEditor; 178 return textFieldDefaultCellEditor.getTableCellEditorComponent(table, value, isSelected, row, column); 179 } 180 181 182 } 184 185 186 class FontCellEditor extends AbstractCellEditor 187 implements TableCellEditor, 188 ActionListener { 189 Font currentFont; 190 JButton button; 191 JDialog dialog; 193 protected static final String EDIT = "edit"; 194 195 public FontCellEditor() { 196 button = new JButton(); 197 button.setActionCommand(EDIT); 198 button.addActionListener(this); 199 button.setBorderPainted(false); 200 201 } 204 205 public void actionPerformed(ActionEvent e) { 206 if (EDIT.equals(e.getActionCommand())) 207 { 208 214 currentFont = FontSelector.chooseFont(button, currentFont); 216 217 fireEditingStopped(); 219 } 220 else 221 { } 224 } 225 226 public Object getCellEditorValue() { 228 return currentFont; 229 } 230 231 public Component getTableCellEditorComponent(JTable table, 233 Object 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 } | Popular Tags |