2 * Copyright 2002 Sun Microsystems, Inc. All rights reserved.
3 * SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
7 * In a chain of data manipulators some behaviour is common. TableMap
8 * provides most of this behavour and can be subclassed by filters
9 * that only need to override a handful of specific methods. TableMap
10 * implements TableModel by routing all requests to its model, and
11 * TableModelListener by routing all events to its listeners. Inserting
12 * a TableMap which has not been subclassed into a chain of table filters
13 * should have no effect.
15 * @version 1.8 02/06/02
16 * @author Philip Milne */
18 import javax.swing.table.*;
19 import javax.swing.event.TableModelListener;
20 import javax.swing.event.TableModelEvent;
22 public class TableMap extends AbstractTableModel implements TableModelListener
24 protected TableModel model;
26 public TableModel getModel() {
30 public void setModel(TableModel model) {
32 model.addTableModelListener(this);
35 // By default, Implement TableModel by forwarding all messages
38 public Object getValueAt(int aRow, int aColumn) {
39 return model.getValueAt(aRow, aColumn);
42 public void setValueAt(Object aValue, int aRow, int aColumn) {
43 model.setValueAt(aValue, aRow, aColumn);
46 public int getRowCount() {
47 return (model == null) ? 0 : model.getRowCount();
50 public int getColumnCount() {
51 return (model == null) ? 0 : model.getColumnCount();
54 public String getColumnName(int aColumn) {
55 return model.getColumnName(aColumn);
58 public Class getColumnClass(int aColumn) {
59 return model.getColumnClass(aColumn);
62 public boolean isCellEditable(int row, int column) {
63 return model.isCellEditable(row, column);
66 // Implementation of the TableModelListener interface,
69 // By default forward all events to all the listeners.
70 public void tableChanged(TableModelEvent e) {