package com.github.lindenb.jvarkit.util.swing;
import java.util.List;
import java.util.Vector;
import javax.swing.table.AbstractTableModel;
@SuppressWarnings("serial")
public abstract class AbstractGenericTable<T>
extends AbstractTableModel
{
protected List<T> rows=null;
public AbstractGenericTable()
{
this.rows=new Vector<T>();
}
public AbstractGenericTable(List<T> rows)
{
this.rows=new Vector<T>(rows);
}
public List<T> getRows()
{
return this.rows;
}
public void clear()
{
this.rows.clear();
fireTableDataChanged();
}
public synchronized void setRows(List<T> L)
{
this.rows=new Vector<T>(L);
fireTableDataChanged();
}
@Override
public abstract int getColumnCount();
@Override
public final int getRowCount()
{
return getRows().size();
}
public abstract Object getValueOf(T o, int columnIndex);
@Override
public final Object getValueAt(int rowIndex, int columnIndex)
{
T o=getElementAt(rowIndex);
if(o==null) return null;
return getValueOf(o, columnIndex);
}
public T getElementAt(int rowIndex)
{
return getRows().get(rowIndex);
}
@Override
public boolean isCellEditable(int rowIndex, int columnIndex)
{
return false;
}
}