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
219
220
221
package com.vci.client.uif.engine.client;
 
import java.awt.Component;
import java.util.HashMap;
import java.util.Map;
import javax.swing.JPanel;
 
import com.vci.client.bof.ClientBusinessObject;
import com.vci.client.bof.ClientLinkObject;
import com.vci.client.ui.exception.VCIException;
import com.vci.client.ui.locale.LocaleDisplay;
import com.vci.client.ui.swing.components.VCIJOptionPane;
import com.vci.client.uif.engine.common.IDataNode;
 
public abstract class UIBaseLayoutPanel extends JPanel{
 
    /**
     * 
     */
    private static final long serialVersionUID = -889811444944434818L;
 
    protected String type;
    protected String context;
    protected Map<String, String> paramters;
    protected String url;
    protected IDataNode sourceDataNode;
    protected IDataNode selectDataNode;
 
    public UIBaseLayoutPanel(String url, Map<String, String> parameters) {
        this.url = url;
        if (parameters == null) {
            parameters = new HashMap<String, String>();
        }
        this.paramters = parameters;
    }
    
    public UIBaseLayoutPanel(Map<String, String> parameters) {
        if (parameters == null) {
            parameters = new HashMap<String, String>();
        }
        this.paramters = parameters;
    }
    
    public abstract void reinitRightPanel(IDataNode bo);
    public abstract void reinitRightPanel(IDataNode bo, String context);
    public abstract void reinitRightPanel(IDataNode bo, String type, String context);
    
    public abstract boolean prep();
    
    public abstract void initMainPanel();
 
    public IDataNode getSourceDataNode() {
        return sourceDataNode;
    }
 
    public void setSourceDataNode(IDataNode sourceDataNode) {
        this.sourceDataNode = sourceDataNode;
    }
 
    public IDataNode getSelectDataNode() {
        return selectDataNode;
    }
 
    public void setSelectDataNode(IDataNode selectDataNode) {
        this.selectDataNode = selectDataNode;
    }
    
    /**
     * 根据传入的DataNode获取其上bo对象的type
     * @return
     */
    public String getBusinessObjectType(IDataNode dataNode) {
        String boType = "";
        if (dataNode.getMaterObject() instanceof ClientBusinessObject) {
            boType = ((ClientBusinessObject)dataNode.getMaterObject()).getBtmName();
        } else if (dataNode.getMaterObject() instanceof ClientLinkObject) {
            if (dataNode.isForward()) {
                boType = ((ClientLinkObject)dataNode.getMaterObject()).getToBTMName();
            } else {
                boType = ((ClientLinkObject)dataNode.getMaterObject()).getFromBTMName();
            }
        }
        
        return boType;
    }
    
    public void showMessage(Component parent, VCIException exp) {
        String message = LocaleDisplay.getI18nString(exp, "UIFModelAction", this.getLocale());
        VCIJOptionPane.showMessage(parent, message);
    }
 
    private IDataNode inputData = null;
    /**
     * 返回 打开此UILayout时,传入到此UILayout的IDataNode
     * @return 打开此UILayout时,传入到此UILayout的IDataNode
     */
    public IDataNode getInputData(){
        return this.inputData;
    }
    /**
     * 设置 打开此UILayout时,传入到此UILayout的IDataNode
     * @param inputData 设置 打开此UILayout时,传入到此UILayout的IDataNode
     */
    public void setInputData(IDataNode inputData){
        this.inputData = inputData;
    }
 
