package com.vci.client.tool; import java.awt.BorderLayout; import java.awt.CardLayout; import java.awt.Component; import java.awt.FlowLayout; import java.awt.GridBagConstraints; import java.awt.GridBagLayout; import java.awt.Insets; import java.awt.Point; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; import java.util.Arrays; import java.util.Comparator; import java.util.HashMap; import java.util.List; import java.util.Map; import javax.swing.ButtonGroup; import javax.swing.DefaultComboBoxModel; import javax.swing.JButton; import javax.swing.JLabel; import javax.swing.JOptionPane; import javax.swing.JPanel; import javax.swing.JScrollPane; import javax.swing.JTextField; import javax.swing.JTree; import javax.swing.border.TitledBorder; import javax.swing.event.TreeSelectionEvent; import javax.swing.event.TreeSelectionListener; import javax.swing.tree.DefaultMutableTreeNode; import javax.swing.tree.DefaultTreeCellRenderer; import javax.swing.tree.DefaultTreeModel; import javax.swing.tree.TreeNode; import javax.swing.tree.TreePath; import org.jdesktop.swingx.JXCollapsiblePane; import com.vci.corba.omd.btm.BtmItem; import com.vci.corba.omd.ltm.LinkType; import com.vci.corba.portal.data.PortalVI; import com.vci.client.framework.rightConfig.modelConfig.ModuleTreeCellRenderer; import com.vci.client.omd.btm.ui.BtmClient; import com.vci.client.omd.btm.wrapper.BtmItemWrapper; import com.vci.client.omd.linktype.LinkTypeStart; import com.vci.client.omd.linktype.LinkTypeWrapper; import com.vci.client.portal.Formdesign.object.BtnXmlClientObject; 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.PRMItemDetailInfoPanel; import com.vci.client.tool.panel.PRMItemTablePanel; import com.vci.client.tool.wrapper.PRMItemWrapper; import com.vci.client.ui.swing.VCISwingUtil; import com.vci.client.ui.swing.components.VCIJButton; import com.vci.client.ui.swing.components.VCIJComboBox; 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.VCIJRadioButton; import com.vci.client.ui.swing.components.VCIJScrollPane; import com.vci.client.ui.swing.components.VCIJSplitPane; import com.vci.client.ui.swing.components.VCIJTextArea; 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.ui.tree.VCIBaseTree; import com.vci.client.ui.tree.VCIBaseTreeModel; import com.vci.client.ui.tree.VCIBaseTreeNode; import com.vci.client.ui.util.PostorderEnumeration; import com.vci.corba.common.VCIError; /** * FormAttrSetting 主面板 * @author xiongchao * */ public class FormAttrSettingPanel extends VCIJPanel implements ActionListener{ /** * */ private static final long serialVersionUID = -3561138238673844036L; private JTextField textField; public FormAttrSettingPanel(){ init(); } public void init(){ initUI(); initActionMap(); refreshPortalVI(); } private void initUI(){ setLayout(new BorderLayout()); add(getNorthPanel(), BorderLayout.NORTH); int newOrientation = VCIJSplitPane.HORIZONTAL_SPLIT; VCIJSplitPane jsp = getJSplitPane(newOrientation, getWestPanel(), getCenterPanl()); jsp.setDividerLocation(200); VCIJSplitPane jsp2 = getJSplitPane(newOrientation, jsp, getEastPanel()); jsp2.setDividerLocation(1000); add(jsp2, BorderLayout.CENTER); add(getSouthPanel(), BorderLayout.SOUTH); } private VCIJPanel getSouthPanel(){ VCIJPanel pal = new VCIJPanel(); return pal; } private VCIJSplitPane getJSplitPane(int newOrientation, Component leftCompt, Component rightCompt){ VCIJSplitPane jsp = new VCIJSplitPane(newOrientation); jsp.setLeftComponent(leftCompt); jsp.setRightComponent(rightCompt); jsp.setOneTouchExpandable(true); jsp.setContinuousLayout(true); jsp.setDividerSize(10); jsp.setDividerLocation(200); return jsp; } private VCIJPanel getNorthPanel(){ VCIJPanel pal = new VCIJPanel(); return pal; } private CardLayout treePanelLayout = new CardLayout(); private JXCollapsiblePane treePanelPane = new JXCollapsiblePane(treePanelLayout); private VCIBaseTreeNode btmTreeRoot = new VCIBaseTreeNode("业务类型", "btm"); private VCIBaseTreeModel btmTreeModel = new VCIBaseTreeModel(btmTreeRoot); private VCIBaseTree btmTree = new VCIBaseTree(btmTreeModel); private VCIBaseTreeNode linkTypeTreeRoot = new VCIBaseTreeNode("链接类型", "linkType"); private VCIBaseTreeModel linkTypeTeeeModel = new VCIBaseTreeModel(linkTypeTreeRoot); private VCIBaseTree linkTypeTree = new VCIBaseTree(linkTypeTeeeModel); private VCIJRadioButton rbtnBtm = new VCIJRadioButton("业务类型", true); private VCIJRadioButton rbtnLinkType = new VCIJRadioButton("链接类型", false); public boolean isBtmType(){ return rbtnBtm.isSelected(); } private DefaultTreeCellRenderer getTreeCellRenderer(){ return new ModuleTreeCellRenderer(){ /** * */ private static final long serialVersionUID = 6253740682089786968L; @Override public Component getTreeCellRendererComponent(JTree tree, Object value, boolean sel, boolean expanded, boolean leaf, int row, boolean hasFocus){ Component compt = super.getTreeCellRendererComponent(tree, value, sel, expanded, leaf, row, hasFocus); VCIBaseTreeNode node = null; if(value instanceof VCIBaseTreeNode){ node = (VCIBaseTreeNode)value; } if(node != null){ if(node.isRoot()){ setIcon(VCISwingUtil.createImageIcon("house.png")); } } return compt; } }; } private VCIJPanel getWestPanel(){ VCIJPanel pal = new VCIJPanel(new FlowLayout(0)); VCIJPanel rbtnPal = new VCIJPanel(); //add by caill改变布局方式 rbtnPal.setLayout(new GridBagLayout()); ButtonGroup rbtnGroup = new ButtonGroup(); ActionListener al = new ActionListener() { @Override public void actionPerformed(ActionEvent e) { changeUIData(e); } }; rbtnBtm.setEnabled(false); rbtnLinkType.setEnabled(true); rbtnBtm.addActionListener(al); rbtnLinkType.addActionListener(al); //add by caill start //为定位框、定位按钮、业务类型、连接类型标签安置位置 textField=new JTextField(20); JButton sel=new JButton("定位"); GridBagConstraints gbc = new GridBagConstraints(); gbc.fill = GridBagConstraints.HORIZONTAL; gbc.weightx = 0; gbc.weighty = 0; gbc.gridx = 0; gbc.gridy = 0; gbc.insets = new Insets(0, 0, 0, 1630); rbtnPal.add(textField,gbc); gbc.insets = new Insets(0, 140, 0, 1570); rbtnPal.add(sel,gbc); gbc.gridx = 0; gbc.gridy = 1; gbc.insets = new Insets(5, 0, 0, 1700); rbtnPal.add(rbtnBtm,gbc); gbc.gridx = 0; gbc.gridy = 1; gbc.insets = new Insets(5, 80, 0, 0); rbtnPal.add(rbtnLinkType,gbc); //add by caill end rbtnGroup.add(rbtnBtm);rbtnGroup.add(rbtnLinkType); //add by caill start //为定位按钮增添点击事件 sel.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { //e.getSource(); String test = textField.getText().trim(); //当业务类型树被选中时 if(rbtnBtm.isSelected()){ DefaultTreeModel model = (DefaultTreeModel)btmTree.getModel(); model.reload(); TreeNode root = (TreeNode) model.getRoot(); PostorderEnumeration enumeration = new PostorderEnumeration( root); while (enumeration.hasMoreElements()) { DefaultMutableTreeNode element = (DefaultMutableTreeNode) enumeration .nextElement(); if (element.getUserObject() instanceof String) { String wrapper = (String) element .getUserObject(); if (wrapper != null && wrapper.equals(test)) { TreeNode[] path = element.getPath(); TreePath treePath = new TreePath(path); btmTree.setSelectionPath(treePath); return; } ; } } if (test.equals("")) { JOptionPane.showMessageDialog( com.vci.client.LogonApplication.frame, "请输入业务类型", "提示", JOptionPane.INFORMATION_MESSAGE); } else { JOptionPane.showMessageDialog( com.vci.client.LogonApplication.frame, "{ " + test + " }业务类型不存在", "提示", JOptionPane.INFORMATION_MESSAGE); } } //当链接类型树被选中时 else{ DefaultTreeModel model = (DefaultTreeModel)linkTypeTree.getModel(); model.reload(); TreeNode root = (TreeNode) model.getRoot(); PostorderEnumeration enumeration = new PostorderEnumeration( root); while (enumeration.hasMoreElements()) { DefaultMutableTreeNode element = (DefaultMutableTreeNode) enumeration .nextElement(); if (element.getUserObject() instanceof String) { String wrapper = (String) element .getUserObject(); if (wrapper != null && wrapper.equals(test)) { TreeNode[] path = element.getPath(); TreePath treePath = new TreePath(path); linkTypeTree.setSelectionPath(treePath); return; } ; } } if (test.equals("")) { JOptionPane.showMessageDialog( com.vci.client.LogonApplication.frame, "请输入链接类型", "提示", JOptionPane.INFORMATION_MESSAGE); } else { JOptionPane.showMessageDialog( com.vci.client.LogonApplication.frame, "{ " + test + " }链接类型不存在", "提示", JOptionPane.INFORMATION_MESSAGE); } } } }); //为定位框增加键盘事件 textField.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { JTextField text = (JTextField) e.getSource(); String test = text.getText().trim(); //当业务类型树被选中时 if(rbtnBtm.isSelected()){ DefaultTreeModel model = (DefaultTreeModel)btmTree.getModel(); model.reload(); TreeNode root = (TreeNode) model.getRoot(); PostorderEnumeration enumeration = new PostorderEnumeration( root); while (enumeration.hasMoreElements()) { DefaultMutableTreeNode element = (DefaultMutableTreeNode) enumeration .nextElement(); if (element.getUserObject() instanceof String) { String wrapper = (String) element .getUserObject(); if (wrapper != null && wrapper.equals(test)) { TreeNode[] path = element.getPath(); TreePath treePath = new TreePath(path); btmTree.setSelectionPath(treePath); return; } ; } } if (test.equals("")) { JOptionPane.showMessageDialog( com.vci.client.LogonApplication.frame, "请输入业务类型", "提示", JOptionPane.INFORMATION_MESSAGE); } else { JOptionPane.showMessageDialog( com.vci.client.LogonApplication.frame, "{ " + test + " }业务类型不存在", "提示", JOptionPane.INFORMATION_MESSAGE); } } //当链接类型树被选中时 else{ DefaultTreeModel model = (DefaultTreeModel)linkTypeTree.getModel(); model.reload(); TreeNode root = (TreeNode) model.getRoot(); PostorderEnumeration enumeration = new PostorderEnumeration( root); while (enumeration.hasMoreElements()) { DefaultMutableTreeNode element = (DefaultMutableTreeNode) enumeration .nextElement(); if (element.getUserObject() instanceof String) { String wrapper = (String) element .getUserObject(); if (wrapper != null && wrapper.equals(test)) { TreeNode[] path = element.getPath(); TreePath treePath = new TreePath(path); linkTypeTree.setSelectionPath(treePath); return; } ; } } if (test.equals("")) { JOptionPane.showMessageDialog( com.vci.client.LogonApplication.frame, "请输入链接类型", "提示", JOptionPane.INFORMATION_MESSAGE); } else { JOptionPane.showMessageDialog( com.vci.client.LogonApplication.frame, "{ " + test + " }链接类型不存在", "提示", JOptionPane.INFORMATION_MESSAGE); } } } }); //add by caill end pal.add(rbtnPal); treePanelLayout = new CardLayout(); treePanelPane = new JXCollapsiblePane(); treePanelPane.setLayout(treePanelLayout); treePanelPane.add(getBtmTreePanel(), ""); treePanelPane.add(getLinkTypeTreePanel(), ""); pal.add(treePanelPane); return pal; } private VCIJPanel getBtmTreePanel(){ VCIJPanel pal = new VCIJPanel(new BorderLayout()); pal.setName("BtmTreePanel"); try { BtmItem[] bis = BtmClient.getService().getAllBtmItem(""); VCIBaseTreeNode defaultSelectedtreeNode = null; if(bis.length > 0){ for(BtmItem bi : bis){ VCIBaseTreeNode treeNode = new VCIBaseTreeNode(bi.name, new BtmItemWrapper(bi)); btmTreeRoot.insert(treeNode, btmTreeRoot.getChildCount()); if(defaultSelectedtreeNode == null){ defaultSelectedtreeNode = treeNode; } } if(defaultSelectedtreeNode == null){ defaultSelectedtreeNode = btmTreeRoot; } btmTreeModel = new VCIBaseTreeModel(btmTreeRoot); btmTree = new VCIBaseTree(btmTreeModel, getTreeCellRenderer()); // btmTree.setSelectionPath(new TreePath(defaultSelectedtreeNode)); btmTree.setSelectionRow(1); btmTree.addTreeSelectionListener(new TreeSelectionListener() { @Override public void valueChanged(TreeSelectionEvent e) { btmItemLlist_valueChange(e); } }); pal.add(new VCIJScrollPane(btmTree)); return pal; } } catch (VCIError e) { e.printStackTrace(); } return pal; } private VCIJPanel getLinkTypeTreePanel(){ VCIJPanel pal = new VCIJPanel(new BorderLayout()); pal.setName("LinkTreePanel"); try { LinkType[] lts = LinkTypeStart.getService().getLinkTypes(); VCIBaseTreeNode defaultSelectedtreeNode = null; if(lts.length > 0){ for(LinkType lt : lts){ VCIBaseTreeNode treeNode = new VCIBaseTreeNode(lt.name, new LinkTypeWrapper(lt)); linkTypeTreeRoot.insert(treeNode, linkTypeTreeRoot.getChildCount()); if(defaultSelectedtreeNode == null){ defaultSelectedtreeNode = treeNode; } } if(defaultSelectedtreeNode == null){ defaultSelectedtreeNode = linkTypeTreeRoot; } linkTypeTeeeModel = new VCIBaseTreeModel(linkTypeTreeRoot); linkTypeTree = new VCIBaseTree(linkTypeTeeeModel, getTreeCellRenderer()); // linkTypeTree.setSelectionPath(new TreePath(defaultSelectedtreeNode)); linkTypeTree.setSelectionRow(1); linkTypeTree.addTreeSelectionListener(new TreeSelectionListener() { @Override public void valueChanged(TreeSelectionEvent e) { btmItemLlist_valueChange(e); } }); pal.add(new VCIJScrollPane(linkTypeTree)); return pal; } } catch (VCIError e) { e.printStackTrace(); } pal.add(new VCIJScrollPane(linkTypeTree)); return pal; } boolean isFirstSelected = false; private void changeUIData(ActionEvent e){ rbtnBtm.setEnabled(rbtnLinkType.isSelected()); rbtnLinkType.setEnabled(rbtnBtm.isSelected()); treePanelLayout.next(treePanelPane.getContentPane()); refreshPortalVI(); } private void btmItemLlist_valueChange(TreeSelectionEvent e){ portalVITablePanel.refreshTableData(); getPRMItemTablePanel().getTablePanel().refreshTableData(new PRMItemWrapper[]{}); BtmItemAttrTablePanel batp = getBtmItemAttrTablePanel(); if(rbtnBtm.isSelected()){ batp.setBtm(true); batp.setBtmItemWrapper(getSelectedBtm()); batp.setLinkTypeWrapper(null); }else { batp.setBtm(false); batp.setBtmItemWrapper(null); batp.setLinkTypeWrapper(getSelectedLinkType()); } batp.getTablePanel().refreshTableData(); } public BtmItemWrapper getSelectedBtm(){ VCIBaseTreeNode treeNode = (VCIBaseTreeNode) btmTree.getLastSelectedPathComponent(); if(treeNode == null) return null; if(treeNode.getObj() instanceof BtmItemWrapper){ return (BtmItemWrapper)treeNode.getObj(); } return null; } public LinkTypeWrapper getSelectedLinkType(){ VCIBaseTreeNode treeNode = (VCIBaseTreeNode) linkTypeTree.getLastSelectedPathComponent(); if(treeNode == null) return null; if(treeNode.getObj() instanceof LinkTypeWrapper){ return (LinkTypeWrapper)treeNode.getObj(); } return null; } class PortalVIDataPorivder extends AbstractVCIJTableDataProvider{ @Override public PortalVI[] getDatas(int pageIndex, int gageSize) { PortalVI[] res = new PortalVI[0]; BtmItemWrapper biw = (BtmItemWrapper)getSelectedBtm(); if(biw == null) return res; try { String typeName = biw.btmItem.name; if(!isBtmType()){ LinkTypeWrapper ltw = getSelectedLinkType(); if(ltw == null) return res; typeName = ltw.linkType.name; } res = UITools.getService().getPortalVIArrayByTypeName(typeName); Arrays.sort(res, new Comparator() { @Override public int compare(PortalVI o1, PortalVI o2) { return o1.viName.compareTo(o2.viName); } }); super.total = res.length; } catch (VCIError e) { e.printStackTrace(); } return res; } @Override public VCIJTableNode getNewRowNode( PortalVI obj) { VCIJTableNode node = new VCIJTableNode(obj); int i = 0; String[] names = getSpecialColumns(); node.setPropertyValue(names[i++], obj.typeName); node.setPropertyValue(names[i++], obj.viName); node.setPropertyValue(names[i++], obj.viType==1?"表单":"表格"); return node; } @Override public String[] getSpecialColumns() { return "业务类型,名称,类型, ".split(","); } @Override public int getTotal() { return super.total; } } public void refreshPortalVI(){ btmItemLlist_valueChange(null); } private PortalVIDataPorivder dataProvider = new PortalVIDataPorivder(); private VCIJTablePanel portalVITablePanel = null; private VCIJPanel getCenterPanl(){ VCIJPanel pal = new VCIJPanel(new BorderLayout()); portalVITablePanel = new VCIJTablePanel(dataProvider); portalVITablePanel.setShowColumnSetting(false); portalVITablePanel.setColumnDefaultWidth(250); portalVITablePanel.setCustomButtons(Arrays.asList( createButton("deletePortalVI", "删除", "delete.png"))); portalVITablePanel.buildTablePanel(); portalVITablePanel.getTable().addMouseListener(new MouseAdapter() { public void mouseClicked(MouseEvent e) { Point point = e.getPoint(); int row = portalVITablePanel.getTable().rowAtPoint(point); int column = portalVITablePanel.getTable().columnAtPoint(point); if(row < 0 || column < 0) return; portalVITablePanel_mouseClicked(e); } }); portalVITablePanel.setBorder(new TitledBorder("表单")); VCIJSplitPane sp = new VCIJSplitPane(VCIJSplitPane.VERTICAL_SPLIT, portalVITablePanel, null); sp.setDividerSize(10); sp.setDividerLocation(300); sp.setContinuousLayout(true); sp.setOneTouchExpandable(true); sp.setLeftComponent(portalVITablePanel); VCIJSplitPane jsp = getJSplitPane(VCIJSplitPane.HORIZONTAL_SPLIT, getNewPRMItemTablePanel(), getMateriamItemAttrTablePanel()); jsp.setDividerLocation(350); sp.setRightComponent(jsp); pal.add(sp, BorderLayout.CENTER); return pal; } private void editPortalVI(){ List list = portalVITablePanel.getSelectedRowObjectsList(); if(!isSelectedPortalVI(list)) return; } private void deletePortalVI(){ List list = portalVITablePanel.getSelectedRowObjectsList(); if(!isSelectedPortalVI(list)) return; if(VCIJOptionPane.showConfirm(this, "您确定要删除选择的数据吗?") != VCIJOptionPane.YES_OPTION) return; try { for(PortalVI vi : list){ UITools.getService().deletePortalVI(vi); } getBtmItemAttrTablePanel().getOwnedPanel().refreshPortalVI(); } catch (VCIError e) { e.printStackTrace(); VCIJOptionPane.showMessage(this, "删除表单时发生错误!\n" + e.getMessage()); } } private PRMItemTablePanel pRMItemTablePanel = null; public PRMItemTablePanel getPRMItemTablePanel(){ return pRMItemTablePanel; } private PRMItemTablePanel getNewPRMItemTablePanel(){ pRMItemTablePanel = new PRMItemTablePanel(this); pRMItemTablePanel.setBorder(new TitledBorder("表单属性")); return pRMItemTablePanel; } private void portalVITablePanel_mouseClicked(MouseEvent e){ List list = portalVITablePanel.getSelectedRowObjectsList(); if(list.size() <= 0) return; pRMItemTablePanel.setPortalVIList(list); pRMItemTablePanel.getTablePanel().refreshTableData(); } private BtmItemAttrTablePanel btmItemAttrTablePanel = null; public BtmItemAttrTablePanel getBtmItemAttrTablePanel() { return btmItemAttrTablePanel; } public void setBtmItemAttrTablePanel(BtmItemAttrTablePanel btmItemAttrTablePanel) { this.btmItemAttrTablePanel = btmItemAttrTablePanel; } public BtmItemAttrTablePanel getMateriamItemAttrTablePanel(){ btmItemAttrTablePanel = new BtmItemAttrTablePanel(this); btmItemAttrTablePanel.setBorder(new TitledBorder("业务类型属性")); return btmItemAttrTablePanel; } private PRMItemDetailInfoPanel pRMItemDetailInfoPanel = null; public PRMItemDetailInfoPanel getpRMItemDetailInfoPanel() { return pRMItemDetailInfoPanel; } public void setpRMItemDetailInfoPanel( PRMItemDetailInfoPanel pRMItemDetailInfoPanel) { this.pRMItemDetailInfoPanel = pRMItemDetailInfoPanel; } private VCIJPanel getEastPanel(){ VCIJPanel pal = new VCIJPanel(new BorderLayout()); pRMItemDetailInfoPanel = new PRMItemDetailInfoPanel(); pRMItemDetailInfoPanel.setBorder(new TitledBorder("属性配置")); pal.add(getFunUtilBtnPanel(), BorderLayout.NORTH); pal.add(new VCIJScrollPane(pRMItemDetailInfoPanel), BorderLayout.CENTER); return pal; } private VCIJComboBox cbxTargetAttr = null; private VCIJTextArea txtTargetVal = new VCIJTextArea(""); private VCIJComboBox getTargetAttrComboBox(){ VCIJComboBox cbx = new VCIJComboBox(); cbxTargetAttr = cbx; DefaultComboBoxModel model = new DefaultComboBoxModel(); // model.addElement(ChangeableProperty.FIELD); model.addElement(ChangeableProperty.READONLY); model.addElement(ChangeableProperty.REQUIRED); model.addElement(ChangeableProperty.NAME); model.addElement(ChangeableProperty.SHOWTYPE); model.addElement(ChangeableProperty.DEFVAL); model.addElement(ChangeableProperty.POSTYPE); model.addElement(ChangeableProperty.FIELD_EXPRESS); model.addElement(ChangeableProperty.READONLY_CONDITION); model.addElement(ChangeableProperty.CONTROL_FIELD); model.addElement(ChangeableProperty.CONTROL_FIELD_CONDITION); model.addElement(ChangeableProperty.SCRIPT_VALIDATE); model.addElement(ChangeableProperty.TIPTEXT); model.addElement(ChangeableProperty.CASCAE_FIELD); model.addElement(ChangeableProperty.CUSTOM_CLASS); model.addElement(ChangeableProperty.HTTP_PATH); model.addElement(ChangeableProperty.HTTP_FIELD); model.addElement(ChangeableProperty.REFERENCE_FIRST); model.addElement(ChangeableProperty.REFERENCE_SECOND); model.addElement(ChangeableProperty.REFENENCE_FIELD); model.addElement(ChangeableProperty.OTHER); cbx.setModel(model); return cbx; } private VCIJPanel getFunUtilBtnPanel(){ VCIJPanel pal = new VCIJPanel(new GridBagLayout()); pal.setBorder(new TitledBorder("批量修改选择的表单共有属性的属性值")); int padxy = 1; int anchor = GridBagConstraints.NORTHWEST; int fill = GridBagConstraints.BOTH; int gridx = 0; int gridy = 0; gridx = 0; gridy += 1; pal.add(new VCIJLabel("属性:"), getGBC(gridx++, gridy, 1, 1, 0, 0, anchor, fill, padxy)); pal.add(getTargetAttrComboBox(), getGBC(gridx++, gridy, 1, 1,1.0, 0, anchor, fill, padxy)); pal.add(createButton("execAttrSetting", "执行", "action_check.png"), getGBC(gridx++, gridy, 1, 1, 0.5, 0, anchor, fill, padxy)); gridx = 0; gridy += 1; pal.add(new VCIJLabel("值:"), getGBC(gridx++, gridy, 1, 1, 0, 0, anchor, fill, padxy)); txtTargetVal = new VCIJTextArea(); txtTargetVal.setRows(3); txtTargetVal.setWrapStyleWord(true); pal.add(new VCIJScrollPane(txtTargetVal), getGBC(gridx++, gridy, 2, 2, 1.0, 1.0, anchor, fill, padxy)); return pal; } private VCIJButton createButton(String actionCommand, String text, String icon){ return VCISwingUtil.createVCIJButton(actionCommand, text, text, icon, this); } 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("execAttrSetting", new Runnable() { @Override public void run() { execAttrSetting(); } }); actionMap.put("editPortalVI", new Runnable() { @Override public void run() { editPortalVI(); } }); actionMap.put("deletePortalVI", new Runnable() { @Override public void run() { deletePortalVI(); } }); } @Override public void actionPerformed(ActionEvent e) { String actionCommand = e.getActionCommand(); if(actionMap.containsKey(actionCommand)){ actionMap.get(actionCommand).run(); } } private void execAttrSetting(){ List viList = this.portalVITablePanel.getSelectedRowObjectsList(); List PRMItemWrapperExList = getPRMItemTablePanel().getTablePanel(). getSelectedRowObjectsList(); if(!isSelectedPortaVIAndPRMItem(viList, PRMItemWrapperExList)) return; String selecteItemValue = (String) cbxTargetAttr.getSelectedItem(); String newValue = txtTargetVal.getText(); boolean success = true; // 修改表单 for(PortalVI vi : viList){ PRM prm = UITools.getPRM(vi.prm); List viPrmItems = prm.getPrmItemList(); for(PRMItemWrapper piw : PRMItemWrapperExList){ for(PRMItem pi : viPrmItems){ if(piw.getPrmItem().getItemField().equals(pi.getItemField())){ // 修改单个 PRMItem 指定的属性值 pi = setPRMItemAttrValue(pi, selecteItemValue, newValue); } } } prm.setPrmItemList(viPrmItems); try { vi.prm = UITools.getPRMText(prm); success &= UITools.getService().updatePortalVI(vi); } catch (Throwable e) { e.printStackTrace(); } } btmItemLlist_valueChange(null); if(success){ VCIJOptionPane.showMessage(this, "修改成功"); } } public PRMItem setPRMItemAttrValue(PRMItem prmItem, String attrName, String newValue){ if(attrName.equals(ChangeableProperty.FIELD)){ prmItem.setItemField(newValue); }else if(attrName.equals(ChangeableProperty.READONLY)){ prmItem.setItemIsEditable(newValue); }else if(attrName.equals(ChangeableProperty.REQUIRED)){ prmItem.setItemIsRequired(newValue); }else if(attrName.equals(ChangeableProperty.NAME)){ prmItem.setItemName(newValue); }else if(attrName.equals(ChangeableProperty.SHOWTYPE)){ prmItem.setItemType(newValue); }else if(attrName.equals(ChangeableProperty.DEFVAL)){ prmItem.setItemValue(newValue); }else if(attrName.equals(ChangeableProperty.POSTYPE)){ prmItem.setItemCols(newValue); }else if(attrName.equals(ChangeableProperty.FIELD_EXPRESS)){ prmItem.setItemAddFilter(newValue); }else if(attrName.equals(ChangeableProperty.READONLY_CONDITION)){ prmItem.setItemEditableProgram(newValue); }else if(attrName.equals(ChangeableProperty.CONTROL_FIELD)){ prmItem.setItemCtrlDisplyCol(newValue); }else if(attrName.equals(ChangeableProperty.CONTROL_FIELD_CONDITION)){ prmItem.setItemCtrlDisplyCondition(newValue); }else if(attrName.equals(ChangeableProperty.SCRIPT_VALIDATE)){ prmItem.setItemScript(newValue); }else if(attrName.equals(ChangeableProperty.TIPTEXT)){ prmItem.setItemTips(newValue); }else if(attrName.equals(ChangeableProperty.CASCAE_FIELD)){ prmItem.setItemQueryRefFields(newValue); }else if(attrName.equals(ChangeableProperty.CUSTOM_CLASS)){ prmItem.setItemCustomClass(newValue); }else if(attrName.equals(ChangeableProperty.HTTP_PATH)){ }else if(attrName.equals(ChangeableProperty.HTTP_FIELD)){ }else if(attrName.equals(ChangeableProperty.REFERENCE_FIRST)){ prmItem.setItemListTable(newValue); }else if(attrName.equals(ChangeableProperty.REFERENCE_SECOND)){ prmItem.setItemListTxt(newValue); }else if(attrName.equals(ChangeableProperty.REFENENCE_FIELD)){ prmItem.setItemListVal(newValue); }else if(attrName.equals(ChangeableProperty.OTHER)){ prmItem.setItemStyle(newValue); } return prmItem; } private boolean isSelectedPortaVIAndPRMItem(List viList, List prmItemList){ if(!isSelectedPortalVI(viList)) return false; if(!isSelectedPRMItemWrapperEx(prmItemList)) return false; return true; } private boolean isSelectedPortalVI(List list){ if(list.size() <= 0){ VCIJOptionPane.showMessageDialog(this, "请先选择表单再进行此操作"); return false; } return true; } private boolean isSelectedPRMItemWrapperEx(List list){ if(list.size() <= 0){ VCIJOptionPane.showMessageDialog(this, "请先选择表单属性再进行此操作"); return false; } return true; } }