1 package groovy.inspect.swingui;
2
3 /*
4 * Copyright (c) 2003 Sun Microsystems, Inc. All Rights Reserved.
5 *
6 * Redistribution and use in source and binary forms, with or without
7 * modification, are permitted provided that the following conditions
8 * are met:
9 *
10 * -Redistributions of source code must retain the above copyright
11 * notice, this list of conditions and the following disclaimer.
12 *
13 * -Redistribution in binary form must reproduct the above copyright
14 * notice, this list of conditions and the following disclaimer in
15 * the documentation and/or other materials provided with the distribution.
16 *
17 * Neither the name of Sun Microsystems, Inc. or the names of contributors
18 * may be used to endorse or promote products derived from this software
19 * without specific prior written permission.
20 *
21 * This software is provided "AS IS," without a warranty of any kind. ALL
22 * EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES, INCLUDING
23 * ANY IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE
24 * OR NON-INFRINGEMENT, ARE HEREBY EXCLUDED. SUN AND ITS LICENSORS SHALL NOT
25 * BE LIABLE FOR ANY DAMAGES OR LIABILITIES SUFFERED BY LICENSEE AS A RESULT
26 * OF OR RELATING TO USE, MODIFICATION OR DISTRIBUTION OF THE SOFTWARE OR ITS
27 * DERIVATIVES. IN NO EVENT WILL SUN OR ITS LICENSORS BE LIABLE FOR ANY LOST
28 * REVENUE, PROFIT OR DATA, OR FOR DIRECT, INDIRECT, SPECIAL, CONSEQUENTIAL,
29 * INCIDENTAL OR PUNITIVE DAMAGES, HOWEVER CAUSED AND REGARDLESS OF THE THEORY
30 * OF LIABILITY, ARISING OUT OF THE USE OF OR INABILITY TO USE SOFTWARE, EVEN
31 * IF SUN HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
32 *
33 * You acknowledge that Software is not designed, licensed or intended for
34 * use in the design, construction, operation or maintenance of any nuclear
35 * facility.
36 */
37
38 /*
39 * @(#)TableMap.java 1.11 03/01/23
40 */
41
42 /***
43 * In a chain of data manipulators some behaviour is common. TableMap
44 * provides most of this behavour and can be subclassed by filters
45 * that only need to override a handful of specific methods. TableMap
46 * implements TableModel by routing all requests to its model, and
47 * TableModelListener by routing all events to its listeners. Inserting
48 * a TableMap which has not been subclassed into a chain of table filters
49 * should have no effect.
50 *
51 * @version 1.11 01/23/03
52 * @author Philip Milne */
53
54 import javax.swing.table.*;
55 import javax.swing.event.TableModelListener;
56 import javax.swing.event.TableModelEvent;
57
58 public class TableMap extends AbstractTableModel implements TableModelListener
59 {
60 protected TableModel model;
61
62 public TableModel getModel() {
63 return model;
64 }
65
66 public void setModel(TableModel model) {
67 this.model = model;
68 model.addTableModelListener(this);
69 }
70
71 // By default, Implement TableModel by forwarding all messages
72 // to the model.
73
74 public Object getValueAt(int aRow, int aColumn) {
75 return model.getValueAt(aRow, aColumn);
76 }
77
78 public void setValueAt(Object aValue, int aRow, int aColumn) {
79 model.setValueAt(aValue, aRow, aColumn);
80 }
81
82 public int getRowCount() {
83 return (model == null) ? 0 : model.getRowCount();
84 }
85
86 public int getColumnCount() {
87 return (model == null) ? 0 : model.getColumnCount();
88 }
89
90 public String getColumnName(int aColumn) {
91 return model.getColumnName(aColumn);
92 }
93
94 public Class getColumnClass(int aColumn) {
95 return model.getColumnClass(aColumn);
96 }
97
98 public boolean isCellEditable(int row, int column) {
99 return model.isCellEditable(row, column);
100 }
101 //
102 // Implementation of the TableModelListener interface,
103 //
104
105 // By default forward all events to all the listeners.
106 public void tableChanged(TableModelEvent e) {
107 fireTableChanged(e);
108 }
109 }
110