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
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
package com.vci.client.uif.engine.client.tableArea;
 
import java.util.List;
 
import com.vci.client.bof.ClientBusinessObject;
import com.vci.client.uif.engine.client.AbstractDataModel;
import com.vci.client.uif.engine.client.IDataModel;
import com.vci.client.uif.engine.client.tree.TreePanelModel;
import com.vci.client.uif.engine.common.IDataNode;
 
public class TablePanelDataModel extends AbstractDataModel {
 
    private TablePanel tablePanel = null;
    private Object[] selectObjs = null;
    
    public TablePanelDataModel(TablePanel tablePanel){
        this.tablePanel = tablePanel;
        setRegionPanel(tablePanel);
    }
    
    @Override
    public int[] getSelectObjectRowIndexs() {
        return tablePanel.getDataTablePanel().getSelectedRowIndexs();
    }
 
    @Override
    public Object[] getSelectObjects() {
        // TODO 频率调用此接口时,可能会存在性能问题,存在优化的空间
        List<IDataNode> list = (List<IDataNode>)tablePanel.getDataTablePanel().getSelectedRowObjectsList();
        int size = list.size();
        if(size <= 0) return null;
        
        Object[] res = new Object[size];
        for (int i = 0; i < res.length; i++) {
            res[i] = list.get(i);
        }
        selectObjs = res;
        return res;
    }
 
    @Override
    public Object getRootObject() {
        return tablePanel.getSourceData();
    }
    
    @Override
    public synchronized void refresh(IDataModel fromDataModel) {
        //super.refreshUI(fromDataModel); by zhonggy 2015-07
        if (fromDataModel instanceof TreePanelModel) {
            TreePanelModel treePanelModel = (TreePanelModel)fromDataModel;
            Object treeSelectObj = treePanelModel.getClickObject();
            if (treeSelectObj == null) {
                return;
            }
            // 当是被动刷新时,重新设置pageIndex为1
            tablePanel.getDataTablePanel().setPageIndex(1);
            if(treeSelectObj instanceof IDataNode){
                // 设置RegionPanel的sourceData 为Tree
                IDataNode sourceData = (IDataNode)treeSelectObj;
                this.setSourceData(sourceData);
            }
        } else if (fromDataModel instanceof TablePanelDataModel) {
            TablePanelDataModel tablePanelDataModel = (TablePanelDataModel)fromDataModel;
            Object tableSelectObj = tablePanelDataModel.getClickObject();
            // add by xchao 2014.04.16 begin
            // 刷新时,始终应该使用 初始的 sourceData
            tableSelectObj = tablePanel.getSourceData();
            // add by xchao 2014.04.16 end
            if (tableSelectObj == null) {
                tableSelectObj = tablePanelDataModel.getClickObject();
                if(tableSelectObj == null){
 
                    tablePanel.getDataTablePanel().refreshTableData();
                    return;
                }
            }
            // update by xchao 2014.03.26 begin
            // 修复来自Dialog底部的button执行完成后
            // 刷新 调用弹出此窗口的button所在的table的数据时,刷新失败的BUG
            if(tableSelectObj instanceof IDataNode){
                // 设置RegionPanel的sourceData 为Tree
                IDataNode sourceData = (IDataNode)tableSelectObj;
                this.setSourceData(sourceData);
            }
            // update by xchao 2014.03.26 end
        }
        tablePanel.getDataTablePanel().refreshTableData();            //改造后的UI刷新机制不能通过Module直接刷新UI? by zhonggy 2015-07
        this.getUILayoutModel().notifyRefresh(this);
    }
 
    /**
     * 处理UI组件的UI刷新(先刷新UI Module,通过UI Module刷新UI组件) add by zhonggy 2015-07
     */
    public void refreshUI(IDataModel fromDataModel) {
        this.sourceModel = fromDataModel;
        needRefreshUI = true;
        if (regionUIIsActive && regionPanel != null) {
            refreshUI();
        }
    }
    
    @Override
    /**
     * 处理UI刷新
     */
    public void refreshUI() {
        this.setActive( true);
        if (needRefreshUI && regionPanel != null) {
            needRefreshUI = false;
            //regionPanel.refreshUI();
            if (sourceModel instanceof TreePanelModel) {
                TreePanelModel treePanelModel = (TreePanelModel) sourceModel;
                Object treeSelectObj = treePanelModel.getClickObject();
                if (treeSelectObj == null) {
                    return;
                }
                //tablePanel.getDataTablePanel().setPageIndex(1);
                if (treeSelectObj instanceof IDataNode) {
                    IDataNode sourceData = (IDataNode) treeSelectObj;
                    this.setSourceData(sourceData);
                }
            } else if (sourceModel instanceof TablePanelDataModel) {
                TablePanelDataModel tablePanelDataModel = (TablePanelDataModel) sourceModel;
                Object tableSelectObj = tablePanelDataModel.getClickObject();
                //tableSelectObj = tablePanel.getSourceData(); //??? by zhonggy 
                if (tableSelectObj == null) {
                    //tableSelectObj = tablePanelDataModel.getClickObject();
                    /*if (tableSelectObj == null) {
                        tablePanel.getDataTablePanel().refreshTableData();
                        return;
                    }*/
                    return;
                }
                if (tableSelectObj instanceof IDataNode) {
                    IDataNode sourceData = (IDataNode) tableSelectObj;
                    this.setSourceData(sourceData);
                }
            }
            if (regionUIIsActive && regionPanel != null) {
                /*needRefreshUI = false;*/
                //regionPanel.refreshUI();
                tablePanel.getDataTablePanel().refreshTableData();    
            }
        }
    }
}