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
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
package com.vci.client.uif.engine.client;
 
import java.util.ArrayList;
import java.util.List;
 
import com.vci.client.uif.engine.common.IDataNode;
import com.vci.common.utility.ObjectUtility;
 
public abstract class AbstractDataModel implements IDataModel {
 
    private String key = ObjectUtility.getNewObjectID36();
    protected IUILayoutModel uiLayoutModel = null;
    protected Object clickObject = null;
    protected IRegionPanel regionPanel = null;
    protected IDataNode sourceData = null;
    
    @Override
    public String getKey() {
        return this.key;
    }
 
    @Override
    public void setUILayoutModel(IUILayoutModel uiLayoutModel) {
        this.uiLayoutModel = uiLayoutModel;
    }
 
    @Override
    public IUILayoutModel getUILayoutModel() {
        return this.uiLayoutModel;
    }
    
    @Override
    public void setClickObject(Object selectObjs) {
        this.clickObject = selectObjs;
    }
    
    @Override
    public Object getClickObject() {
        return this.clickObject;
    }
    
    /**
     * 将属性值发生更改后业务对象或链接对象刷新到UIPanel
     * @param clientObject
     */
    @Override
    public void refreshCache(Object clientObject){
        // default is nothing
    }
 
    /**
     * 返回此 model 所在的 regionPanel
     */
    @Override
    public IRegionPanel getRegionPanel() {
        return regionPanel;
    }
 
    /**
     * 设置此 model 所在的 regionPanel
     * @param regionPanel 此 model 所在的 regionPanel
     */
    @Override
    public void setRegionPanel(IRegionPanel regionPanel) {
        this.regionPanel = regionPanel;
    }
    
    /**
     * 返回最后选择一数据是否是根节点
     * @return
     */
    public boolean lastSelectedIsRoot(){
        return true;
    }
    /**
     * 返回选择的数据中,是否包含根节点
     * @return
     */
    public boolean selectedHasRoot(){
        return false;
    }
    /**
     * 返回 此IRegionPanel初始时、唯一恒定不变的SourceData对象
     * @return 此IRegionPanel初始时、唯一恒定不变的SourceData对象
     */
    public IDataNode getSourceData() {
        return sourceData;
    }
    
    /**
     * 设置此IRegionPanel初始时、唯一恒定不变的SourceData对象
     * @param sourceData 此IRegionPanel初始时、唯一恒定不变的SourceData对象
     */
    public void setSourceData(IDataNode sourceData) {
        this.sourceData = sourceData;
    }
    
    protected IDataModel  sourceModel;
    @Override
    public void setSourceModel(IDataModel  sourceModel){
        this.sourceModel = sourceModel;
    }
    
    @Override
    public IDataModel getSourceModel(){
        return sourceModel;
    }
    
    protected boolean regionUIIsActive = false; //默认不需要加载激活界面
    protected IDataModel innerActiveDataModel = null;
    @Override
    /**
     * @Title        :控件是否激活显示(如果激活界面,当源界面数据变化后刷新时,当前界面数据需要及时刷新,否则不用刷新)
     * @Description    :
     * @param isActive
     */
    public void setActive(boolean isActive) {
        this.regionUIIsActive = isActive;
        if (isActive) {
            //设置兄弟页签为非激活
            if (brotherModels != null && brotherModels.size() >0) {
                for (IDataModel item : brotherModels) {
                    if (item != this) {
                        item.setActive(false);
                    }
                }
            }
            if (innerActiveDataModel != null) {
                innerActiveDataModel.setActive(true);
            }
        }else if(innerDataModelsInTabPanel != null) {
            innerActiveDataModel = null;
            for (IDataModel item : innerDataModelsInTabPanel) {
                if (item.isActive()) {
                    innerActiveDataModel = item;
                    innerActiveDataModel.setActive(false);
                }
            }
        }
    }
    
    @Override
    /**
     * @Title        :控件是否激活显示(如果激活界面,当源界面数据变化后刷新时,当前界面数据需要及时刷新,否则不用刷新)
     * @Description    :
     * @return
     */
    public boolean isActive(){
        return regionUIIsActive;
    }
    
    protected boolean needRefreshUI = false; //当前控件触发刷新
    /**
     * 界面是否需要刷新
     * @Title        :isNeedRefreshUI
     * @Description    :
     * @return
     */
    public boolean isNeedRefreshUI(){
        return needRefreshUI;
    }
    /**
     * 设置界面是否需要刷新
     * @param needRefreshUI
     */
    public void setNeedRefreshUI(boolean needRefreshUI){
        this.needRefreshUI = needRefreshUI;
    }
    
    /**
     * 处理UI组件的UI刷新(先刷新UI Module,通过UI Module刷新UI组件) add by zhonggy 2015-07
     */
    public void refreshUI(IDataModel fromDataModel){
        this.sourceModel = fromDataModel;
        setNeedRefreshUI(true);
        if (regionUIIsActive && regionPanel != null) {
            setNeedRefreshUI(false);
            regionPanel.refreshUI();
        }
    }
    
    protected List<IDataModel> brotherModels = null;
    /**
     * @Title        :兄弟Models
     * @Description    :
     * @param dataModelsInTabPanel
     */
    public void setBrotherModels(List<IDataModel> models){
        this.brotherModels = new ArrayList<IDataModel>();
        for (IDataModel iDataModel : models) {
            if (iDataModel != this) {
                brotherModels.add(iDataModel);
            }
        }
    }
    
    protected List<IDataModel> innerDataModelsInTabPanel = null;
    /**
     * @Title        :设置嵌套子页签 by zhonggy 2015-07
     * @Description    :
     * @param innerDataModelsInTabPanel
     */
    public void setInnerTabModels(List<IDataModel> innerDataModelsInTabPanel){
        this.innerDataModelsInTabPanel = innerDataModelsInTabPanel;
    }
    
    @Override
    /**
     * 处理UI刷新
     */
    public void refreshUI() {
        this.setActive( true);
        if (isNeedRefreshUI() && regionPanel != null) {
            setNeedRefreshUI(false);
            regionPanel.refreshUI();
        }
    }
}