package com.vci.client.uif.actions.client; import java.util.Map; import com.vci.client.bof.ClientBusinessObject; import com.vci.client.ui.swing.components.VCIJDialog; import com.vci.client.uif.engine.client.ChooseBusinessObjectDialog; import com.vci.client.uif.engine.client.objopt.ObjectAddEditDialog; import com.vci.client.uif.engine.common.DefaultTableNode; import com.vci.mw.ClientContextVariable; /** * 选择添加to端对象的选择事件 * 负责打开选择窗口 * 出窗口没有doAfter事件,在doPost完成后直接终止后续动作 * @author VCI-STGK006 * */ public class ChooseSelectAction extends DoseNotSelectDataAction{ /** * 按钮参数 */ private Map paramsMap = null; @Override public String getKey() { return "chooseselect"; } @Override public boolean checkHasRight(){ 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; } //用户输入属性 期中以t_oid开始的为业务对象属性,其它为link对象属性 //获得按钮所属窗口,此窗口一定要是一个弹出窗口 //并且窗口的类型一定是ObjectAddEditDialog ObjectAddEditDialog oaed = null; VCIJDialog dialog = getOwnerDialog(); if(dialog instanceof ObjectAddEditDialog){ oaed = (ObjectAddEditDialog) dialog; } if(oaed == null){ return false; } //构建选择窗口 ChooseBusinessObjectDialog cbd = new ChooseBusinessObjectDialog( ClientContextVariable.getFrame(), type, context, false, ""); if(cbd.isOk()){ //得到用户所选数据 Object[] selectedDatas = cbd.getSelectedData(); //验证选择的数据类型,在选择窗口中只允许选择业务对象数据, //但是如果按钮配置错误有可能会选择成link类型数据 DefaultTableNode dtn = (DefaultTableNode) selectedDatas[0]; if(!(dtn.getMaterObject() instanceof ClientBusinessObject)){ UIFUtils.showMessage(ClientContextVariable.getFrame(), "uifmodel.plm.uif.actions.syserror.parmerror", ""); return false; } //设置用户选择数据 oaed.setSelectedDatas(selectedDatas); oaed.getOaep().setValueToUIControl(dtn, oaed.getTypeFlag()); } return false; } catch (Exception e){ UIFUtils.showErrorMessage(ClientContextVariable.getFrame(), e); return false; } } }