wangting
2024-09-27 a3e87f78ee262ca9bb7d9b0c997639d5f3295890
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
package com.vci.client.ui.swing.components.table;
 
import java.util.LinkedList;
 
import javax.swing.table.AbstractTableModel;
 
/**
 * 
 * <p>Title: </p>
 * <p>Description: </p>
 * <p>Copyright: Copyright (c) 2012</p>
 * <p>Company: VCI</p>
 * @author xchao
 * @time 2012-5-10
 * @version 1.0
 */
public class VCIJTableModel<T> extends AbstractTableModel {
 
    /**
     * 
     */
    private static final long serialVersionUID = 5334923802148748989L;
 
    private String[] columns = null;
    private Class<?>[] classes = null;
    private VCIJTablePanel<T> tablePanel = null;
    private LinkedList<VCIJTableNode<T>> list = new LinkedList<VCIJTableNode<T>>();
 
    public VCIJTableModel(VCIJTablePanel<T> 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<T> 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<T> 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> 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<VCIJTableNode<T>> getList() {
        return list;
    }
 
    public void setList(LinkedList<VCIJTableNode<T>> list) {
        this.list = list;
    }
}