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
109
110
111
112
113
114
115
116
117
118
package com.vci.client.ui.swing.components.table;
 
import java.awt.Color;
import java.awt.Component;
import java.util.HashMap;
import java.util.Map;
 
import javax.swing.JTable;
import javax.swing.table.DefaultTableCellRenderer;
 
import com.vci.client.ui.swing.VCISwingUtil;
import com.vci.client.ui.swing.components.VCIJButton;
import com.vci.client.ui.swing.components.VCIJCheckBox;
 
/**
 * 
 * <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 AlternatelyRowColorTableCellRender<T>  extends DefaultTableCellRenderer {
 
    /**
     * 
     */
    private static final long serialVersionUID = 3407119458966532353L;
    protected Map<Integer, Boolean> clickedRowIndexMap = new HashMap<Integer, Boolean>();
    protected Color colorEven = VCISwingUtil.JTABLE_ROW_BACKGROUND_COLOR_EVEN;
    protected Color colorOdd = VCISwingUtil.JTABLE_ROW_BACKGROUND_COLOR_ODD;
    protected Color colorSelected = VCISwingUtil.JTABLE_ROW_BACKGROUND_COLOR_CHECKED;
    
    protected VCIJTablePanel<T> tablePanel = null;
    public AlternatelyRowColorTableCellRender(VCIJTablePanel<T> tablePanel){
        this.tablePanel = tablePanel;
    }
    public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {
        Component c = super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);
        if(tablePanel.getEdiableColumnList().contains(column)){
            if(tablePanel.getDataProvider().getClasses()[column] == Boolean.class){
                VCIJCheckBox cbx = new VCIJCheckBox();
                if(value instanceof Boolean){
                    cbx.setSelected((Boolean)value);
                } else if(value instanceof String){
                    cbx.setSelected(Boolean.valueOf(value.toString()));
                }
                c = cbx;
            }
//            return c;
        }
        Color color = colorSelected;
        color = getDefaultBackgroundColor(row);
        if(getTableCheckBoxManager() != null){
            if(getTableCheckBoxManager().getSelectedIndexsSet().contains(row)){
                color = VCISwingUtil.JTABLE_ROW_BACKGROUND_COLOR_CHECKED;
            }
        }
        c.setBackground(color);
        c.setForeground(Color.black);
        return c;
    }
 
    public Color getDefaultBackgroundColor(int rowIndex){
        Color color = (rowIndex % 2) == 0 ? VCISwingUtil.JTABLE_ROW_BACKGROUND_COLOR_EVEN : VCISwingUtil.JTABLE_ROW_BACKGROUND_COLOR_ODD;
        return color;
    }
    
    public Color getColorEven() {
        return colorEven;
    }
 
    public void setColorEven(Color colorEven) {
        this.colorEven = colorEven;
    }
 
    public Color getColorOdd() {
        return colorOdd;
    }
 
    public void setColorOdd(Color colorOdd) {
        this.colorOdd = colorOdd;
    }
 
    public Color getColorSelected() {
        return colorSelected;
    }
 
    public void setColorSelected(Color colorSelected) {
        this.colorSelected = colorSelected;
    }
 
    public Map<Integer, Boolean> getClickedRowIndexMap() {
        return clickedRowIndexMap;
    }
 
    public void setClickedRowIndexMap(Map<Integer, Boolean> clickedRowIndexMap) {
        this.clickedRowIndexMap = clickedRowIndexMap;
    }
    
    private IVCIJTableBaseCheckManager tableCheckBoxManager = null;
    public IVCIJTableBaseCheckManager getTableCheckBoxManager() {
        return tableCheckBoxManager;
    }
 
    public void setTableCheckBoxManager(
            IVCIJTableBaseCheckManager tableCheckBoxManager) {
        this.tableCheckBoxManager = tableCheckBoxManager;
    }
    public VCIJTablePanel<T> getTablePanel() {
        return tablePanel;
    }
    public void setTablePanel(VCIJTablePanel<T> tablePanel) {
        this.tablePanel = tablePanel;
    }
}