001 package groovy.inspect.swingui;
002
003 /*
004 * Copyright (c) 2003 Sun Microsystems, Inc. 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 * -Redistributions of source code must retain the above copyright
011 * notice, this list of conditions and the following disclaimer.
012 *
013 * -Redistribution in binary form must reproduct the above copyright
014 * notice, this list of conditions and the following disclaimer in
015 * the documentation and/or other materials provided with the distribution.
016 *
017 * Neither the name of Sun Microsystems, Inc. or the names of contributors
018 * may be used to endorse or promote products derived from this software
019 * without specific prior written permission.
020 *
021 * This software is provided "AS IS," without a warranty of any kind. ALL
022 * EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES, INCLUDING
023 * ANY IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE
024 * OR NON-INFRINGEMENT, ARE HEREBY EXCLUDED. SUN AND ITS LICENSORS SHALL NOT
025 * BE LIABLE FOR ANY DAMAGES OR LIABILITIES SUFFERED BY LICENSEE AS A RESULT
026 * OF OR RELATING TO USE, MODIFICATION OR DISTRIBUTION OF THE SOFTWARE OR ITS
027 * DERIVATIVES. IN NO EVENT WILL SUN OR ITS LICENSORS BE LIABLE FOR ANY LOST
028 * REVENUE, PROFIT OR DATA, OR FOR DIRECT, INDIRECT, SPECIAL, CONSEQUENTIAL,
029 * INCIDENTAL OR PUNITIVE DAMAGES, HOWEVER CAUSED AND REGARDLESS OF THE THEORY
030 * OF LIABILITY, ARISING OUT OF THE USE OF OR INABILITY TO USE SOFTWARE, EVEN
031 * IF SUN HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
032 *
033 * You acknowledge that Software is not designed, licensed or intended for
034 * use in the design, construction, operation or maintenance of any nuclear
035 * facility.
036 */
037
038 /*
039 * @(#)TableMap.java 1.11 03/01/23
040 */
041
042 /**
043 * In a chain of data manipulators some behaviour is common. TableMap
044 * provides most of this behavour and can be subclassed by filters
045 * that only need to override a handful of specific methods. TableMap
046 * implements TableModel by routing all requests to its model, and
047 * TableModelListener by routing all events to its listeners. Inserting
048 * a TableMap which has not been subclassed into a chain of table filters
049 * should have no effect.
050 *
051 * @version 1.11 01/23/03
052 * @author Philip Milne */
053
054 import javax.swing.table.*;
055 import javax.swing.event.TableModelListener;
056 import javax.swing.event.TableModelEvent;
057
058 public class TableMap extends AbstractTableModel implements TableModelListener
059 {
060 protected TableModel model;
061
062 public TableModel getModel() {
063 return model;
064 }
065
066 public void setModel(TableModel model) {
067 this.model = model;
068 model.addTableModelListener(this);
069 }
070
071 // By default, Implement TableModel by forwarding all messages
072 // to the model.
073
074 public Object getValueAt(int aRow, int aColumn) {
075 return model.getValueAt(aRow, aColumn);
076 }
077
078 public void setValueAt(Object aValue, int aRow, int aColumn) {
079 model.setValueAt(aValue, aRow, aColumn);
080 }
081
082 public int getRowCount() {
083 return (model == null) ? 0 : model.getRowCount();
084 }
085
086 public int getColumnCount() {
087 return (model == null) ? 0 : model.getColumnCount();
088 }
089
090 public String getColumnName(int aColumn) {
091 return model.getColumnName(aColumn);
092 }
093
094 public Class getColumnClass(int aColumn) {
095 return model.getColumnClass(aColumn);
096 }
097
098 public boolean isCellEditable(int row, int column) {
099 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