@@ -0,0 +1,2821 @@
+/*%0A *  Licensed to the Apache Software Foundation (ASF) under one%0A *  or more contributor license agreements.  See the NOTICE file%0A *  distributed with this work for additional information%0A *  regarding copyright ownership.  The ASF licenses this file%0A *  to you under the Apache License, Version 2.0 (the%0A *  %22License%22); you may not use this file except in compliance%0A *  with the License.  You may obtain a copy of the License at%0A *%0A *    http://www.apache.org/licenses/LICENSE-2.0%0A *%0A *  Unless required by applicable law or agreed to in writing,%0A *  software distributed under the License is distributed on an%0A *  %22AS IS%22 BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY%0A *  KIND, either express or implied.  See the License for the%0A *  specific language governing permissions and limitations%0A *  under the License.%0A */%0Apackage groovy.inspect.swingui;%0A%0Aimport javax.swing.event.TableModelEvent;%0Aimport javax.swing.event.TableModelListener;%0Aimport javax.swing.table.AbstractTableModel;%0Aimport javax.swing.table.TableModel;%0A%0A/**%0A * In a chain of data manipulators some behaviour is common. TableMap%0A * provides most of this behaviour and can be subclassed by filters%0A * that only need to override a handful of specific methods. TableMap%0A * implements TableModel by routing all requests to its model, and%0A * TableModelListener by routing all events to its listeners. Inserting%0A * a TableMap which has not been subclassed into a chain of table filters%0A * should have no effect.%0A */%0Apublic class TableMap extends AbstractTableModel implements TableModelListener %7B%0A    protected TableModel model;%0A%0A    public TableModel getModel() %7B%0A        return model;%0A    %7D%0A%0A    public void setModel(TableModel model) %7B%0A        this.model = model;%0A        model.addTableModelListener(this);%0A    %7D%0A%0A    // By default, Implement TableModel by forwarding all messages%0A    // to the model.%0A%0A    public Object getValueAt(int aRow, int aColumn) %7B%0A        return model.getValueAt(aRow, aColumn);%0A    %7D%0A%0A    public void setValueAt(Object aValue, int aRow, int aColumn) %7B%0A        model.setValueAt(aValue, aRow, aColumn);%0A    %7D%0A%0A    public int getRowCount() %7B%0A        return (model == null) ? 0 : model.getRowCount();%0A    %7D%0A%0A    public int getColumnCount() %7B%0A        return (model == null) ? 0 : model.getColumnCount();%0A    %7D%0A%0A    public String getColumnName(int aColumn) %7B%0A        return model.getColumnName(aColumn);%0A    %7D%0A%0A    public Class getColumnClass(int aColumn) %7B%0A        return model.getColumnClass(aColumn);%0A    %7D%0A%0A    public boolean isCellEditable(int row, int column) %7B%0A        return model.isCellEditable(row, column);%0A    %7D%0A//%0A// Implementation of the TableModelListener interface,%0A//%0A%0A    // By default forward all events to all the listeners.%0A    public void tableChanged(TableModelEvent e) %7B%0A        fireTableChanged(e);%0A    %7D%0A%7D%0A%0A

Split history main/java/groovy/inspect/swingui/TableMap.java to main/java/groovy/swing/table - resolve conflict and keep both files