version 0.2
[jMoule] / src / TableMap.java
1 /*
2  * Copyright 2002 Sun Microsystems, Inc. All rights reserved.
3  * SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
4  */
5
6 /** 
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.
14  *
15  * @version 1.8 02/06/02
16  * @author Philip Milne */
17
18 import javax.swing.table.*; 
19 import javax.swing.event.TableModelListener; 
20 import javax.swing.event.TableModelEvent; 
21
22 public class TableMap extends AbstractTableModel implements TableModelListener
23 {
24     protected TableModel model; 
25
26     public TableModel  getModel() {
27         return model;
28     }
29
30     public void  setModel(TableModel model) {
31         this.model = model; 
32         model.addTableModelListener(this); 
33     }
34
35     // By default, Implement TableModel by forwarding all messages 
36     // to the model. 
37
38     public Object getValueAt(int aRow, int aColumn) {
39         return model.getValueAt(aRow, aColumn); 
40     }
41         
42     public void setValueAt(Object aValue, int aRow, int aColumn) {
43         model.setValueAt(aValue, aRow, aColumn); 
44     }
45
46     public int getRowCount() {
47         return (model == null) ? 0 : model.getRowCount(); 
48     }
49
50     public int getColumnCount() {
51         return (model == null) ? 0 : model.getColumnCount(); 
52     }
53         
54     public String getColumnName(int aColumn) {
55         return model.getColumnName(aColumn); 
56     }
57
58     public Class getColumnClass(int aColumn) {
59         return model.getColumnClass(aColumn); 
60     }
61         
62     public boolean isCellEditable(int row, int column) { 
63          return model.isCellEditable(row, column); 
64     }
65 //
66 // Implementation of the TableModelListener interface, 
67 //
68
69     // By default forward all events to all the listeners. 
70     public void tableChanged(TableModelEvent e) {
71         fireTableChanged(e);
72     }
73 }