    public abstract Object getObject(String key);
    /**
     * 根据指定的key,从UILayoutPanel及其三大区域中获取sourcedata、selectdata的数据
     * <p>==================================== UILayoutPanel  =====================================</p>
     * <p>u.inputdata.                                                    选择的那条数据对象。(如图1中的产品型号列表中选择的产品)</p>
     * <p></p>
     * <p>sourcedata.                                                    从选择的那条数据对象中取出oid,经合按钮参数中定义的type,将此oid对应数据重新加载出来,作为此UILayoutPanel的sourcedata
     * <p></p>
     * <p></p>
     * <p></p>
     * <p>==================================== 导航区 =====================================</p>
     * <p>u.n.sourcedata.                                                导航区的sourcedata(实际上与 u.sourcedata是同一个对象)</p>
     * <p>u.n.selectdata.                                                导航区中最后最后点击的数据对象(树上多选时,是第一个点击的对象)</p>
     * <p>u.n.selectdata[0-N].                                            导航区中,多选时对应的数据对象(索引从0开始,小于等于 树节点选择数据的长度 – 1),如 u.n.selectdata0.xxx、 u.n.selectdata1.xxx</p>
     * <p></p>
     * <p>u.n.tabpagecode1.                                                导航区里编码为tabpagecode1的tabpage(导航区当前暂未实现加载多个面签)</p>
     * <p>u.n.tabpagecode1.sourcedata.                                    </p>
     * <p>u.n.tabpagecode1. selectdata.                                    </p>
     * <p>u.n.tabpagecode1. selectdata[0-N].                            </p>
     * <p>…</p>
     * <p>u.n.tabpagecodeN.                                                导航区里编码为tabpagecodeN的tabpage(导航区当前暂未实现加载多个面签)</p>
     * <p>u.n.tabpagecodeN.sourcedata.                                    </p>
     * <p>u.n.tabpagecodeN. selectdata.                                    </p>
     * <p>u.n.tabpagecodeN. selectdata[0-N].                            </p>
     * <p></p>
     * <p>u.n.tabpagecode1.1.                                            导航区里编码为tabpagecode1的tabpage里编号为1的defination(form\table\tree\treetable\custom)</p>
     * <p>u.n.tabpagecode1.1.sourcedata.                                </p>
     * <p>u.n.tabpagecode1.1.selectdata.                                </p>
     * <p>u.n.tabpagecode1.1.selectdata[0-N].                            </p>
     * <p>…</p>
     * <p>u.n.tabpagecode1.N.sourcedata.                                导航区里编码为tabpagecode1的tabpage里编号为N的defination(form\table\tree\treetable\custom)</p>
     * <p>u.n.tabpagecode1.N.sourcedata.                                </p>
     * <p>u.n.tabpagecode1.N.selectdata.                                </p>
     * <p>u.n.tabpagecode1.N.selectdata[0-N].                            </p>
     * <p></p>
     * <p></p>
     * <p></p>
     * <p>==================================== 控制区 =====================================</p>
     * <p>u.c.</p>
     * <p>u.c.sourcedata.                                                导航区的sourcedata(实际上与 u.sourcedata是同一个对象)</p>
     * <p>u.c.selectdata.                                                导航区中最后最后点击的数据对象(树上多选时,是第一个点击的对象)</p>
     * <p>u.c.selectdata[0-N].                                            导航区中,多选时对应的数据对象(索引从0开始,小于等于 树节点选择数据的长度 – 1),如 u.n.selectdata0.xxx、 u.n.selectdata1.xxx</p>
     * <p></p>
     * <p>u.c.tabpagecode1.                                                导航区里编码为tabpagecode1的tabpage(导航区当前暂未实现加载多个面签)</p>
     * <p>u.c.tabpagecode1.sourcedata.                                    </p>
     * <p>u.c.tabpagecode1. selectdata.                                    </p>
     * <p>u.c.tabpagecode1. selectdata[0-N].                            </p>
     * <p>…</p>
     * <p>u.c.tabpagecodeN.                                                导航区里编码为tabpagecodeN的tabpage(导航区当前暂未实现加载多个面签)</p>
     * <p>u.c.tabpagecodeN.sourcedata.                                    </p>
     * <p>u.c.tabpagecodeN. selectdata.                                    </p>
     * <p>u.c.tabpagecodeN. selectdata[0-N].                            </p>
     * <p></p>
     * <p>u.c.tabpagecode1.1.                                            导航区里编码为tabpagecode1的tabpage里编号为1的defination(form\table\tree\treetable\custom)</p>
     * <p>u.c.tabpagecode1.1.sourcedata.                                </p>
     * <p>u.c.tabpagecode1.1.selectdata.                                </p>
     * <p>u.c.tabpagecode1.1.selectdata[0-N].                            </p>
     * <p>…</p>
     * <p>u.c.tabpagecode1.N.sourcedata.                                导航区里编码为tabpagecode1的tabpage里编号为N的defination(form\table\tree\treetable\custom)</p>
     * <p>u.c.tabpagecode1.N.sourcedata.                                </p>
     * <p>u.c.tabpagecode1.N.selectdata.                                </p>  
     * <p>u.c.tabpagecode1.N.selectdata[0-N].                            </p>
     * <p></p>
     * <p></p>
     * <p></p>
     * <p>==================================== 操作区 =====================================</p>
     * <p>u.o.                                                            操作区里第一个加载的tabpage对象</p>
     * <p>u.o.sourcedata.                                                操作区的sourcedata</p>
     * <p>u.o.selectdata.                                                操作区选择的数据对象(实际上与 u.o.sourcedata是同一个对象)</p>
     * <p>u.o.selectdata[0-N].                                            操作区中,多选时对应的数据对象(索引从0开始,小于等于 树节点选择数据的长度 – 1),如 u.o.selectdata0.xxx、 u.o.selectdata1.xxx</p>
     * <p></p>
     * <p>u.o.tabpagecode1.                                                操作区里编码为tabpagecode1的tabpage</p>
     * <p>u.o.tabpagecode1.sourcedata.                                    </p>
     * <p>u.o.tabpagecodd1.selectdata.                                    </p>
     * <p>u.o.tabpagecode1.selectdata[0-N].                                </p>
     * <p>…</p>
     * <p>u.o.tabpagecodeN.sourcedata.                                    操作区里编码为tabpagecodeN的tabpage</p>
     * <p>u.o.tabpagecodeN.selectdata.                                    </p>
     * <p>u.o.tabpagecoddN.selectdata[0-N].                                </p>
     * <p></p>
     * <p>u.o.tabpagecode1.1.sourcedata.                                操作区里编码为tabpagecode1的tabpage里编号为1的defination(form\table\tree\treetable\custom)</p>
     * <p>u.o.tabpagecode1.1.selectdata.                                </p>
     * <p>u.o.tabpagecode1.1.selectdata[0- N]                            </p>
     * <p>…</p>
     * <p>u.o.tabpagecode1.N.sourcedata.                                操作区里编码为tabpagecode1的tabpage里编号为N的defination(form\table\tree\treetable\custom)</p>
     * <p>u.o.tabpagecode1.N.selectdata.                                </p>
     * <p>u.o.tabpagecode1.N.selectdata[0-N].                            </p>
     */
    public abstract String getValue(String key);
 
    public String getType() {
        return type;
    }
 
    public void setType(String type) {
        this.type = type;
    }
 
    public String getContext() {
        return context;
    }
 
    public void setContext(String context) {
        this.context = context;
    }
 
    public String getUrl() {
        return url;
    }
 
    public void setUrl(String url) {
        this.url = url;
    }
}