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
package com.vci.client.uif.actions.client;
 
import java.util.Map;
 
import com.vci.client.bof.ClientBusinessObject;
import com.vci.client.common.providers.ServiceProvider;
import com.vci.client.omd.btm.resource.BtmTool;
import com.vci.client.portal.utility.PLDefination;
import com.vci.client.portal.utility.UITools;
import com.vci.client.uif.engine.client.UIHelper;
import com.vci.client.uif.engine.client.objopt.ObjectAddEditDialog;
import com.vci.client.uif.engine.common.DefaultTableNode;
import com.vci.corba.portal.data.PortalVI;
import com.vci.mw.ClientContextVariable;
 
/**
 * 业务对象浏览操作
 * 接受参数信息为:
 *     btmname(业务对象类型)
 *     context
 *     oid(业务对象oid)
 * @author VCI-STGK006
 *
 */
public class BrowserAction extends AbstractBusionessOperationAction{
    /**
     * 将操作的业务对象作为一个全局变量存储
     */
    private ClientBusinessObject cbo = null;
    /**
     * 按钮参数
     */
    private Map<String, String> paramsMap = null;
    
    public BrowserAction(){
        super();
    }
    
    @Override
    public String getKey() {
        return BROWSER;
    }
    
    @Override
    public boolean checkHasRight(){
        // 按BO进行数据权限检查
        setDataRightCheckType(RightCheckConstants.RIGHT_CHECK_TYPE_B);
        return super.checkHasRight();
    }
    
    @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 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;
            }
            //验证是否是创建LO类型
            PortalVI sheet = UITools.getService().getPortalVIBySymbol(formName);
            if(sheet.typeFlag != 0){
                UIFUtils.showMessage(ClientContextVariable.getFrame(),
                        "uifmodel.plm.uif.actions.syserror.btnconferror");
                return false;
            }
            
            // 得到业务对象、设置需要显示的属性值
            cbo = getBusinessObject();
            if(cbo == null){
                return false;
            }
            //创建显示窗口
            ObjectAddEditDialog oad = new ObjectAddEditDialog(type, context,
                    plDef, paramsMap, ObjectAddEditDialog.OperateType.BROWSER, null, this);
            oad.setTypeFlag(0);
            oad.init();
            oad.setSize(UIHelper.DIALOG_DEFAULT_WIDTH, UIHelper.DIALOG_DEFAULT_HEIGHT);
            oad.setLocationRelativeTo(ClientContextVariable.getFrame());
            //设置属性值
            setEditDialogValue(oad, cbo);
            oad.setVisible(true);
            return false;
        } catch(Throwable e){
            UIFUtils.showErrorMessage(
                    ClientContextVariable.getFrame(), "uifmodel.plm.uif.actions.browserboerror", e);
            return false;
        }
    }
    
    /**
     * 设置窗口属性值
     * 需要在创建编辑窗口初始化完成后执行设置操作
     * @return
     */
    private void setEditDialogValue(ObjectAddEditDialog oad, ClientBusinessObject cbo){
        oad.getOaep().setValueToUIControl(cbo);
    }
 
    /**
     * 得到用户选择的业务对象数据
     * @return
     */
    private ClientBusinessObject getBusinessObject(){
        //获得业务对象数据
        Object[] objs = getDataModel().getSelectObjects();
        if(objs == null || objs.length < 1){
            return null;
        }
        
        //modify 2014.03.07 start
        DefaultTableNode dtn = (DefaultTableNode) objs[0];
        ClientBusinessObject cbo = null;
        try {
            cbo = (ClientBusinessObject) dtn.getMaterObject();
            if(cbo == null){
                UIFUtils.showMessage(ClientContextVariable.getFrame(), 
                "uifmodel.plm.uif.actions.notexistmsg", dtn.getValueMap().get("name"));
                return null;
            }
        } catch (Exception e){
            UIFUtils.showErrorMessage(ClientContextVariable.getFrame(), e);
            return null;
        }
        //modify 2014.03.07 end
        return cbo;
    }    
}