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 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; } }