/**
* AstrosoftTableModel.java
* Created On 2005, Oct 28, 2005 6:22:53 PM
* @author E. Rajasekar
*/
package app.astrosoft.ui.table;
import java.util.ArrayList;
import java.util.List;
import javax.swing.event.TableModelListener;
import javax.swing.table.AbstractTableModel;
import app.astrosoft.consts.AstrosoftTableColumn;
import java.util.Collections;
import app.astrosoft.ui.table.TableData;
import app.astrosoft.ui.table.TableRowData;
public class AstrosoftTableModel extends AbstractTableModel {
protected TableData<? extends TableRowData> rows;
protected ColumnMetaData columnMetaData;
private List<AstrosoftTableColumn> columns;
public AstrosoftTableModel(TableData<? extends TableRowData> rows,
ColumnMetaData columnMetaData) {
this.rows = rows;
this.columnMetaData = columnMetaData;
this.columns = columnMetaData.getColumns();
}
public AstrosoftTableModel(Table table){
this(table.getTableData(), table.getColumnMetaData());
}
public int getRowCount() {
return rows.getRowCount();
}
public String getColumnName(int col) {
return columns.get(col).toString();
}
public int getColumnCount() {
return columns.size() - columnMetaData.getHiddenColumnCount();
}
public Class<?> getColumnClass(int col) {
return columnMetaData.getColumnClass(columns.get(col));
}
public boolean isCellEditable(int row, int col) {
return false;
}
public Object getValueAt(int row, int col) {
TableRowData columnData = rows.getRow(row);
Object data = columnData.getColumnData(columns.get(col));
return data;
}
public void updateData(TableData<? extends TableRowData> rows) {
this.rows = rows;
this.fireTableDataChanged();
}
public void updateColumns(ColumnMetaData columnMetaData){
this.columnMetaData = columnMetaData;
this.columns = columnMetaData.getColumns();
this.fireTableStructureChanged();
}
public int getColumnIndex(AstrosoftTableColumn col) {
return columns.indexOf(col);
}
public AstrosoftTableColumn getColumn(int col) {
AstrosoftTableColumn column = null;
try{
column = columns.get(col);
}catch(ArrayIndexOutOfBoundsException e){}
return column;
}
public ColumnMetaData getColumnMetaData() {
return columnMetaData;
}
public <E extends TableRowData>TableData<E> getData(List <Integer> indexes){
List <E> data = new ArrayList<E>();
for(Integer i : indexes){
data.add((E)rows.getRow(i));
}
return TableDataFactory.getTableData(data);
}
}