package com.vci.client.ui.swing.components.table;
import java.util.LinkedList;
import javax.swing.table.AbstractTableModel;
/**
*
*
Title:
* Description:
* Copyright: Copyright (c) 2012
* Company: VCI
* @author xchao
* @time 2012-5-10
* @version 1.0
*/
public class VCIJTableModel extends AbstractTableModel {
/**
*
*/
private static final long serialVersionUID = 5334923802148748989L;
private String[] columns = null;
private Class>[] classes = null;
private VCIJTablePanel tablePanel = null;
private LinkedList> list = new LinkedList>();
public VCIJTableModel(VCIJTablePanel tablePanel, String[] columns, Class>[] classes){
this.tablePanel = tablePanel;
this.columns = columns;
this.classes = classes;
}
public int getRowCount() {
return list.size();
}
public int getColumnCount() {
return columns.length;
}
public String getColumnName(int column) {
if(column < 0 || column >= columns.length) return "";
return columns[column];
}
public Class> getColumnClass(int columnIndex) {
return classes[columnIndex];
}
public Object getValueAt(int rowIndex, int columnIndex) {
if(rowIndex < 0 || rowIndex >= list.size()) return "";
VCIJTableNode rowNode = list.get(rowIndex);
String name = getColumnName(columnIndex);
if(name == null || "".equals(name)) return "";
Object value = rowNode.getPropertyValue(name);
if(value == null || "".equals(value)) return "";
return value;
}
public void setValueAt(Object value, int rowIndex, int columnIndex) {
VCIJTableNode rowNode = list.get(rowIndex);
String name = getColumnName(columnIndex);
rowNode.setPropertyValue(name, value);
}
public boolean isCellEditable(int rowIndex, int columnIndex) {
boolean res = false;
if(tablePanel.isCellEditable() &&
tablePanel.getEdiableColumnList().contains(columnIndex)){
res = true;
}
return res;
}
public void addRow(VCIJTableNode t){
list.add(t);
}
public void clear(){
list.clear();
}
public String[] getColumns() {
return columns;
}
public void setColumns(String[] columns) {
this.columns = columns;
}
public Class>[] getClasses() {
return classes;
}
public void setClasses(Class>[] classes) {
this.classes = classes;
}
public LinkedList> getList() {
return list;
}
public void setList(LinkedList> list) {
this.list = list;
}
}