java-org.hwo/src/org/hwo/models/FlexibleObjectTableModel.java

116 lines
2.1 KiB
Java

package org.hwo.models;
import java.util.ArrayList;
import java.util.List;
import javax.swing.table.AbstractTableModel;
public class FlexibleObjectTableModel<T> extends AbstractTableModel{
List<Column> columns;
List<T> rows;
Class p_classinfo;
public FlexibleObjectTableModel(Class tClass)
{
this.columns = new ArrayList<Column>();
this.rows = new ArrayList<T>();
this.p_classinfo = tClass;
}
public void addColumn(String fieldName)
{
this.addColumn(fieldName,true);
}
public void addColumn(String fieldName,boolean readOnly)
{
try
{
this.columns.add(new Column(this.p_classinfo,fieldName,readOnly));
fireTableStructureChanged();
} catch (NoSuchFieldException nsfex)
{
System.err.println(nsfex.toString());
nsfex.printStackTrace();
}
}
public List<T> getRows()
{
return this.rows;
}
public void setRows(List<T> rows)
{
this.rows = rows;
this.fireTableDataChanged();
}
public int indexOf(Object o)
{
return this.rows.indexOf(o);
}
public void addRow(T o)
{
this.rows.add(o);
this.fireTableDataChanged();
}
public void removeRow(T o)
{
this.rows.remove(o);
this.fireTableDataChanged();
}
public void removeRow(int row)
{
this.rows.remove(row);
this.fireTableDataChanged();
}
@Override
public int getColumnCount() {
return this.columns.size();
}
@Override
public int getRowCount() {
return this.rows.size();
}
@Override
public Object getValueAt(int arg0, int arg1) {
return this.columns.get(arg1).getValue(this.rows.get(arg0));
}
@Override
public String getColumnName(int columnIndex)
{
return this.columns.get(columnIndex).getFieldName();
}
@Override
public void setValueAt(Object aValue,
int rowIndex,
int columnIndex)
{
this.columns.get(columnIndex).setValue(this.rows.get(rowIndex), aValue);
}
@Override
public boolean isCellEditable(int rowIndex,int columnIndex)
{
return !this.columns.get(columnIndex).getReadOnly();
}
@Override
public Class getColumnClass(int columnIndex)
{
return this.columns.get(columnIndex).getColumnClass();
}
}