116 lines
2.1 KiB
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();
|
|
}
|
|
|
|
|
|
}
|