001: /*--
002:
003: Copyright (C) 2000-2003 Anthony Eden.
004: All rights reserved.
005:
006: Redistribution and use in source and binary forms, with or without
007: modification, are permitted provided that the following conditions
008: are met:
009:
010: 1. Redistributions of source code must retain the above copyright
011: notice, this list of conditions, and the following disclaimer.
012:
013: 2. Redistributions in binary form must reproduce the above copyright
014: notice, this list of conditions, and the disclaimer that follows
015: these conditions in the documentation and/or other materials
016: provided with the distribution.
017:
018: 3. The name "EdenLib" must not be used to endorse or promote products
019: derived from this software without prior written permission. For
020: written permission, please contact me@anthonyeden.com.
021:
022: 4. Products derived from this software may not be called "EdenLib", nor
023: may "EdenLib" appear in their name, without prior written permission
024: from Anthony Eden (me@anthonyeden.com).
025:
026: In addition, I request (but do not require) that you include in the
027: end-user documentation provided with the redistribution and/or in the
028: software itself an acknowledgement equivalent to the following:
029: "This product includes software developed by
030: Anthony Eden (http://www.anthonyeden.com/)."
031:
032: THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
033: WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
034: OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
035: DISCLAIMED. IN NO EVENT SHALL THE AUTHOR(S) BE LIABLE FOR ANY DIRECT,
036: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
037: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
038: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
039: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
040: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
041: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
042: POSSIBILITY OF SUCH DAMAGE.
043:
044: For more information on EdenLib, please see <http://edenlib.sf.net/>.
045:
046: */
047:
048: package com.anthonyeden.lib.util;
049:
050: import javax.swing.table.*;
051: import javax.swing.event.TableModelListener;
052: import javax.swing.event.TableModelEvent;
053:
054: /** Based on work by Philip Milne.
055:
056: @author Anthony Eden
057: */
058:
059: public class TableMap extends AbstractTableModel implements
060: TableModelListener {
061:
062: /** The wrapped TableModel. */
063:
064: protected TableModel model;
065:
066: /** Get the TableModel which is wrapped by this map.
067:
068: @return The TableModel
069: */
070:
071: public TableModel getModel() {
072: return model;
073: }
074:
075: /** Set the TableModel which is wrapped by this map.
076:
077: @param model The TableModel
078: */
079:
080: public void setModel(TableModel model) {
081: this .model = model;
082: model.addTableModelListener(this );
083: }
084:
085: /** Get the value at the given row and column.
086:
087: @param aRow The row
088: @param aColumn The column
089: @return The value
090: */
091:
092: public Object getValueAt(int aRow, int aColumn) {
093: return model.getValueAt(aRow, aColumn);
094: }
095:
096: /** Set the value at the given row and column.
097:
098: @param aValue The value
099: @param aRow The row
100: @param aColumn The column
101: */
102:
103: public void setValueAt(Object aValue, int aRow, int aColumn) {
104: model.setValueAt(aValue, aRow, aColumn);
105: }
106:
107: /** Get the row count.
108:
109: @return The row count
110: */
111:
112: public int getRowCount() {
113: return (model == null) ? 0 : model.getRowCount();
114: }
115:
116: /** Get the column count.
117:
118: @return The column count
119: */
120:
121: public int getColumnCount() {
122: return (model == null) ? 0 : model.getColumnCount();
123: }
124:
125: /** Get the column name for the given index.
126:
127: @param aColumn The column
128: @return The column name
129: */
130:
131: public String getColumnName(int aColumn) {
132: return model.getColumnName(aColumn);
133: }
134:
135: /** Get the column class for the given column index.
136:
137: @param aColumn The column
138: @return The column class
139: */
140:
141: public Class getColumnClass(int aColumn) {
142: return model.getColumnClass(aColumn);
143: }
144:
145: /** Return true if the cell at the given row and column is editable.
146:
147: @param row The row
148: @param column The column
149: @return True if the cell is editable
150: */
151:
152: public boolean isCellEditable(int row, int column) {
153: return model.isCellEditable(row, column);
154: }
155:
156: /** Fire an event signaling that the table has changed.
157:
158: @param e The TableModelEvent
159: */
160:
161: public void tableChanged(TableModelEvent e) {
162: fireTableChanged(e);
163: }
164:
165: }
|