package gui; import java.util.Iterator; import java.util.Vector; import javax.swing.event.TableModelEvent; import javax.swing.event.TableModelListener; import javax.swing.table.AbstractTableModel; import container.ContainerFile; public class FileTableModel extends AbstractTableModel { private static final long serialVersionUID = 1L; protected String[] columnNames = { "id", "name", "description", "type" }; Vector<ContainerFile> data = new Vector<ContainerFile>(); private Vector<TableModelListener> listeners = new Vector<TableModelListener>(); public FileTableModel(Vector<ContainerFile> v){ super(); Iterator<ContainerFile> pointer = v.iterator(); while (pointer.hasNext()){ addData(pointer.next()); } } public void addData (ContainerFile obj){ // Das wird der Index des Vehikels werden int index = data.size(); data.add(obj); // Jetzt werden alle Listeners benachrichtigt // Zuerst ein Event, "neue Row an der Stelle index" herstellen TableModelEvent e = new TableModelEvent( this, index, index, TableModelEvent.ALL_COLUMNS, TableModelEvent.INSERT ); // Nun das Event verschicken for( int i = 0, n = listeners.size(); i<n; i++ ){ ((TableModelListener)listeners.get( i )).tableChanged(e); } } public int getRowCount() { return data.size(); } @Override public int getColumnCount() { return 4; } @Override public Object getValueAt(int rowIndex, int columnIndex) { switch(columnIndex) { case 0: return data.get(rowIndex).getId(); case 1: return data.get(rowIndex).getLink(); case 2: return data.get(rowIndex).getDescription(); case 3: return data.get(rowIndex).getType(); } return null; } public Object getDataAt (int rowIndex){ return (ContainerFile)data.get(rowIndex); } public String getColumnName(int column) { return columnNames[column]; } public Vector<ContainerFile> getData (){ return data; } public void editData (ContainerFile obj, int iSelectedRow){ data.remove(iSelectedRow); data.add(iSelectedRow, obj); // Zuerst ein Event, "neue Row an der Stelle index" herstellen TableModelEvent e = new TableModelEvent( this, iSelectedRow, iSelectedRow, TableModelEvent.ALL_COLUMNS, TableModelEvent.INSERT ); // Nun das Event verschicken for(int i = 0, n = listeners.size(); i<n; i++ ){ ((TableModelListener)listeners.get( i )).tableChanged(e); } } public void removeData (int iSelectedRow) { if (iSelectedRow <= data.size()) { data.remove(iSelectedRow); } } public boolean isCellEditable(int rowIndex, int columnIndex) { return false; } public void addTableModelListener(TableModelListener l) { listeners.add( l ); } public void removeTableModelListener(TableModelListener l) { listeners.remove( l ); } }