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
package com.vci.client.uif.actions.client;
 
import java.util.HashMap;
import java.util.Map;
 
import com.vci.client.portal.utility.PLDefination;
import com.vci.client.portal.utility.UITools;
import com.vci.client.ui.swing.components.VCIJDialog.DialogResult;
import com.vci.client.uif.engine.client.UIHelper;
import com.vci.client.uif.engine.client.objopt.ObjectAddEditDialog;
import com.vci.client.uif.engine.common.IDataNode;
import com.vci.corba.portal.data.PortalVI;
import com.vci.mw.ClientContextVariable;
 
/**
 * 业务类型创建按钮事件
 * 接受参数为btmname、context
 * @author VCI-STGK006
 *
 */
public class AddAction extends DoseNotSelectDataHasRightCheckAction{
    /**
     * 按钮参数
     */
    private Map<String, String> paramsMap = null;
    
    /**
     * 是否需要先选择数据然后执行创建操作
     * 默认为false
     */
    boolean needSelect = false;
    
    public AddAction(){
        super();
    }
    
    @Override
    public String getKey() {
        return ADD;
    }
    
    /**
     * 判断执行Action任务之前是否需要先选择数据
     */
    public boolean beforePost() {
        if(!super.beforePost()){
            return false;
        }
        //获得按钮参数
        paramsMap = getButtonParams();
        if(paramsMap.containsKey("needselect")){
            String value = paramsMap.get("needselect");
            if(value.equalsIgnoreCase("true")){
                needSelect = true;
            }
        }
        if(needSelect){
            if(!isSelectedObject()) return false;
        }
        
        return true;
    }
    
    @Override
    public boolean doPost() {
        try{
            //获得按钮参数
            paramsMap = getButtonParams();
            //得到打开窗口的上下文信息
            String type = paramsMap.get("type");
            String context = paramsMap.get("context");
            if(type == null || type.equals("") || context == null || context.equals("")){
                UIFUtils.showMessage(ClientContextVariable.getFrame(),
                        "uifmodel.plm.uif.actions.syserror.parmerror", "");
                return false;
            }
            //当前按钮所在窗口的PLDefination
            PLDefination currentDef = getDefination();
            //打开窗口的PLDefination
            PLDefination plDef = getDefination(type, context);
            if(plDef == null){
                UIFUtils.showMessage(ClientContextVariable.getFrame(),
                        "uifmodel.plm.uif.actions.syserror.configerror.notformname", type, context);
                return false;
            }
            String formName = plDef.getTemplateId();
            if(formName == null || formName.equals("")){
                UIFUtils.showMessage(ClientContextVariable.getFrame(),
                        "uifmodel.plm.uif.actions.syserror.configerror.notformname", type, context);
                return false;
            }
            //验证是否是创建BO类型
            PortalVI sheet = UITools.getService().getPortalVIBySymbol(formName);
            if(sheet.typeFlag != 0){
                UIFUtils.showMessage(ClientContextVariable.getFrame(),
                        "uifmodel.plm.uif.actions.syserror.btnconferror");
                return false;
            }
            
            //如果是文件夹类型
            //做了一下特殊处理,如果是创建文件夹时,在SourceDataNode的ValueMap中增加了一个AddShowLinkAbs属性
            IDataNode idn = null;
            idn = getRegionPanel().getSourceData();                //默认增加新增窗口的来源对象 by zgy 2015-02
            if(currentDef.getTemplateType().equals("5") 
                    && currentDef.getLinkType().equals("") 
                    && !currentDef.getShowLinkAbs().equals("")) {
                //获得当前节点作为创建节点的父节点
                Object[] obj = getDataModel().getSelectObjects();
                if(obj == null || obj.length < 1){
                    UIFUtils.showMessage(ClientContextVariable.getFrame(),
                            "uifmodel.plm.uif.actions.folder.selectparent");
                    return false;
                }
                Map<String, String> map = new HashMap<String, String>();
                map.put("AddShowLinkAbs", currentDef.getShowLinkAbs());
                map.put("AddSeparator", currentDef.getSeparator());
                map.put("AddCreateFolder", "true");
                if (obj[0] instanceof IDataNode){
                    idn = (IDataNode) obj[0];
                }
                if(idn.getValueMap() == null) {
                    idn.setValueMap(map);
                } else {
                    idn.getValueMap().putAll(map);
                }
            }
//            if("folder".equalsIgnoreCase(plDef.getShowType())){
            //获得当前节点作为创建节点的父节点
//            Object[] obj = getDataModel().getSelectObjects();
//            if(obj == null || obj.length < 1){
//                UIFUtils.showMessage(ClientContextVariable.getFrame(),
//                        "uifmodel.plm.uif.actions.folder.selectparent");
//                return false;
//            }
//            Map<String, String> map = new HashMap<String, String>();
//            map.put("AddShowLinkAbs", currentDef.getShowLinkAbs());
//            map.put("AddSeparator", currentDef.getSeparator());
//            if (obj[0] instanceof IDataNode){
//                idn = (IDataNode) obj[0];
//            }
//            idn.setValueMap(map);
//            }
            //defination信息
            //PLDefination defination = getDefination();
            //生成创建窗口
            ObjectAddEditDialog oad = new ObjectAddEditDialog(type, context,
                    plDef, paramsMap, ObjectAddEditDialog.OperateType.ADD, null, this);
            oad.setSourceDataNode(idn);
            oad.setSelectObjects(getDataModel().getSelectObjects());
            oad.setTypeFlag(0);
            if(needSelect){
                oad.setSourceDataNode((IDataNode)getDataModel().getSelectObjects()[0]);
            }
            // add by xchao 2015.08.12 
            // 设置新打开的上下文模块的inputdata 
            // 设置值类型:sourceData、inputData、selectData
            oad = super.setTargetUILayoutPanelInputData(oad);
            // add by xchao 2015.08.12 end
            oad.init();
            oad.setSize(UIHelper.DIALOG_DEFAULT_WIDTH, UIHelper.DIALOG_DEFAULT_HEIGHT);
            oad.setLocationRelativeTo(ClientContextVariable.getFrame());
            oad.setVisible(true);
            if(oad.getDialogResult() == DialogResult.OK){
                return true;
            } else {
                return false;
            }
        } catch (Throwable e){
            UIFUtils.showErrorMessage(ClientContextVariable.getFrame(),
                    "uifmodel.plm.uif.actions.createloerror", e);
            return false;
        }
    }
}