Path: blob/master/src/demo/share/jfc/TableExample/TableMap.java
41149 views
/*1* Copyright (c) 1997, 2011, Oracle and/or its affiliates. All rights reserved.2*3* Redistribution and use in source and binary forms, with or without4* modification, are permitted provided that the following conditions5* are met:6*7* - Redistributions of source code must retain the above copyright8* notice, this list of conditions and the following disclaimer.9*10* - Redistributions in binary form must reproduce the above copyright11* notice, this list of conditions and the following disclaimer in the12* documentation and/or other materials provided with the distribution.13*14* - Neither the name of Oracle nor the names of its15* contributors may be used to endorse or promote products derived16* from this software without specific prior written permission.17*18* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS19* IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,20* THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR21* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR22* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,23* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,24* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR25* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF26* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING27* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS28* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.29*/3031/*32* This source code is provided to illustrate the usage of a given feature33* or technique and has been deliberately simplified. Additional steps34* required for a production-quality application, such as security checks,35* input validation and proper error handling, might not be present in36* this sample code.37*/38394041/**42* In a chain of data manipulators some behaviour is common. TableMap43* provides most of this behavour and can be subclassed by filters44* that only need to override a handful of specific methods. TableMap45* implements TableModel by routing all requests to its model, and46* TableModelListener by routing all events to its listeners. Inserting47* a TableMap which has not been subclassed into a chain of table filters48* should have no effect.49*50* @author Philip Milne51*/52import javax.swing.table.*;53import javax.swing.event.TableModelListener;54import javax.swing.event.TableModelEvent;555657@SuppressWarnings("serial")58public class TableMap extends AbstractTableModel implements TableModelListener {5960protected TableModel model;6162public TableModel getModel() {63return model;64}6566public void setModel(TableModel model) {67this.model = model;68model.addTableModelListener(this);69}7071// By default, Implement TableModel by forwarding all messages72// to the model.73public Object getValueAt(int aRow, int aColumn) {74return model.getValueAt(aRow, aColumn);75}7677@Override78public void setValueAt(Object aValue, int aRow, int aColumn) {79model.setValueAt(aValue, aRow, aColumn);80}8182public int getRowCount() {83return (model == null) ? 0 : model.getRowCount();84}8586public int getColumnCount() {87return (model == null) ? 0 : model.getColumnCount();88}8990@Override91public String getColumnName(int aColumn) {92return model.getColumnName(aColumn);93}9495@Override96public Class<?> getColumnClass(int aColumn) {97return model.getColumnClass(aColumn);98}99100@Override101public boolean isCellEditable(int row, int column) {102return model.isCellEditable(row, column);103}104//105// Implementation of the TableModelListener interface,106//107108// By default forward all events to all the listeners.109public void tableChanged(TableModelEvent e) {110fireTableChanged(e);111}112}113114115