blob: f5b9c2bd00b1af3fbdcb8a33a11515c6aac4ce1e [file] [log] [blame]
J. Duke319a3b92007-12-01 00:00:00 +00001/*
2 * Copyright 1997-1998 Sun Microsystems, Inc. All Rights Reserved.
3 *
4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions
6 * are met:
7 *
8 * - Redistributions of source code must retain the above copyright
9 * notice, this list of conditions and the following disclaimer.
10 *
11 * - Redistributions in binary form must reproduce the above copyright
12 * notice, this list of conditions and the following disclaimer in the
13 * documentation and/or other materials provided with the distribution.
14 *
15 * - Neither the name of Sun Microsystems nor the names of its
16 * contributors may be used to endorse or promote products derived
17 * from this software without specific prior written permission.
18 *
19 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
20 * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
21 * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
22 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
23 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
24 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
25 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
26 * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
27 * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
28 * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
29 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
30 */
31
32/*
33 */
34
35/**
36 * In a chain of data manipulators some behaviour is common. TableMap
37 * provides most of this behavour and can be subclassed by filters
38 * that only need to override a handful of specific methods. TableMap
39 * implements TableModel by routing all requests to its model, and
40 * TableModelListener by routing all events to its listeners. Inserting
41 * a TableMap which has not been subclassed into a chain of table filters
42 * should have no effect.
43 *
44 * @author Philip Milne */
45
46import javax.swing.table.*;
47import javax.swing.event.TableModelListener;
48import javax.swing.event.TableModelEvent;
49
50public class TableMap extends AbstractTableModel implements TableModelListener
51{
52 protected TableModel model;
53
54 public TableModel getModel() {
55 return model;
56 }
57
58 public void setModel(TableModel model) {
59 this.model = model;
60 model.addTableModelListener(this);
61 }
62
63 // By default, Implement TableModel by forwarding all messages
64 // to the model.
65
66 public Object getValueAt(int aRow, int aColumn) {
67 return model.getValueAt(aRow, aColumn);
68 }
69
70 public void setValueAt(Object aValue, int aRow, int aColumn) {
71 model.setValueAt(aValue, aRow, aColumn);
72 }
73
74 public int getRowCount() {
75 return (model == null) ? 0 : model.getRowCount();
76 }
77
78 public int getColumnCount() {
79 return (model == null) ? 0 : model.getColumnCount();
80 }
81
82 public String getColumnName(int aColumn) {
83 return model.getColumnName(aColumn);
84 }
85
86 public Class getColumnClass(int aColumn) {
87 return model.getColumnClass(aColumn);
88 }
89
90 public boolean isCellEditable(int row, int column) {
91 return model.isCellEditable(row, column);
92 }
93//
94// Implementation of the TableModelListener interface,
95//
96
97 // By default forward all events to all the listeners.
98 public void tableChanged(TableModelEvent e) {
99 fireTableChanged(e);
100 }
101}