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
package com.vci.client.uif.actions.client;
 
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.VCIJOptionPane;
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;
 
/**
 * link创建按钮
 * 通过选择to端对象创建link
 * @author VCI-STGK006
 *
 */
public class ChooseAction extends DoseNotSelectDataHasRightCheckAction{
    
    /**
     * 创建窗口
     */
    private ObjectAddEditDialog oad;
    
    /**
     * 按钮参数
     */
    private Map<String, String> paramsMap = null;
    
    /**
     * 判断form的类型
     * 不同的form类型得到属性的key是不同的
     * 0:业务类型,1:链接类型
     */
    private int operationType = 0;
    
    /**
     * 是否需要先选择数据然后执行创建操作
     */
    boolean needSelect = false;
    
    public ChooseAction(){
        super();
    }
    
    @Override
    public String getKey() {
        return CHOOSE;
    }
    
    public boolean checkHasRight(){
        // 按LBO进行数据权限检查
        setDataRightCheckType(RightCheckConstants.RIGHT_CHECK_TYPE_FB);
        return super.checkHasRight();
    }
    
    /**
     * 判断执行Action任务之前是否需要先选择数据
     */
    public boolean beforePost() {
        
        //获得按钮参数
        paramsMap = getButtonParams();
        if(paramsMap.containsKey("needselect")){
            String value = paramsMap.get("needselect");
            if(value.equalsIgnoreCase("true")){
                needSelect = true;
            }
        }
        if(needSelect){
            if(!isSelectedObject()) return false;
            
            Object[] objs = getDataModel().getSelectObjects();
            if(objs.length > 1){
                VCIJOptionPane.showMessage(getParentComponent(), "只能选择一条数据执行创建操作!");
                return false;
            }
        }
        return true;
    }
 
    @Override
    public boolean doPost() {
        try {
            //获得按钮参数
            paramsMap = getButtonParams();
            //得到打开窗口的上下文信息
            String type = paramsMap.get("type");
            String context = paramsMap.get("context");
            String directionStr = paramsMap.get("direction");
            if(type == null || type.equals("") || context == null || context.equals("")){
                UIFUtils.showMessage(ClientContextVariable.getFrame(),
                        "uifmodel.plm.uif.actions.syserror.parmerror", "");
                return false;
            }
            /**
             * 判断是否是正向还是反向
             */
            boolean direction = true;
            if(directionStr != null && directionStr.trim().equalsIgnoreCase("false")){
                direction = false;
            }
            //获得按钮打开窗口的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;
            }
            //判断创建表单类型
            PortalVI sheet = UITools.getService().getPortalVIBySymbol(formName);
            if(sheet != null){
                this.operationType = sheet.typeFlag;
            }
            
            //打开创建但link窗口
            oad = new ObjectAddEditDialog(type, context,
                    plDef, paramsMap, ObjectAddEditDialog.OperateType.SELECT, null, this);
            //获得sourceDate,source可能来自用户选择的数据,也可能来自父窗口传递的数据
            if(needSelect){
                oad.setSourceDataNode((IDataNode)getDataModel().getSelectObjects()[0]);
            } else {
                oad.setSourceDataNode(getRegionPanel().getSourceData());
            }
            oad.setTypeFlag(operationType);
            oad.init();
            oad.setSize(UIHelper.DIALOG_DEFAULT_WIDTH, UIHelper.DIALOG_DEFAULT_HEIGHT);
            oad.setLocationRelativeTo(ClientContextVariable.getFrame());
            oad.setVisible(true);
            if(oad.getDialogResult() == DialogResult.OK){
                UIFUtils.showMessage(ClientContextVariable.getFrame(),
                        "uifmodel.plm.uif.actions.choosesuccessmsg");
                return true;
            } else {
                return false;
            }
            
        } catch (Throwable e){
            UIFUtils.showErrorMessage(ClientContextVariable.getFrame(),
                    "uifmodel.plm.uif.actions.chooseerror",e);
            return false;
        }
    }
}