package com.vci.client.tool.dialog; import java.awt.BorderLayout; import java.awt.Dialog; import java.awt.FlowLayout; import java.awt.Frame; import java.awt.GridBagConstraints; import java.awt.GridBagLayout; import java.awt.Insets; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.util.HashMap; import java.util.LinkedList; import java.util.List; import java.util.Map; import javax.swing.DefaultCellEditor; import javax.swing.DefaultComboBoxModel; import javax.swing.table.TableColumn; import javax.swing.table.TableColumnModel; import com.vci.corba.portal.data.PLCommandParameter; import com.vci.corba.portal.data.PLPageDefination; import com.vci.corba.portal.data.PLUILayout; import com.vci.corba.portal.data.PLTabButton; import com.vci.corba.portal.data.PLTabPage; import com.vci.corba.portal.data.PortalVI; import com.vci.corba.omd.atm.AttribItem; import com.vci.corba.omd.qtm.QTInfo; import com.vci.mw.ClientContextVariable; import com.vci.client.common.providers.ServiceProvider; import com.vci.client.omd.btm.wrapper.BtmItemWrapper; import com.vci.client.omd.linktype.LinkTypeWrapper; import com.vci.client.oq.QTClient; import com.vci.client.oq.QTDClient; import com.vci.client.portal.utility.PLDefination; import com.vci.client.portal.utility.PRM; import com.vci.client.portal.utility.PRMItem; import com.vci.client.portal.utility.UITools; import com.vci.client.tool.enums.ChangeableProperty; import com.vci.client.tool.panel.BtmItemAttrTablePanel; import com.vci.client.tool.panel.ControlType; import com.vci.client.tool.panel.PRMItemDetailInfoPanel; import com.vci.client.tool.wrapper.AttribItemWrapperEx; import com.vci.client.ui.process.QANProcessBar; import com.vci.client.ui.process.QANProcessBarFrame; import com.vci.client.ui.swing.VCISwingUtil; import com.vci.client.ui.swing.components.VCIJButton; import com.vci.client.ui.swing.components.VCIJCheckBox; import com.vci.client.ui.swing.components.VCIJComboBox; import com.vci.client.ui.swing.components.VCIJDialog; import com.vci.client.ui.swing.components.VCIJLabel; import com.vci.client.ui.swing.components.VCIJOptionPane; import com.vci.client.ui.swing.components.VCIJPanel; import com.vci.client.ui.swing.components.VCIJTextField; import com.vci.client.ui.swing.components.table.AbstractVCIJTableDataProvider; import com.vci.client.ui.swing.components.table.VCIJTableNode; import com.vci.client.ui.swing.components.table.VCIJTablePanel; import com.vci.client.uif.actions.client.UIFUtils; import com.vci.client.uif.engine.client.UIHelper; import com.vci.common.utility.ObjectUtility; import com.vci.corba.common.VCIError; public class UIContexBuilderWrapperDialog extends VCIJDialog implements ActionListener{ /** * */ private static final long serialVersionUID = -185227280921216037L; private VCIJButton btnOk = VCISwingUtil.createVCIJButton("ok", "确定", "", "accept.png", this); private VCIJButton btnCancel = VCISwingUtil.createVCIJButton("cancel", "取消", "取消", "cancel.png", this); private BtmItemAttrTablePanel btmItemAttrItemTablePanel = null; private BtmItemWrapper btmItemWrapper = null; private List attribItemWrapper = null; public UIContexBuilderWrapperDialog(Frame frame){ super(frame, true); } public UIContexBuilderWrapperDialog(Dialog dialog){ super(dialog, true); } public void buildDialog(){ init(); } private void init(){ initUI(); initActionMap(); initSizeAndLocation(); } private void initUI(){ setTitle("上下文/表单生成器"); setLayout(new BorderLayout()); add(getNorthPanel(), BorderLayout.NORTH); add(getWestPanel(), BorderLayout.WEST); add(getCenterPanl(), BorderLayout.CENTER); add(getEastPanel(), BorderLayout.EAST); add(getSouthPanel(), BorderLayout.SOUTH); } final String ADD_FORM_CONTEXT_SUFFIX = "_AddFormContext"; final String EDIT_FORM_CONTEX_SUFFIX = "_EditFormContext"; final String TABLE_FORM_LIST_CONTEXT_SUFFIX = "_MangementContext"; final String ADD_FORM_SUFFIX = "_AddForm"; final String EDIT_FORM_SUFFIX = "_EditForm"; final String TABLE_FORM_SUFFIX = "_TableForm"; final String TABLE_FORM_LIST_SUFFIX = "_TableList"; private VCIJCheckBox chkBoxAddFormCtx = new VCIJCheckBox(ADD_FORM_CONTEXT_SUFFIX, true); private VCIJCheckBox chkBoxEditFormCtx = new VCIJCheckBox(EDIT_FORM_CONTEX_SUFFIX, true); private VCIJCheckBox chkBoxTableListCtx = new VCIJCheckBox(TABLE_FORM_LIST_CONTEXT_SUFFIX, true); private VCIJCheckBox chkBoxAddForm = new VCIJCheckBox(ADD_FORM_SUFFIX, true); private VCIJCheckBox chkBoxEditForm = new VCIJCheckBox(EDIT_FORM_SUFFIX, true); private VCIJCheckBox chkBoxTableForm = new VCIJCheckBox(TABLE_FORM_SUFFIX, true); private VCIJCheckBox chkBoxTableList = new VCIJCheckBox(TABLE_FORM_LIST_SUFFIX, true); private VCIJTextField txtPrefix = new VCIJTextField(true); private VCIJComboBox comBoxEditFormQTNames = new VCIJComboBox(); private VCIJComboBox comBoxTableFormQTNames = new VCIJComboBox(); private VCIJPanel getNorthPanel(){ VCIJPanel pal = new VCIJPanel(new GridBagLayout()); int padxy = 1; int anchor = GridBagConstraints.NORTHWEST; int fill = GridBagConstraints.BOTH; int gridx = 0; int gridy = 0; pal.add(new VCIJLabel("是否生成默认上下文:"), getGBC(gridx++, gridy, 1, 1, 0, 0, anchor, fill, padxy)); VCIJPanel rbtnPal = new VCIJPanel(new FlowLayout(FlowLayout.LEADING)); rbtnPal.add(chkBoxAddFormCtx);rbtnPal.add(chkBoxEditFormCtx);rbtnPal.add(chkBoxTableListCtx); ActionListener al = new ActionListener() { @Override public void actionPerformed(ActionEvent e) { checkBoxControl(e.getActionCommand()); } }; chkBoxAddFormCtx.addActionListener(al); chkBoxEditFormCtx.addActionListener(al); chkBoxTableListCtx.addActionListener(al); checkBoxControl(""); pal.add(rbtnPal , getGBC(gridx++, gridy, 2, 1, 1.0, 0, anchor, fill, padxy)); gridx = 0; gridy += 1; pal.add(new VCIJLabel("生成表单:"), getGBC(gridx++, gridy, 1, 1, 0, 0, anchor, fill, padxy)); VCIJPanel chkBoxPal = new VCIJPanel(new FlowLayout(FlowLayout.LEADING)); chkBoxPal.add(chkBoxAddForm);chkBoxPal.add(chkBoxEditForm); chkBoxPal.add(chkBoxTableForm);chkBoxPal.add(chkBoxTableList); pal.add(chkBoxPal , getGBC(gridx++, gridy, 2, 1, 1.0, 0, anchor, fill, padxy)); gridx = 0; gridy += 1; pal.add(new VCIJLabel("上下文&表单前缀:"), getGBC(gridx++, gridy, 1, 1, 0, 0, anchor, fill, padxy)); pal.add(txtPrefix , getGBC(gridx++, gridy, 1, 1, 1.0, 0, anchor, fill, padxy)); pal.add(new VCIJLabel("_Add/EditFormContext&_Add/EditForm"), getGBC(gridx++, gridy, 1, 1, 0, 0, anchor, fill, padxy)); gridx = 0; gridy += 1; pal.add(new VCIJLabel("EditForm使用的查询模板名称:"), getGBC(gridx++, gridy, 1, 1, 0, 0, anchor, fill, padxy)); pal.add(comBoxEditFormQTNames , getGBC(gridx++, gridy, 2, 1, 1.0, 0, anchor, fill, padxy)); gridx = 0; gridy += 1; pal.add(new VCIJLabel("TableList使用的查询模板名称:"), getGBC(gridx++, gridy, 1, 1, 0, 0, anchor, fill, padxy)); pal.add(comBoxTableFormQTNames , getGBC(gridx++, gridy, 2, 1, 1.0, 0, anchor, fill, padxy)); setQTNameComboBoxData(); return pal; } private void checkBoxControl(String actionCommand){ chkBoxAddForm.setSelected(chkBoxAddFormCtx.isSelected()); chkBoxAddForm.setEnabled(!chkBoxAddFormCtx.isSelected()); chkBoxEditForm.setSelected(chkBoxEditFormCtx.isSelected()); chkBoxEditForm.setEnabled(!chkBoxEditFormCtx.isSelected()); chkBoxTableForm.setSelected(chkBoxTableListCtx.isSelected()); chkBoxTableForm.setEnabled(!chkBoxTableListCtx.isSelected()); chkBoxTableList.setSelected(chkBoxTableListCtx.isSelected()); chkBoxTableList.setEnabled(!chkBoxTableListCtx.isSelected()); } class QTWrapperEx { private QTInfo qTWrapper = null; public QTWrapperEx(QTInfo qtWrapper){ this.qTWrapper = qtWrapper; } public QTInfo getQTWrapper() { return qTWrapper; } public void setQTWrapper(QTInfo qtWrapper) { this.qTWrapper = qtWrapper; } @Override public String toString(){ return getQTWrapper().qtName; } } private void setQTNameComboBoxData(){ DefaultComboBoxModel model = new DefaultComboBoxModel(); DefaultComboBoxModel model2 = new DefaultComboBoxModel(); try { String btmName = getBtmName(); QTInfo[] qts = ServiceProvider.getOMDService().getQTDService().getObjTypeQTs(btmName); for(QTInfo qt : qts){ model.addElement(new QTWrapperEx(qt)); model2.addElement(new QTWrapperEx(qt)); } } catch (VCIError e) { e.printStackTrace(); } comBoxEditFormQTNames.setModel(model); comBoxTableFormQTNames.setModel(model2); } private String getQTName(VCIJComboBox cbx){ String res = ""; Object obj = cbx.getSelectedItem(); if(obj != null && obj instanceof QTWrapperEx){ res = ((QTWrapperEx)obj).getQTWrapper().qtName; } return res; } private VCIJPanel getWestPanel(){ VCIJPanel pal = new VCIJPanel(); return pal; } class DataProvider extends AbstractVCIJTableDataProvider{ int index = 1; @Override public AttribItemWrapperEx[] getDatas(int pageIndex, int pageSize) { index = 1; return attribItemWrapper.toArray(new AttribItemWrapperEx[]{}); } @Override public VCIJTableNode getNewRowNode(AttribItemWrapperEx obj) { VCIJTableNode node = new VCIJTableNode(obj); AttribItem ai = obj.getAttribItem(); node.setPropertyValue(ChangeableProperty.FIELD, ai.name); node.setPropertyValue(ChangeableProperty.NAME, ai.label); node.setPropertyValue(ChangeableProperty.READONLY, "0"); node.setPropertyValue(ChangeableProperty.REQUIRED, "0"); node.setPropertyValue(ChangeableProperty.SHOWTYPE, new ControlType("text", "单行文本框")); node.setPropertyValue(ChangeableProperty.DEFVAL, ""); node.setPropertyValue(ChangeableProperty.POSTYPE, "1"); node.setPropertyValue(ChangeableProperty.FIELD_EXPRESS, ""); node.setPropertyValue(ChangeableProperty.READONLY_CONDITION, ""); node.setPropertyValue(ChangeableProperty.CONTROL_FIELD, ""); node.setPropertyValue(ChangeableProperty.CONTROL_FIELD_CONDITION, ""); node.setPropertyValue(ChangeableProperty.SCRIPT_VALIDATE, ""); node.setPropertyValue(ChangeableProperty.TIPTEXT, ""); node.setPropertyValue(ChangeableProperty.CASCAE_FIELD, ""); node.setPropertyValue(ChangeableProperty.CUSTOM_CLASS, ""); // node.setPropertyValue(ChangeableProperty.HTTP_PATH, ""); // node.setPropertyValue(ChangeableProperty.HTTP_FIELD, ""); node.setPropertyValue(ChangeableProperty.REFERENCE_FIRST, ""); node.setPropertyValue(ChangeableProperty.REFERENCE_SECOND, ""); node.setPropertyValue(ChangeableProperty.REFENENCE_FIELD, ""); node.setPropertyValue(ChangeableProperty.OTHER, ""); return node; } @Override public String[] getSpecialColumns() { return new String[]{ ChangeableProperty.FIELD, ChangeableProperty.NAME, ChangeableProperty.READONLY, ChangeableProperty.REQUIRED, ChangeableProperty.SHOWTYPE, ChangeableProperty.DEFVAL, ChangeableProperty.POSTYPE, ChangeableProperty.FIELD_EXPRESS, ChangeableProperty.READONLY_CONDITION, ChangeableProperty.CONTROL_FIELD, ChangeableProperty.CONTROL_FIELD_CONDITION, ChangeableProperty.SCRIPT_VALIDATE, ChangeableProperty.TIPTEXT, ChangeableProperty.CASCAE_FIELD, ChangeableProperty.CUSTOM_CLASS, // ChangeableProperty.HTTP_PATH, // ChangeableProperty.HTTP_FIELD, ChangeableProperty.REFERENCE_FIRST, ChangeableProperty.REFERENCE_SECOND, ChangeableProperty.REFENENCE_FIELD, ChangeableProperty.OTHER }; } @Override public int getTotal() { return 0; } } private VCIJTablePanel tablePanel = null; private VCIJPanel getCenterPanl(){ VCIJPanel pal = new VCIJPanel(new BorderLayout()); tablePanel = new VCIJTablePanel(new DataProvider()); List editabColumnList = new LinkedList(); for(int i = 2; i <= tablePanel.getDataProvider().getSpecialColumns().length;i++){ editabColumnList.add(i); } tablePanel.setEdiableColumnList(editabColumnList); tablePanel.setShowPaging(false); tablePanel.setShowColumnSetting(false); tablePanel.setCellEditable(true); HashMap map = new HashMap(); map.put(4, 60);map.put(5, 60);map.put(6, 100);map.put(7, 60); tablePanel.setColumnWidthMaps(map); tablePanel.setColumnDefaultWidth(150); tablePanel.buildTablePanel(); TableColumnModel tcm = tablePanel.getTable().getColumnModel(); TableColumn tc = tcm.getColumn(6); tc.setCellEditor(new DefaultCellEditor(PRMItemDetailInfoPanel.getControlTypeComboBox())); tablePanel.refreshTableData(); pal.add(tablePanel); return pal; } private VCIJPanel getEastPanel(){ VCIJPanel pal = new VCIJPanel(); return pal; } private VCIJPanel getSouthPanel(){ VCIJPanel pal = new VCIJPanel(); pal.add(btnOk); pal.add(btnCancel); return pal; } private void initSizeAndLocation(){ setSize(UIHelper.DIALOG_DEFAULT_WIDTH, UIHelper.DIALOG_DEFAULT_HEIGHT); setLocationRelativeTo(getOwner()); } private GridBagConstraints getGBC(int gridx, int gridy, int gridwidth, int gridheight, double weightx, double weighty, int anchor, int fill, int padxy) { return new GridBagConstraints(gridx, gridy, gridwidth, gridheight, weightx, weighty, anchor, fill, new Insets(padxy, padxy, padxy, padxy), padxy, padxy); } private Map actionMap = new HashMap(); private void initActionMap(){ actionMap.put(btnOk.getActionCommand(), new Runnable() { @Override public void run() { ok(); } }); actionMap.put(btnCancel.getActionCommand(), new Runnable() { @Override public void run() { cancel(); } }); } @Override public void actionPerformed(ActionEvent e) { String actionCommand = e.getActionCommand(); if(actionMap.containsKey(actionCommand)){ actionMap.get(actionCommand).run(); } } private boolean isSelectedAnyForm(){ boolean res = false; res = (chkBoxAddForm.isSelected() || chkBoxEditForm.isSelected() || chkBoxTableForm.isSelected() || chkBoxTableList.isSelected()); return res; } private boolean isCanGenerate(){ boolean res = false; Map viMap = getAllPortalVIMap(); StringBuffer sb = new StringBuffer(); sb = checkVINameIsExist(chkBoxAddForm, ADD_FORM_SUFFIX, viMap, sb); sb = checkVINameIsExist(chkBoxEditForm, EDIT_FORM_SUFFIX, viMap, sb); sb = checkVINameIsExist(chkBoxTableForm, TABLE_FORM_SUFFIX, viMap, sb); sb = checkVINameIsExist(chkBoxTableList, TABLE_FORM_LIST_SUFFIX, viMap, sb); String message = sb.toString(); res = (message.length() <= 0); if(!res){ VCIJOptionPane.showMessage(this, message); } return res; } private StringBuffer checkVINameIsExist(VCIJCheckBox cbx, String viNameSuffix, Map map, StringBuffer sb){ String viname = getVIName(viNameSuffix); if(cbx.isSelected() && map.containsKey(viname)){ sb.append("\n 将生成的表单名称‘" + viname + "’在当前业务类型下已经存在!"); } return sb; } private Map getAllPortalVIMap(){ Map map = new HashMap(); try{ PortalVI[] vis = UITools.getService().getPortalVIArrayByTypeName(getBtmName()); for(PortalVI vi : vis){ map.put(vi.viName, vi); } }catch(Throwable e){ e.printStackTrace(); } return map; } private void ok() { if(!isSelectedAnyForm()){ VCIJOptionPane.showMessage(this, "请至少选择一要生成的表单!"); return; } if("".equals(txtPrefix.getText().trim())){ txtPrefix.requestFocus(); VCIJOptionPane.showMessage(this, "前缀不能为空!"); return; } if(!isCanGenerate()){ return; } final QANProcessBarFrame frame = new QANProcessBarFrame(); final Thread thread = new Thread() { public void run() { try { frame.setContent(""); generateForm(frame); close(DialogResult.OK); } catch (VCIError e) { UIFUtils.showErrorMessage(ClientContextVariable.getFrame(), e); } catch(Exception e){ e.printStackTrace(); UIFUtils.showErrorMessage(ClientContextVariable.getFrame(), e); } catch (Throwable e) { e.printStackTrace(); VCIJOptionPane.showError(UIContexBuilderWrapperDialog.this, "创建表单或上下文时发生错误!\n" + e.getMessage()); }finally { frame.setProcessBarCancel(true); } } }; QANProcessBar bar = new QANProcessBar(thread, frame, frame, "表单&上下文生成器", false); bar.setVisible(true); } private void generateForm(QANProcessBarFrame frame) throws Throwable{ frame.setContent("正在生成表单"); // 构建四个Form PortalVI addForm = getNewFormPortalVI(getAddVIName()); PortalVI editForm = getNewFormPortalVI(getEditVIName()); PortalVI tableForm = getNewFormPortalVI(getTableFormVIName()); PortalVI tableList = getNewTablePortalVI(getTableListVIName()); List prmItemList = getNewPRMItemList(); PRM prm = new PRM(); prm.setPrmItemList(prmItemList); prm.setShowCols("3"); prm.setFormQtName(""); String prmText = UITools.getPRMText(prm); addForm.prm = prmText; // 设置tableForm的查询模板名称 prm.setFormQtName(getQTName(comBoxEditFormQTNames)); prmText = UITools.getPRMText(prm); editForm.prm = prmText; tableForm.prm = prmText; tableList.prm = UITools.getPRMText(getNewPRMItemListFormTable(tableForm)); if(chkBoxAddForm.isSelected()){ UITools.getService().savePortalVI(addForm); } if(chkBoxEditForm.isSelected()){ UITools.getService().savePortalVI(editForm); } if(chkBoxTableForm.isSelected()){ UITools.getService().savePortalVI(tableForm); } if(chkBoxTableList.isSelected()){ UITools.getService().savePortalVI(tableList); } generateContext(frame); getBtmItemAttrItemTablePanel().getOwnedPanel().refreshPortalVI(); } private String getAddVIName(){ return txtPrefix.getText().trim() + ADD_FORM_SUFFIX; } private String getEditVIName(){ return txtPrefix.getText().trim() + EDIT_FORM_SUFFIX; } private String getTableFormVIName(){ return txtPrefix.getText().trim() + TABLE_FORM_SUFFIX; } private String getTableListVIName(){ return txtPrefix.getText().trim() + TABLE_FORM_LIST_SUFFIX; } private String getVIName(String suffix){ return txtPrefix.getText().trim() + suffix; } private PRM getNewPRMItemListFormTable(PortalVI tableFormVI){ List list = new LinkedList(); StringBuffer sbFieldWidths = new StringBuffer();// 各列默认宽度 StringBuffer sbItemKeys = new StringBuffer(); // 搜索条件 StringBuffer sbOutField = new StringBuffer(); StringBuffer sbSeniorQueryCols = new StringBuffer(); // 高级查询属性 StringBuffer sbSeniorQueryColsCounts = new StringBuffer(); // 高级查询属性个数 int size = tablePanel.getTableModel().getList().size(); for (int i = 0; i < size; i++) { VCIJTableNode tableNode = tablePanel.getTableModel().getList().get(i); AttribItemWrapperEx aiWrapper = tableNode.getObject(); AttribItem ai = aiWrapper.getAttribItem(); sbFieldWidths.append("250").append(","); if(i < 6){ sbItemKeys.append(ai.name).append(","); } sbOutField.append(ai.name).append(","); sbSeniorQueryCols.append(ai.name).append(","); sbSeniorQueryColsCounts.append("1").append(","); } PRMItem prmItem = new PRMItem(); prmItem.setItemPageSize("50,100#50"); prmItem.setItemImgWH("50,50"); prmItem.setItemDbl("3"); prmItem.setItemIsNavigatorExpand("false"); prmItem.setItemIsShowFolder("false"); String qtName = getQTName(comBoxTableFormQTNames); prmItem.setItemFieldWidth(getStringBufferString(sbFieldWidths)); prmItem.setItemKeyFields(getStringBufferString(sbItemKeys)); prmItem.setItemOutFields(getStringBufferString(sbOutField)); prmItem.setItemQtName(qtName); prmItem.setItemSeniorQueryCols(getStringBufferString(sbSeniorQueryCols)); prmItem.setItemSeniorQueryColsCounts(getStringBufferString(sbSeniorQueryColsCounts)); prmItem.setItemInObj(tableFormVI.id); list.add(prmItem); PRM prm = new PRM(); prm.setFormQtName(qtName); prm.setPrmItemList(list); return prm; } private String getStringBufferString(StringBuffer sb){ String res = sb.toString(); if(res.endsWith(",")){ res = res.substring(0, res.length() - 1); } return res; } private List getNewPRMItemList(){ List list = new LinkedList(); for(VCIJTableNode tableNode : tablePanel.getTableModel().getList()){ list.add(getPRMItemFromTableNode(tableNode)); } return list; } private PRMItem getPRMItemFromTableNode(VCIJTableNode tableNode){ PRMItem prmItem = new PRMItem(); String[] headers = tablePanel.getDataProvider().getSpecialColumns(); for(String header : headers){ Object objVal = tableNode.getPropertyValue(header); String newValue = objVal.toString(); if(objVal instanceof ControlType){ newValue = ((ControlType)objVal).getValue(); } if(newValue == null){ newValue = ""; } prmItem = getBtmItemAttrItemTablePanel().getOwnedPanel() .setPRMItemAttrValue(prmItem, header, newValue); } return prmItem; } private PortalVI getNewTablePortalVI(String suffix){ PortalVI vi = getNewFormPortalVI(suffix); vi.viType = 0; return vi; } private PortalVI getNewFormPortalVI(String viName){ String typeName = getBtmName(); PortalVI vi = getNewPortalVI(typeName, viName, true); return vi; } private PortalVI getNewPortalVI(String typeName, String viName, boolean isForm){ PortalVI vi = new PortalVI(); vi.id = ObjectUtility.getNewObjectID36(); vi.typeName = typeName; vi.viName = viName; vi.viType = (short)(isForm ? 1 : 0); // 1:表单 0:表格 vi.typeFlag = 0; // 1:链接类型表单 0:业务类型表单 if(!isBtmType()){ vi.typeFlag = 1; LinkTypeWrapper lt = this.getBtmItemAttrItemTablePanel().getLinkTypeWrapper(); String linkType = lt.linkType.name; vi.typeName = linkType; } return vi; } private boolean isBtmType(){ return this.getBtmItemAttrItemTablePanel().getOwnedPanel().isBtmType(); } private String getBtmName() { String btmName = ""; if(isBtmType()){ btmName = getBtmItemWrapper().btmItem.name; } else { btmName = this.getBtmItemAttrItemTablePanel().getLinkTypeWrapper().linkType.name; } return btmName; } private void generateContext(QANProcessBarFrame frame) throws Throwable{ frame.setContent("正在生成上下文"); String addContext = ""; String editContext = ""; if(chkBoxAddFormCtx.isSelected()){ PLUILayout addFormCtx = generateAddFormCtx(); addContext = addFormCtx.plCode; } if(chkBoxEditFormCtx.isSelected()){ PLUILayout editFormCtx = generateEditFormCtx(); editContext = editFormCtx.plCode; } if(chkBoxTableListCtx.isSelected()){ PLUILayout mgrCtx = generateManagementCtx(addContext, editContext); } } private PLUILayout generateAddFormCtx() throws Throwable{ // 上下文 PLUILayout pld = null; if(isBtmType()){ pld = getNewPagelayoutDefinition(); pld.plIsShowForm = 1; pld.plCode = txtPrefix.getText() + ADD_FORM_CONTEXT_SUFFIX; pld.plName = pld.plCode; // 页签 PLTabPage ptp = getNewFormTabPage("AddFormWindow", "数据添加窗口", pld.plOId); // 页签明细定义 PLPageDefination pd = getNewPageDefinition(ptp, "数据添加"); pd.plType = 2; // 面签属性控制区 PLDefination d = getNewAddOrEditFormDefinition(); d.setTemplateId(getAddVIName()); pd.plDefination = UITools.getPLDefinationText(d); // 按钮Button PLTabButton btnSave = getNewAddSaveButton(pd.plOId); PLTabButton btnCancel = getNewCancelButton(pd.plOId); // 保存数据 UITools.getService().savePLUILayout(pld); UITools.getService().savePLTabPage(ptp); UITools.getService().savePLPageDefination(pd); UITools.getService().savePLTabButton(btnSave); UITools.getService().savePLTabButton(btnCancel); }else{ pld = generateAddFormCtxForLinkType(); } return pld; } private PLUILayout generateAddFormCtxForLinkType() throws Throwable{ String showType = getBtmItemAttrItemTablePanel().getShowType(); String linkType = getBtmName(); // 上下文 PLUILayout pld = getNewPagelayoutDefinition(); pld.plRelatedType = showType; pld.plIsShowForm = 1; pld.plCode = txtPrefix.getText() + ADD_FORM_CONTEXT_SUFFIX; pld.plName = pld.plCode; // 页签 PLTabPage ptp = getNewFormTabPage("AddFormWindow", "数据添加窗口", pld.plOId); // 页签明细定义 PLPageDefination pd = getNewPageDefinition(ptp, "数据添加"); pd.plType = 2; // 面签属性控制区 PLDefination d = getNewAddOrEditFormDefinition(); d.setTemplateId(getAddVIName()); // 重新设置为table类型的 definition d.setSearchTarger("2");// 1:本对象搜索 2:链接对象类搜索 d.setShowType(showType); d.setLinkType(linkType); pd.plDefination = UITools.getPLDefinationText(d); // 按钮Button PLTabButton btnChoose = getNewButton("3C3F9506-4DAB-47C6-383A-AC0CD76D2B21", pd.plOId, "选择", "选择", (short)1); PLTabButton btnSave = getNewButton("9DB40166-8426-8EF2-3ADB-6B69E476D642", pd.plOId, "保存", "保存", (short)2); PLTabButton btnCancel = getNewButton("242E9941-BA60-C52F-79C0-4146E2C333A3", pd.plOId, "取消", "取消", (short)3); // 按钮参数 List cmdPars = new LinkedList(); cmdPars.add(getNewCommandParameter(btnChoose.plOId, "type", showType)); cmdPars.add(getNewCommandParameter(btnChoose.plOId, "context", "${在弹出窗口中选择‘" + showType + "'的上下文}")); cmdPars.add(getNewCommandParameter(btnSave.plOId, "linktype", linkType)); // 保存数据 UITools.getService().savePLUILayout(pld); UITools.getService().savePLTabPage(ptp); UITools.getService().savePLPageDefination(pd); UITools.getService().savePLTabButton(btnChoose); UITools.getService().savePLTabButton(btnSave); UITools.getService().savePLTabButton(btnCancel); for(PLCommandParameter cmdPar : cmdPars){ UITools.getService().savePLCommandParameter(cmdPar); } return pld; } private PLUILayout generateEditFormCtx() throws Throwable{ // 上下文 PLUILayout pld = null; if(isBtmType()){ pld = getNewPagelayoutDefinition(); pld.plIsShowForm = 1; pld.plCode = txtPrefix.getText() + EDIT_FORM_CONTEX_SUFFIX; pld.plName = pld.plCode; // 页签 PLTabPage ptp = getNewFormTabPage("EditFormWindow", "数据修改窗口", pld.plOId); PLPageDefination pd = getNewPageDefinition(ptp, "数据修改"); pd.plType = 2; // 面签属性控制区 PLDefination d = getNewAddOrEditFormDefinition(); d.setTemplateId(getEditVIName()); pd.plDefination = UITools.getPLDefinationText(d); // 按钮Button PLTabButton btnSave = getNewEditSaveButton(pd.plOId); PLTabButton btnCancel = getNewCancelButton(pd.plOId); // 保存数据 UITools.getService().savePLUILayout(pld); UITools.getService().savePLTabPage(ptp); UITools.getService().savePLPageDefination(pd); UITools.getService().savePLTabButton(btnSave); UITools.getService().savePLTabButton(btnCancel); }else{ pld = generateEditFormCtxForLinkType(); } return pld; } private PLUILayout generateEditFormCtxForLinkType() throws Throwable{ String showType = getBtmItemAttrItemTablePanel().getShowType(); String linkType = getBtmName(); // 上下文 PLUILayout pld = getNewPagelayoutDefinition(); pld.plRelatedType = showType; pld.plIsShowForm = 1; pld.plCode = txtPrefix.getText() + EDIT_FORM_CONTEX_SUFFIX; pld.plName = pld.plCode; // 页签 PLTabPage ptp = getNewFormTabPage("EditFormWindow", "数据修改窗口", pld.plOId); PLPageDefination pd = getNewPageDefinition(ptp, "数据修改"); pd.plType = 2; // 面签属性控制区 PLDefination d = getNewAddOrEditFormDefinition(); // 重新设置为table类型的 definition d.setTemplateId(getEditVIName()); d.setSearchTarger("2");// 1:本对象搜索 2:链接对象类搜索 d.setShowType(showType); d.setLinkType(linkType); pd.plDefination = UITools.getPLDefinationText(d); // 按钮Button PLTabButton btnSave = getNewButton("3C49CD14-1E14-3957-D2D7-C968E0299FAB", pd.plOId, "保存", "保存", (short)1); PLTabButton btnCancel = getNewButton("242E9941-BA60-C52F-79C0-4146E2C333A3", pd.plOId, "取消", "取消", (short)2); // 按钮参数 List cmdPars = new LinkedList(); // 保存数据 UITools.getService().savePLUILayout(pld); UITools.getService().savePLTabPage(ptp); UITools.getService().savePLPageDefination(pd); UITools.getService().savePLTabButton(btnSave); UITools.getService().savePLTabButton(btnCancel); return pld; } private PLUILayout generateManagementCtx(String addContext, String editContext) throws Throwable{ // 上下文 PLUILayout pld = null; if(isBtmType()){ pld = getNewPagelayoutDefinition(); pld.plIsShowTab = 1; pld.plCode = txtPrefix.getText() + TABLE_FORM_LIST_CONTEXT_SUFFIX; pld.plName = pld.plCode; // 页签 PLTabPage ptp = getNewFormTabPage("ManagementData", "数据管理窗口", pld.plOId); ptp.plAreaType = 3; // 页签明细定义 PLPageDefination pd = getNewPageDefinition(ptp, "数据管理"); pd.plType = 3; PLDefination d = getNewAddOrEditFormDefinition(); // 重新设置为table类型的 definition d.setTemplateType("1");// 1:Table 2:Custom 3:TreeTable 4:Form 5:Tree d.setTemplateId(getTableListVIName()); pd.plDefination = UITools.getPLDefinationText(d); // 按钮Button PLTabButton btnAdd = getNewButton("65274704-5557-231C-E3EA-0B32B9BD5A0B", pd.plOId, "添加", "添加", (short)1); PLTabButton btnEdit = getNewButton("F8534EFE-130B-0CB3-D477-2AC7B19B7DC4", pd.plOId, "修改", "修改", (short)2); PLTabButton btnDelete = getNewButton("2655E9F0-014B-DFEC-6F92-A6D1C51FDA19", pd.plOId, "删除", "删除", (short)3); // 按钮参数 List cmdPars = new LinkedList(); cmdPars.add(getNewCommandParameter(btnAdd.plOId, "type", getBtmName())); cmdPars.add(getNewCommandParameter(btnAdd.plOId, "context", addContext)); cmdPars.add(getNewCommandParameter(btnEdit.plOId, "type", getBtmName())); cmdPars.add(getNewCommandParameter(btnEdit.plOId, "context", editContext)); // 保存数据 UITools.getService().savePLUILayout(pld); UITools.getService().savePLTabPage(ptp); UITools.getService().savePLPageDefination(pd); UITools.getService().savePLTabButton(btnAdd); UITools.getService().savePLTabButton(btnEdit); UITools.getService().savePLTabButton(btnDelete); for(PLCommandParameter cmdPar : cmdPars){ UITools.getService().savePLCommandParameter(cmdPar); } } else { pld = generateManagementCtxForLinkType(addContext, editContext); } return pld; } private PLUILayout generateManagementCtxForLinkType(String addContext, String editContext) throws Throwable{ String showType = getBtmItemAttrItemTablePanel().getShowType(); String linkType = getBtmName(); // 上下文 PLUILayout pld = getNewPagelayoutDefinition(); pld.plRelatedType = showType; pld.plIsShowTab = 1; pld.plCode = txtPrefix.getText() + TABLE_FORM_LIST_CONTEXT_SUFFIX; pld.plName = pld.plCode; // 页签 PLTabPage ptp = getNewFormTabPage("ManagementData", "数据管理窗口", pld.plOId); ptp.plAreaType = 3; // 操作区 // 页签明细定义 PLPageDefination pd = getNewPageDefinition(ptp, "数据管理"); pd.plType = 3; // 操作区的页面 PLDefination d = getNewAddOrEditFormDefinition(); // 重新设置为table类型的 definition d.setTemplateType("1");// 1:Table 2:Custom 3:TreeTable 4:Form 5:Tree d.setTemplateId(getTableListVIName()); d.setSearchTarger("2");// 1:本对象搜索 2:链接对象类搜索 d.setShowType(showType); d.setLinkType(linkType); pd.plDefination = UITools.getPLDefinationText(d); // 按钮Button PLTabButton btnAdd = getNewButton("D26FCC6A-E669-DEDD-5C71-B98E8F1F6CB7", pd.plOId, "选择添加", "选择添加", (short)1); PLTabButton btnEdit = getNewButton("832BC4EA-159F-C817-A4A2-603528F2872F", pd.plOId, "新建添加", "新建添加", (short)2); PLTabButton btnDelete = getNewButton("3690D997-0EE6-FE39-0ACB-7919C1F27680", pd.plOId, "修改", "修改", (short)3); // 按钮参数 List cmdPars = new LinkedList(); cmdPars.add(getNewCommandParameter(btnAdd.plOId, "type", showType)); cmdPars.add(getNewCommandParameter(btnAdd.plOId, "context", addContext)); cmdPars.add(getNewCommandParameter(btnAdd.plOId, "linktype", linkType)); cmdPars.add(getNewCommandParameter(btnEdit.plOId, "type", showType)); cmdPars.add(getNewCommandParameter(btnEdit.plOId, "context", editContext)); cmdPars.add(getNewCommandParameter(btnEdit.plOId, "linktype", linkType)); cmdPars.add(getNewCommandParameter(btnEdit.plOId, "needselect", "false")); cmdPars.add(getNewCommandParameter(btnDelete.plOId, "type", showType)); cmdPars.add(getNewCommandParameter(btnDelete.plOId, "context", editContext)); cmdPars.add(getNewCommandParameter(btnDelete.plOId, "linktype", linkType)); cmdPars.add(getNewCommandParameter(btnDelete.plOId, "tmapping", "edit")); // 保存数据 UITools.getService().savePLUILayout(pld); UITools.getService().savePLTabPage(ptp); UITools.getService().savePLPageDefination(pd); UITools.getService().savePLTabButton(btnAdd); UITools.getService().savePLTabButton(btnAdd); UITools.getService().savePLTabButton(btnEdit); UITools.getService().savePLTabButton(btnDelete); for(PLCommandParameter cmdPar : cmdPars){ UITools.getService().savePLCommandParameter(cmdPar); } return pld; } private PLPageDefination getNewPageDefinition(PLTabPage ptp, String name) { PLPageDefination pd = new PLPageDefination(); pd.plOId = ObjectUtility.getNewObjectID36(); pd.plTabPageOId = ptp.plOId; pd.name = name; pd.seq = 1; pd.desc = ""; return pd; } private PLDefination getNewAddOrEditFormDefinition(){ PLDefination d = new PLDefination(); d.setTemplateType("4");// 1:Table 2:Custom 3:TreeTable 4:Form 5:Tree d.setSearchTarger("1");// 1:本对象搜索 2:链接对象类搜索 d.setNavigatorType("1"); if(!isBtmType()){ d.setLinkType(getBtmName()); d.setShowType(getBtmItemAttrItemTablePanel().getShowType()); } else { d.setShowType(getBtmName()); } d.setTemplateId(""); d.setEventKey(""); d.setEventValue(""); return d; } private PLUILayout getNewPagelayoutDefinition(){ PLUILayout pld = new PLUILayout(); String userName = getNewUserName(); pld.plOId = ObjectUtility.getNewObjectID36(); pld.plCreateUser = userName; pld.plModifyUser = userName; pld.plIsShowNavigator = 0; pld.plIsShowForm = 0; pld.plIsShowTab = 0; pld.plRelatedType = getBtmName(); return pld; } private PLTabButton getNewAddSaveButton(String pageOid){ PLTabButton tb = getNewButton("2AAFDEE1-B760-A0AD-6C2A-CB2C0C3407A3", pageOid, "保存", "保存", (short)1); return tb; } private PLTabButton getNewEditSaveButton(String pageOid){ PLTabButton tb = getNewButton("B38BAB02-F2B2-D35A-CD12-F98248A18B33", pageOid, "保存", "保存", (short)1); return tb; } private PLTabButton getNewCancelButton(String pageOid){ PLTabButton tb = getNewButton("242E9941-BA60-C52F-79C0-4146E2C333A3", pageOid, "取消", "取消", (short)2); return tb; } private PLTabButton getNewButton(String actionOid, String pageOid, String label, String desc, short seq){ PLTabButton tb = getNewTabButton(pageOid); tb.plActionOId = actionOid; tb.plLabel = label; tb.plDesc = desc; tb.plSeq = seq; return tb; } private PLTabButton getNewTabButton(String pageOid){ PLTabButton tb = new PLTabButton(); tb.plTableOId = pageOid; tb.plAreaType = "tab"; tb.plOId = ObjectUtility.getNewObjectID36(); String userName = getNewUserName(); tb.plCreateUser = userName; tb.plModifyUser = userName; tb.show = "0"; return tb; } private PLCommandParameter getNewCommandParameter(String buttonOid, String key, String value){ PLCommandParameter cp = new PLCommandParameter(); cp.plOId = ObjectUtility.getNewObjectID36(); cp.plCommandOId = buttonOid; cp.plKey = key; cp.plValue = value; String userName = getNewUserName(); cp.plCreateUser = userName; cp.plModifyUser = userName; return cp; } private String getNewUserName(){ return ClientContextVariable.getInvocationInfo().userName; } private PLTabPage getNewFormTabPage(String code, String name, String pageLaoutDefinitionOid){ PLTabPage ptp = new PLTabPage(); ptp.plOId = ObjectUtility.getNewObjectID36(); ptp.plContextOId = pageLaoutDefinitionOid; String userName = getNewUserName(); ptp.plCreateUser = userName; ptp.plModifyUser = userName; ptp.plCode = code; ptp.plName = name; ptp.plSeq = 1; ptp.plIsOpen = 1; ptp.plOpenExpression = ""; ptp.plLabel = ""; ptp.plDesc = ""; ptp.plAreaType = 2; return ptp; } private void cancel(){ close(DialogResult.CANCEL); } private void close(DialogResult dialogResult){ setDialogResult(dialogResult); close(); } private void close(){ dispose(); setVisible(false); } public BtmItemAttrTablePanel getBtmItemAttrItemTablePanel() { return btmItemAttrItemTablePanel; } public void setBtmItemAttrItemTablePanel( BtmItemAttrTablePanel btmItemAttrItemTablePanel) { this.btmItemAttrItemTablePanel = btmItemAttrItemTablePanel; } public BtmItemWrapper getBtmItemWrapper() { return btmItemWrapper; } public void setBtmItemWrapper(BtmItemWrapper btmItemWrapper) { this.btmItemWrapper = btmItemWrapper; } public List getAttribItemWrapper() { return attribItemWrapper; } public void setAttribItemWrapper(List attribItemWrapper) { this.attribItemWrapper = attribItemWrapper; } }