public class TableModelDelegate implements TableModel, TableModelListener
{
private TableModel delegate;
private List<TableModelListener> listeners = new ArrayList<TableModelListener>();
/**
* @param delegate
*/
public TableModelDelegate(TableModel delegate)
{
this.delegate = delegate;
delegate.addTableModelListener(this);
}
/* (non-Javadoc)
* @see javax.swing.table.TableModel#getColumnClass(int)
*/
public Class<?> getColumnClass(int columnIndex)
{
return delegate.getColumnClass(columnIndex);
}
/* (non-Javadoc)
* @see javax.swing.table.TableModel#getColumnCount()
*/
public int getColumnCount()
{
return delegate.getColumnCount();
}
/* (non-Javadoc)
* @see javax.swing.table.TableModel#getColumnName(int)
*/
public String getColumnName(int columnIndex)
{
return delegate.getColumnName(columnIndex);
}
/* (non-Javadoc)
* @see javax.swing.table.TableModel#getRowCount()
*/
public int getRowCount()
{
return delegate.getRowCount();
}
/* (non-Javadoc)
* @see javax.swing.table.TableModel#getValueAt(int, int)
*/
public Object getValueAt(int rowIndex, int columnIndex)
{
return delegate.getValueAt(rowIndex, columnIndex);
}
/* (non-Javadoc)
* @see javax.swing.table.TableModel#isCellEditable(int, int)
*/
public boolean isCellEditable(int rowIndex, int columnIndex)
{
// hier wird jetzt nicht das gekapselte OrginalModel angesprochen, sondern das Verhalten selbst imlementiert
return false;
}
/* (non-Javadoc)
* @see javax.swing.table.TableModel#setValueAt(java.lang.Object, int, int)
*/
public void setValueAt(Object aValue, int rowIndex, int columnIndex)
{
delegate.setValueAt(aValue, rowIndex, columnIndex);
}
/* (non-Javadoc)
* @see javax.swing.table.TableModel#removeTableModelListener(javax.swing.event.TableModelListener)
*/
public void removeTableModelListener(TableModelListener l)
{
listeners.remove(l);
}
/* (non-Javadoc)
* @see javax.swing.table.TableModel#addTableModelListener(javax.swing.event.TableModelListener)
*/
public void addTableModelListener(TableModelListener l)
{
listeners.add(l);
}
public void tableChanged(TableModelEvent e)
{
TableModelListener[] listenerArray = (TableModelListener[]) listeners.toArray(
new TableModelListener[listeners.size()]);
TableModelEvent clone = new TableModelEvent(this, e.getFirstRow(), e.getLastRow(), e.getColumn(),
e.getType());
for (TableModelListener listener : listenerArray)
{
listener.tableChanged(clone);
}
}
}