package com.vci.client.portal.UI; import java.awt.BorderLayout; import java.awt.Color; import java.awt.FlowLayout; import java.awt.GridBagConstraints; import java.awt.GridBagLayout; import java.awt.Insets; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.FocusEvent; import java.awt.event.FocusListener; import java.util.ArrayList; import java.util.Arrays; import java.util.Comparator; import java.util.HashMap; import java.util.LinkedHashMap; import java.util.LinkedList; import java.util.List; import java.util.Map; import java.util.Map.Entry; import java.util.regex.Matcher; import java.util.regex.Pattern; import javax.swing.ButtonGroup; import javax.swing.DefaultComboBoxModel; import javax.swing.DefaultListModel; import javax.swing.JButton; import javax.swing.JCheckBox; import javax.swing.JComboBox; import javax.swing.JLabel; import javax.swing.JOptionPane; import javax.swing.JPanel; import javax.swing.JRadioButton; import javax.swing.JScrollPane; import javax.swing.JTextField; import javax.swing.border.EmptyBorder; import com.vci.client.LogonApplication; import com.vci.client.common.PinyinCommon; import com.vci.client.common.providers.ServiceProvider; 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.omd.provider.ApProvider; import com.vci.client.omd.provider.BtmProvider; import com.vci.client.omd.provider.LinkTypeProvider; import com.vci.client.oq.QTClient; import com.vci.client.oq.QTDClient; import com.vci.client.portal.Formdesign.FormDesignDialog; import com.vci.client.portal.platformPortal.CreateFormOrTableDialog; import com.vci.client.portal.platformPortal.TableDialog; import com.vci.client.portal.utility.PLDefination; import com.vci.client.portal.utility.UITools; import com.vci.client.ui.swing.VCIOptionPane; import com.vci.client.ui.swing.components.VCIJDialog; import com.vci.client.ui.swing.components.VCIJIntegerTextField; import com.vci.client.ui.swing.components.VCIJTextArea; import com.vci.client.ui.swing.components.VCIJTextField; import com.vci.common.portal.constants.TemplateTypeConstants; import com.vci.common.portal.enums.PortalVIType; import com.vci.common.portal.enums.PortalVITypeFlag; import com.vci.common.qt.object.QTConstants; import com.vci.common.utility.ObjectUtility; import com.vci.corba.common.VCIError; import com.vci.corba.omd.atm.AttribItem; import com.vci.corba.omd.btm.BtmItem; import com.vci.corba.omd.ltm.LinkType; import com.vci.corba.omd.qtm.QTInfo; import com.vci.corba.portal.data.PLPageDefination; import com.vci.corba.portal.data.PLUILayout; import com.vci.corba.portal.data.PLTabPage; import com.vci.corba.portal.data.PortalVI; import com.vci.omd.constants.BusinessConstants; import com.vci.omd.constants.LinkConstants; import com.vci.omd.objects.OtherInfo; /** * UI组件定义维护窗口 * */ public class UIDesinDialog extends VCIJDialog { /** * */ private static final long serialVersionUID = 2544981501338846700L; private final JPanel contentPanel = new JPanel(); private JButton okButton; private JButton cancelButton; //==========add by guo------ // private int typeFlag; private JButton createPOForm; private JButton editPOForm; private JButton createLOTreeTable; private JButton editLOTreeTable; private JButton createPOTreeTable; private JButton editPOTreeTable; private JButton createLOTable; private JButton editLOTable; private JButton createLOForm; private JButton editLOForm; private JButton createPOTable; private JButton editPOTable; private JPanel panel; private JRadioButton tableRadio; private JRadioButton customRadio; private JRadioButton rdbtnTreeTable; private final ButtonGroup bg = new ButtonGroup(); private final ButtonGroup bg1 = new ButtonGroup(); private JPanel northPanel; private JRadioButton rootObjectRdb; private JRadioButton relateRdb; private JRadioButton PFKRdb; private JPanel custermPanel; private JPanel tableGernaralPanel; private JPanel tree_tableGernaralPanel; private JTextField controlpath; private JPanel dynamicPal; private JPanel gernalDynamicPal; private JPanel tableObjectPal; private JPanel relatetPal; private JComboBox rootCom; private JComboBox rootSelectTem; private JComboBox relatCom; private JComboBox relateLtCom; private JComboBox relateSelectTem; private final PLUILayout plpagelayoutdefination; private final PLTabPage pltabpage; private PLDefination pldefination; private String plPageDefinationID; private JLabel label_2; private JPanel panel_1; private JRadioButton navigatorfold; private JRadioButton navigatorrole; private JRadioButton navigatornodisply; private String btmName; private JPanel treeTablePanel; private JLabel label_4; private JPanel panel_3; private JRadioButton graduallyRad; private JRadioButton allRad; private JLabel label_5; private JTextField expandColsTxt; private final Integer templateType = TemplateTypeConstants.TREETABLE; private JLabel label_9; private VCIJTextField nameTxt; private JLabel label_10; private JScrollPane scrollPane; private VCIJTextArea descTxt; private JRadioButton rdbtnForm; private JRadioButton rdbtnTree; private JLabel label_11; private VCIJIntegerTextField seqTxt; private final short disType; private final PLPageDefination plPageDefination; private JPanel formPanel; private JLabel label_12; private JRadioButton genralRdb; private JLabel label_13; private JRadioButton form_rootRdb; private JLabel label_14; private JComboBox rootObjCom; private JLabel label_15; private JComboBox rootObjSelectCom; private JPanel treePanel; private JLabel label_16; private JComboBox tree_showTypeTxt; private JLabel label_17; private JPanel panel_4; private JRadioButton tree_graduallyRad; private JRadioButton tree_allRad; private JLabel label_18; private JPanel panel_5; private JRadioButton tree_zhengRad; private JRadioButton tree_fanRad; private JCheckBox tree_isShowImage; private JLabel label_19; private JTextField tree_showLinkAbsTxt; private JLabel label_20; private JComboBox tree_validityTxt; private JLabel label_21; private JTextField tree_showAbsTxt; private JLabel label_22; private JTextField tree_separatorTxt; private JLabel label_23; private JComboBox tree_linkTypeTxt; private JRadioButton tree_table_relateRdb; private JRadioButton tree_table_rootObjectRdb; private ButtonGroup tree_table_bg1; private JPanel tree_table_gernalDynamicPal; private JPanel form_relatetPal; private JComboBox form_relatCom; private JComboBox form_relateLtCom; private JComboBox form_relateSelectTem; private JPanel form_gernalDynamicPal; private ClickEventInfoPanel cp; private String plPageContextOId; private List firstAttrNames; private List sameKeySecList; private List DifferentKeySecList; private List sameKeyThrList; private List DifferentKeyThrList; private Map/*第二段*/> firSecMap; private Map/*第三段*/> secThrMap; private JLabel lblParser; private VCIJTextArea txtUIParser; private JLabel lblUIParserNote; private final String lblUIParserNoteContent = "" + "" + "

示例:java_cs:xxx;java_bs:xxx;net_cs:xxx;net_bs:xxx;mobile_cs:xx;mobile_bs:xxx;

" + "

1、用英文半角分号;分隔各组值;(这里结尾的是中文字符的分号)

" + "

2、每组用英文半角冒号:分隔单一扩展属性名称及属性值;

" + "

3、其中的xxx是各种解析类的完整类型名称(完全限定名);

" + "

4、输入时,不要敲回车换行;

" + "


" + ""; private JLabel lblExtAttrs; private VCIJTextArea txtExtAtt; private JLabel lblExtAttrNote; private final String lblExtAttrNoteContent = "" + "" + "

示例:ext1:xx;ext2;ext3:xx;ext4:xxx;extn:xxx;

" + "

1、用英文半角分号;分隔各组值;

" + "

2、每组用英文半角冒号:分隔单一扩展属性名称及属性值;

" + "

3、可以定义任意组,但总字符长度不得超过4000;

" + "

4、输入时,不要敲回车换行;

" + "


" + ""; public UIDesinDialog(PLUILayout plpagelayoutdefination, PLPageDefination plPageDefination, String btmName, short disType, PLTabPage pltabpage) { super(LogonApplication.frame, true); setTitle("页面设计窗口"); this.plpagelayoutdefination = plpagelayoutdefination; this.plPageDefination = plPageDefination; this.btmName = btmName; this.disType = disType; this.pltabpage = pltabpage; setBounds(100, 100, 750, 718); init(); initRootCom(); initRootObjCom(); initRelateCom(); initShowType(); initLinkType(); intiValidity(); actionListener(); initData(); initActionControlPanel(); this.setLocationRelativeTo(null); this.setVisible(true); } private void init() { getContentPane().setLayout(new BorderLayout()); { JPanel buttonPane = new JPanel(); getContentPane().add(buttonPane, BorderLayout.SOUTH); buttonPane.setLayout(new BorderLayout(0, 0)); panel_7 = new JPanel(); FlowLayout flowLayout = (FlowLayout) panel_7.getLayout(); flowLayout.setAlignment(FlowLayout.RIGHT); buttonPane.add(panel_7, BorderLayout.SOUTH); { okButton = new JButton("保存"); panel_7.add(okButton); } { cancelButton = new JButton("关闭"); panel_7.add(cancelButton); } cp = new ClickEventInfoPanel(); buttonPane.add(cp, BorderLayout.NORTH); } { northPanel = new JPanel(); getContentPane().add(northPanel, BorderLayout.NORTH); northPanel.setLayout(new BorderLayout(0, 0)); northPanel.add(contentPanel, BorderLayout.NORTH); contentPanel.setBorder(new EmptyBorder(5, 5, 5, 5)); GridBagLayout gbl_contentPanel = new GridBagLayout(); // gbl_contentPanel.columnWidths = new int[] { 0, 0, 0, 0, 0 }; // gbl_contentPanel.rowHeights = new int[] { 0, 0, 0, 0, 0, 0, 0, 0 }; // gbl_contentPanel.columnWeights = new double[] { 0.0, 0.0, 1.0, 1.0, // Double.MIN_VALUE }; // gbl_contentPanel.rowWeights = new double[] { 0.0, 0.0, 1.0, 0.0, // 0.0, 1.0, 1.0, Double.MIN_VALUE }; contentPanel.setLayout(gbl_contentPanel); label_9 = new JLabel("名称"); GridBagConstraints gbc_label_9 = new GridBagConstraints(); gbc_label_9.insets = new Insets(0, 0, 0, 0); gbc_label_9.gridx = 1; gbc_label_9.gridy = 0; contentPanel.add(label_9, gbc_label_9); nameTxt = new VCIJTextField(true); GridBagConstraints gbc_nameTxt = new GridBagConstraints(); gbc_nameTxt.insets = new Insets(0, 0, 0, 0); gbc_nameTxt.fill = GridBagConstraints.BOTH; gbc_nameTxt.gridx = 2; gbc_nameTxt.gridy = 0; // gbc_nameTxt.weightx = 1.0; contentPanel.add(nameTxt, gbc_nameTxt); // nameTxt.setColumns(10); label_11 = new JLabel("编号"); GridBagConstraints gbc_label_11 = new GridBagConstraints(); gbc_label_11.insets = new Insets(0, 0, 0, 0); gbc_label_11.gridx = 1; gbc_label_11.gridy = 1; contentPanel.add(label_11, gbc_label_11); seqTxt = new VCIJIntegerTextField(""); seqTxt.setRequired(true); GridBagConstraints gbc_seqTxt = new GridBagConstraints(); gbc_seqTxt.insets = new Insets(1, 0, 0, 0); gbc_seqTxt.fill = GridBagConstraints.BOTH; gbc_seqTxt.gridx = 2; gbc_seqTxt.gridy = 1; gbc_seqTxt.weightx = 1.0; contentPanel.add(seqTxt, gbc_seqTxt); // seqTxt.setColumns(10); label_10 = new JLabel("描述"); GridBagConstraints gbc_label_10 = new GridBagConstraints(); gbc_label_10.insets = new Insets(0, 0, 0, 0); gbc_label_10.gridx = 3; gbc_label_10.gridy = 0; contentPanel.add(label_10, gbc_label_10); scrollPane = new JScrollPane(); GridBagConstraints gbc_scrollPane = new GridBagConstraints(); gbc_scrollPane.gridheight = 2; gbc_scrollPane.insets = new Insets(0, 0, 0, 0); gbc_scrollPane.fill = GridBagConstraints.BOTH; gbc_scrollPane.gridx = 4; gbc_scrollPane.gridy = 0; gbc_scrollPane.weightx = 1.0; contentPanel.add(scrollPane, gbc_scrollPane); descTxt = new VCIJTextArea(); descTxt.setRows(2); descTxt.setWrapStyleWord(true); descTxt.setLineWrap(true); scrollPane.setViewportView(descTxt); /************************ UI解析类、扩展属性定义 ****************************/ { lblParser = new JLabel("UI解析类"); gbc_scrollPane = new GridBagConstraints(); gbc_scrollPane.insets = new Insets(1, 0, 0, 0); gbc_scrollPane.gridx = 1; gbc_scrollPane.gridy = 3; contentPanel.add(lblParser, gbc_scrollPane); } { scrollPane = new JScrollPane(); gbc_scrollPane = new GridBagConstraints(); gbc_scrollPane.insets = new Insets(1, 0, 0, 0); gbc_scrollPane.fill = GridBagConstraints.BOTH; gbc_scrollPane.gridx = 2; gbc_scrollPane.gridy = 3; contentPanel.add(scrollPane, gbc_scrollPane); { txtUIParser = new VCIJTextArea(); txtUIParser.setRows(2); txtUIParser.setWrapStyleWord(true); txtUIParser.setLineWrap(true); txtUIParser.setToolTipText(lblUIParserNoteContent); scrollPane.setViewportView(txtUIParser); } } { lblExtAttrs = new JLabel("扩展属性"); GridBagConstraints gbc_label_3 = new GridBagConstraints(); gbc_label_3.insets = new Insets(0, 0, 0, 0); gbc_label_3.gridx = 3; gbc_label_3.gridy = 3; contentPanel.add(lblExtAttrs, gbc_label_3); } { scrollPane = new JScrollPane(); gbc_scrollPane = new GridBagConstraints(); gbc_scrollPane.fill = GridBagConstraints.BOTH; gbc_scrollPane.gridx = 4; gbc_scrollPane.gridy = 3; gbc_scrollPane.weightx = 4.0; contentPanel.add(scrollPane, gbc_scrollPane); { txtExtAtt = new VCIJTextArea(); txtExtAtt.setRows(2); txtExtAtt.setWrapStyleWord(true); txtExtAtt.setLineWrap(true); txtExtAtt.setToolTipText(lblExtAttrNoteContent); scrollPane.setViewportView(txtExtAtt); } } /************************ UI解析类、扩展属性定义 ****************************/ { JLabel label = new JLabel("模板类型"); GridBagConstraints gbc_label = new GridBagConstraints(); gbc_label.insets = new Insets(0, 0, 0, 0); gbc_label.gridx = 1; gbc_label.gridy = 5; contentPanel.add(label, gbc_label); } { panel = new JPanel(); FlowLayout flowLayout = (FlowLayout) panel.getLayout(); flowLayout.setAlignment(FlowLayout.LEFT); GridBagConstraints gbc_panel = new GridBagConstraints(); gbc_panel.insets = new Insets(0, 0, 0, 0); gbc_panel.gridwidth = 2; gbc_panel.fill = GridBagConstraints.BOTH; gbc_panel.gridx = 2; gbc_panel.gridy = 5; contentPanel.add(panel, gbc_panel); { tableRadio = new JRadioButton("Table"); tableRadio.setSelected(true); panel.add(tableRadio); } { customRadio = new JRadioButton("自定义模板"); panel.add(customRadio); } { rdbtnTreeTable = new JRadioButton("TreeTable模板"); panel.add(rdbtnTreeTable); } rdbtnForm = new JRadioButton("Form"); panel.add(rdbtnForm); rdbtnTree = new JRadioButton("Tree"); panel.add(rdbtnTree); bg.add(tableRadio); bg.add(customRadio); bg.add(rdbtnTreeTable); bg.add(rdbtnForm); bg.add(rdbtnTree); } } label_2 = new JLabel("显示内容"); GridBagConstraints gbc_label_2 = new GridBagConstraints(); gbc_label_2.insets = new Insets(0, 0, 0, 0); gbc_label_2.gridx = 1; gbc_label_2.gridy = 6; contentPanel.add(label_2, gbc_label_2); panel_1 = new JPanel(); FlowLayout flowLayout = (FlowLayout) panel_1.getLayout(); flowLayout.setAlignment(FlowLayout.LEFT); GridBagConstraints gbc_panel_1 = new GridBagConstraints(); gbc_panel_1.gridwidth = 2; gbc_panel_1.fill = GridBagConstraints.BOTH; gbc_panel_1.gridx = 2; gbc_panel_1.gridy = 6; contentPanel.add(panel_1, gbc_panel_1); ButtonGroup navigatorbg = new ButtonGroup(); navigatornodisply = new JRadioButton("不显示"); navigatornodisply.setSelected(true); panel_1.add(navigatornodisply); navigatorbg.add(navigatornodisply); navigatorrole = new JRadioButton("显示角色"); panel_1.add(navigatorrole); navigatorbg.add(navigatorrole); navigatorfold = new JRadioButton("显示fold"); panel_1.add(navigatorfold); navigatorbg.add(navigatorfold); setgernaralPanel(); setTree_table_gernaralPanel(); setCustomPanel(); dynamicPal = new JPanel(); dynamicPal.setLayout(new BorderLayout(0, 0)); //test // dynamicPal.add(tableGernaralPanel, BorderLayout.NORTH); // dynamicPal.add(tree_tableGernaralPanel, BorderLayout.NORTH); treePanel = new JPanel(); formPanel = new JPanel(); treeTablePanel = new JPanel(); gernalDynamicPal = new JPanel(); tree_table_gernalDynamicPal = new JPanel(); form_gernalDynamicPal = new JPanel(); form_gernalDynamicPal.setLayout(new BorderLayout()); setTreeTablePanel(); setRelatePanel(); setFormRelatePanel(); setTree_table_RelatePal(); setrootObjectPanel(); setFormPanel(); setTreePanel(); gernalDynamicPal.add(tableObjectPal); dynamicPal.add(gernalDynamicPal); dynamicPal.add(tree_table_gernalDynamicPal); form_rootPal = new JPanel(); setFormRootPanel(); getContentPane().add(dynamicPal, BorderLayout.CENTER); // gernalDynamicPal.add(treeTablePanel, BorderLayout.CENTER); } private void setFormRootPanel() { GridBagLayout gbl_form_rootPal = new GridBagLayout(); gbl_form_rootPal.columnWidths = new int[]{0, 54, 0, 0}; gbl_form_rootPal.rowHeights = new int[]{15, 0, 0}; gbl_form_rootPal.columnWeights = new double[]{0.0, 0.0, 1.0, Double.MIN_VALUE}; gbl_form_rootPal.rowWeights = new double[]{0.0, 0.0, Double.MIN_VALUE}; form_rootPal.setLayout(gbl_form_rootPal); label_14 = new JLabel("目标对象"); GridBagConstraints gbc_label_14 = new GridBagConstraints(); gbc_label_14.insets = new Insets(0, 0, 5, 5); gbc_label_14.gridx = 1; gbc_label_14.gridy = 0; form_rootPal.add(label_14, gbc_label_14); rootObjCom = new JComboBox(); GridBagConstraints gbc_rootObjCom = new GridBagConstraints(); gbc_rootObjCom.insets = new Insets(0, 0, 5, 0); gbc_rootObjCom.fill = GridBagConstraints.HORIZONTAL; gbc_rootObjCom.gridx = 2; gbc_rootObjCom.gridy = 0; gbc_rootObjCom.gridwidth = 3; form_rootPal.add(rootObjCom, gbc_rootObjCom); label_15 = new JLabel("选择模板"); GridBagConstraints gbc_label_15 = new GridBagConstraints(); gbc_label_15.insets = new Insets(0, 0, 0, 5); gbc_label_15.gridx = 1; gbc_label_15.gridy = 1; form_rootPal.add(label_15, gbc_label_15); rootObjSelectCom = new JComboBox(); GridBagConstraints gbc_rootObjSelectCom = new GridBagConstraints(); gbc_rootObjCom.insets = new Insets(0, 0, 0, 0); gbc_rootObjSelectCom.fill = GridBagConstraints.HORIZONTAL; gbc_rootObjSelectCom.gridx = 2; gbc_rootObjSelectCom.gridy = 1; form_rootPal.add(rootObjSelectCom, gbc_rootObjSelectCom); //==add by guo==当模板类型为Form且对象为业务类型的时候,添加模板 createPOForm = new JButton("+"); GridBagConstraints gbc_createPOForm = new GridBagConstraints(); gbc_createPOForm.gridx = 3; gbc_createPOForm.gridy = 1; form_rootPal.add(createPOForm, gbc_createPOForm); //编辑业务类型的Form模板 editPOForm = new JButton("编辑"); GridBagConstraints gbc_editPOForm = new GridBagConstraints(); gbc_editPOForm.gridx = 4; gbc_editPOForm.gridy = 1; form_rootPal.add(editPOForm, gbc_editPOForm); } private void setTree_table_RelatePal() { tree_table_RelatePal = new JPanel(); tree_table_gernalDynamicPal.setLayout(new BorderLayout()); GridBagLayout gbl_tree_table_RelatePal = new GridBagLayout(); gbl_tree_table_RelatePal.columnWidths = new int[]{0, 0, 0}; gbl_tree_table_RelatePal.rowHeights = new int[]{0, 0, 0, 0, 0, 0}; gbl_tree_table_RelatePal.columnWeights = new double[]{0.0, 1.0, Double.MIN_VALUE}; gbl_tree_table_RelatePal.rowWeights = new double[]{0.0, 0.0, 0.0, 0.0, 0.0, Double.MIN_VALUE}; tree_table_RelatePal.setLayout(gbl_tree_table_RelatePal); label_3 = new JLabel("顶级节点显示类型"); GridBagConstraints gbc_label_3 = new GridBagConstraints(); gbc_label_3.insets = new Insets(0, 0, 5, 5); gbc_label_3.anchor = GridBagConstraints.EAST; gbc_label_3.gridx = 0; gbc_label_3.gridy = 0; tree_table_RelatePal.add(label_3, gbc_label_3); tree_table_relatCom = new JComboBox(); GridBagConstraints gbc_tree_table_relatCom = new GridBagConstraints(); gbc_tree_table_relatCom.insets = new Insets(0, 0, 5, 0); gbc_tree_table_relatCom.fill = GridBagConstraints.HORIZONTAL; gbc_tree_table_relatCom.gridx = 1; gbc_tree_table_relatCom.gridy = 0; gbc_tree_table_relatCom.gridwidth = 3; tree_table_RelatePal.add(tree_table_relatCom, gbc_tree_table_relatCom); lblNewLabel_3 = new JLabel("LinkType"); GridBagConstraints gbc_lblNewLabel_3 = new GridBagConstraints(); gbc_lblNewLabel_3.insets = new Insets(0, 0, 5, 5); gbc_lblNewLabel_3.gridx = 0; gbc_lblNewLabel_3.gridy = 1; tree_table_RelatePal.add(lblNewLabel_3, gbc_lblNewLabel_3); tree_table_relateLtCom = new JComboBox(); GridBagConstraints gbc_tree_table_relateLtCom = new GridBagConstraints(); gbc_tree_table_relateLtCom.insets = new Insets(0, 0, 5, 0); gbc_tree_table_relateLtCom.fill = GridBagConstraints.HORIZONTAL; gbc_tree_table_relateLtCom.gridx = 1; gbc_tree_table_relateLtCom.gridy = 1; gbc_tree_table_relateLtCom.gridwidth = 3; tree_table_RelatePal.add(tree_table_relateLtCom, gbc_tree_table_relateLtCom); label_6 = new JLabel("选择模板"); GridBagConstraints gbc_label_6 = new GridBagConstraints(); gbc_label_6.insets = new Insets(0, 0, 5, 5); gbc_label_6.gridx = 0; gbc_label_6.gridy = 2; tree_table_RelatePal.add(label_6, gbc_label_6); tree_table_relateSelectTem = new JComboBox(); GridBagConstraints gbc_tree_table_relateSelectTem = new GridBagConstraints(); gbc_tree_table_relateSelectTem.insets = new Insets(0, 0, 5, 0); gbc_tree_table_relateSelectTem.fill = GridBagConstraints.HORIZONTAL; gbc_tree_table_relateSelectTem.gridx = 1; gbc_tree_table_relateSelectTem.gridy = 2; tree_table_RelatePal.add(tree_table_relateSelectTem, gbc_tree_table_relateSelectTem); //==add by guo==当模板类型为TreeTable且对象为链接类型的时候,添加模板 createLOTreeTable = new JButton("+"); GridBagConstraints gbc_createLOTreeTable = new GridBagConstraints(); gbc_createLOTreeTable.gridx = 2; gbc_createLOTreeTable.gridy = 2; tree_table_RelatePal.add(createLOTreeTable, gbc_createLOTreeTable); //编辑链接类型的TreeTable模板 editLOTreeTable = new JButton("编辑"); GridBagConstraints gbc_editLOTreeTable = new GridBagConstraints(); gbc_editLOTreeTable.gridx = 3; gbc_editLOTreeTable.gridy = 2; tree_table_RelatePal.add(editLOTreeTable, gbc_editLOTreeTable); label_7 = new JLabel("展开方式"); GridBagConstraints gbc_label_7 = new GridBagConstraints(); gbc_label_7.insets = new Insets(0, 0, 5, 5); gbc_label_7.gridx = 0; gbc_label_7.gridy = 3; tree_table_RelatePal.add(label_7, gbc_label_7); panel_2 = new JPanel(); GridBagConstraints gbc_panel_2 = new GridBagConstraints(); gbc_panel_2.insets = new Insets(0, 0, 5, 0); gbc_panel_2.fill = GridBagConstraints.BOTH; gbc_panel_2.gridx = 1; gbc_panel_2.gridy = 3; tree_table_RelatePal.add(panel_2, gbc_panel_2); ButtonGroup bg = new ButtonGroup(); tree_table_R_graduallyRad = new JRadioButton("逐级展开"); tree_table_R_graduallyRad.setSelected(true); panel_2.add(tree_table_R_graduallyRad); tree_table_R_allRad = new JRadioButton("全部展开"); panel_2.add(tree_table_R_allRad); bg.add(tree_table_R_graduallyRad); bg.add(tree_table_R_allRad); label_8 = new JLabel("树形结构展开列"); GridBagConstraints gbc_label_8 = new GridBagConstraints(); gbc_label_8.anchor = GridBagConstraints.EAST; gbc_label_8.insets = new Insets(0, 0, 0, 5); gbc_label_8.gridx = 0; gbc_label_8.gridy = 4; tree_table_RelatePal.add(label_8, gbc_label_8); tree_table_R_expandColsTxt = new JTextField(); tree_table_R_expandColsTxt.setColumns(10); GridBagConstraints gbc_textField = new GridBagConstraints(); gbc_textField.fill = GridBagConstraints.HORIZONTAL; gbc_textField.gridx = 1; gbc_textField.gridy = 4; tree_table_RelatePal.add(tree_table_R_expandColsTxt, gbc_textField); } private void setTreePanel() { GridBagLayout gbl_treePanel = new GridBagLayout(); gbl_treePanel.columnWidths = new int[] { 0, 0, 0, 0, 0 }; gbl_treePanel.rowHeights = new int[] { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }; gbl_treePanel.columnWeights = new double[] { 0.0, 1.0, 1.0, 0.0, Double.MIN_VALUE }; gbl_treePanel.rowWeights = new double[] { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, Double.MIN_VALUE }; treePanel.setLayout(gbl_treePanel); label_16 = new JLabel("业务类型"); GridBagConstraints gbc_label_16 = new GridBagConstraints(); gbc_label_16.insets = new Insets(0, 0, 5, 5); gbc_label_16.gridx = 1; gbc_label_16.gridy = 0; treePanel.add(label_16, gbc_label_16); tree_showTypeTxt = new JComboBox(); /*tree_showTypeTxt.setEnabled(false); tree_showTypeTxt.setEditable(false);*/ tree_showTypeTxt.setToolTipText("针对参照树有效!"); GridBagConstraints gbc_tree_showTypeTxt = new GridBagConstraints(); gbc_tree_showTypeTxt.fill = GridBagConstraints.HORIZONTAL; gbc_tree_showTypeTxt.insets = new Insets(0, 0, 5, 5); gbc_tree_showTypeTxt.gridx = 2; gbc_tree_showTypeTxt.gridy = 0; treePanel.add(tree_showTypeTxt, gbc_tree_showTypeTxt); label_17 = new JLabel("展开方式"); GridBagConstraints gbc_label_17 = new GridBagConstraints(); gbc_label_17.insets = new Insets(0, 0, 5, 5); gbc_label_17.gridx = 1; gbc_label_17.gridy = 1; treePanel.add(label_17, gbc_label_17); panel_4 = new JPanel(); FlowLayout flowLayout = (FlowLayout) panel_4.getLayout(); flowLayout.setAlignment(FlowLayout.LEFT); GridBagConstraints gbc_panel_4 = new GridBagConstraints(); gbc_panel_4.fill = GridBagConstraints.BOTH; gbc_panel_4.insets = new Insets(0, 0, 5, 5); gbc_panel_4.gridx = 2; gbc_panel_4.gridy = 1; treePanel.add(panel_4, gbc_panel_4); tree_graduallyRad = new JRadioButton("逐级展开"); tree_graduallyRad.setSelected(true); panel_4.add(tree_graduallyRad); tree_allRad = new JRadioButton("全部展开"); panel_4.add(tree_allRad); ButtonGroup bgTreeExpand = new ButtonGroup(); bgTreeExpand.add(tree_graduallyRad); bgTreeExpand.add(tree_allRad); label_18 = new JLabel("展开方向"); GridBagConstraints gbc_label_18 = new GridBagConstraints(); gbc_label_18.insets = new Insets(0, 0, 5, 5); gbc_label_18.gridx = 1; gbc_label_18.gridy = 2; treePanel.add(label_18, gbc_label_18); panel_5 = new JPanel(); FlowLayout flowLayout_1 = (FlowLayout) panel_5.getLayout(); flowLayout_1.setAlignment(FlowLayout.LEFT); GridBagConstraints gbc_panel_5 = new GridBagConstraints(); gbc_panel_5.fill = GridBagConstraints.BOTH; gbc_panel_5.insets = new Insets(0, 0, 5, 5); gbc_panel_5.gridx = 2; gbc_panel_5.gridy = 2; treePanel.add(panel_5, gbc_panel_5); tree_zhengRad = new JRadioButton("正向"); tree_zhengRad.setToolTipText("以Link查询模板设置为准,该设置可废弃!"); tree_zhengRad.setSelected(true); panel_5.add(tree_zhengRad); tree_fanRad = new JRadioButton("反向"); tree_fanRad.setToolTipText("以Link查询模板设置为准,该设置可废弃!"); panel_5.add(tree_fanRad); ButtonGroup bgTreeExpandDirect = new ButtonGroup(); bgTreeExpandDirect.add(tree_zhengRad); bgTreeExpandDirect.add(tree_fanRad); tree_isShowImage = new JCheckBox("显示图标"); panel_5.add(tree_isShowImage); label_19 = new JLabel("参照树设置");//显示link属性 GridBagConstraints gbc_label_19 = new GridBagConstraints(); gbc_label_19.insets = new Insets(0, 0, 5, 5); gbc_label_19.gridx = 1; gbc_label_19.gridy = 3; treePanel.add(label_19, gbc_label_19); tree_showLinkAbsTxt = new JTextField(); /*tree_showLinkAbsTxt.setEditable(false);*/ tree_showLinkAbsTxt.setToolTipText("格式为:\"参照属性,根节点虚拟OID\",其中\"根节点虚拟OID\"可为任意字符"); tree_showLinkAbsTxt.setColumns(10); GridBagConstraints gbc_tree_showLinkAbsTxt = new GridBagConstraints(); gbc_tree_showLinkAbsTxt.fill = GridBagConstraints.HORIZONTAL; gbc_tree_showLinkAbsTxt.insets = new Insets(0, 0, 5, 5); gbc_tree_showLinkAbsTxt.gridx = 2; gbc_tree_showLinkAbsTxt.gridy = 3; treePanel.add(tree_showLinkAbsTxt, gbc_tree_showLinkAbsTxt); label_20 = new JLabel("有效性"); label_20.setToolTipText("有效性设置以查询模板为准,该有效性设置可废弃!"); GridBagConstraints gbc_label_20 = new GridBagConstraints(); gbc_label_20.insets = new Insets(0, 0, 5, 5); gbc_label_20.gridx = 1; gbc_label_20.gridy = 4; treePanel.add(label_20, gbc_label_20); tree_validityTxt = new JComboBox(); tree_validityTxt.setToolTipText("有效性设置以查询模板为准,该有效性设置可废弃!"); tree_validityTxt.setEditable(false); tree_validityTxt.setEnabled(false); GridBagConstraints gbc_tree_validityTxt = new GridBagConstraints(); gbc_tree_validityTxt.fill = GridBagConstraints.HORIZONTAL; gbc_tree_validityTxt.insets = new Insets(0, 0, 5, 5); gbc_tree_validityTxt.gridx = 2; gbc_tree_validityTxt.gridy = 4; treePanel.add(tree_validityTxt, gbc_tree_validityTxt); label_21 = new JLabel("树节点显示表达式"); GridBagConstraints gbc_label_21 = new GridBagConstraints(); gbc_label_21.insets = new Insets(0, 0, 5, 5); gbc_label_21.gridx = 1; gbc_label_21.gridy = 5; treePanel.add(label_21, gbc_label_21); tree_showAbsTxt = new JTextField(); tree_showAbsTxt.setHorizontalAlignment(JTextField.LEFT); tree_showAbsTxt.setToolTipText("树节点显示表达式示例:${t_oid.name},数量:${quantity},所属产品:${t_oid.ownproduct.name}"); tree_showAbsTxt.setColumns(100); GridBagConstraints gbc_tree_showAbsTxt = new GridBagConstraints(); gbc_tree_showAbsTxt.fill = GridBagConstraints.HORIZONTAL; gbc_tree_showAbsTxt.insets = new Insets(0, 0, 5, 5); gbc_tree_showAbsTxt.gridx = 2; gbc_tree_showAbsTxt.gridy = 5; treePanel.add(tree_showAbsTxt, gbc_tree_showAbsTxt); //失去焦点时判断设置的正确性(如果是表达式需校验表达式的正确性) //表单式判断参考:plm.uif.engine.client.TreePanel.isFreemarkExpression(); //同时根据当前所选的链接类型(tree_linkTypeTxt)或业务类型(tree_showTypeTxt)的属性判断表达式中变量(即属性)的正确性,具体参考:plm.uif.engine.client.tree.appendToValueMapExt //如果存在问题提示用户,并标红提示 //判断输入的格式是否正确 tree_showAbsTxt.addFocusListener(new FocusListener() { @Override public void focusLost(FocusEvent e) { tree_showAbsTxt.setForeground(Color.black); String rtnContent = isTreeNodeShowExpress(tree_showAbsTxt.getText()); if (!rtnContent.equals("")) { VCIOptionPane.showError(UIDesinDialog.this, "树节点显示表达式校验:" +rtnContent); tree_showAbsTxt.setForeground(Color.red); } } @Override public void focusGained(FocusEvent e) { } }); label_22 = new JLabel("分隔符"); label_22.setToolTipText("分隔符在树节点显示表达式中统一定义,该分隔符设置可废弃!"); GridBagConstraints gbc_label_22 = new GridBagConstraints(); gbc_label_22.insets = new Insets(0, 0, 5, 5); gbc_label_22.gridx = 1; gbc_label_22.gridy = 6; treePanel.add(label_22, gbc_label_22); tree_separatorTxt = new JTextField(); tree_separatorTxt.setToolTipText("分隔符在树节点显示表达式中统一定义,该分隔符设置可废弃!"); tree_separatorTxt.setEditable(false); tree_separatorTxt.setColumns(10); tree_separatorTxt.setText(","); GridBagConstraints gbc_tree_separatorTxt = new GridBagConstraints(); gbc_tree_separatorTxt.fill = GridBagConstraints.HORIZONTAL; gbc_tree_separatorTxt.insets = new Insets(0, 0, 5, 5); gbc_tree_separatorTxt.gridx = 2; gbc_tree_separatorTxt.gridy = 6; treePanel.add(tree_separatorTxt, gbc_tree_separatorTxt); label_23 = new JLabel("链接类型"); GridBagConstraints gbc_label_23 = new GridBagConstraints(); gbc_label_23.insets = new Insets(0, 0, 5, 5); gbc_label_23.gridx = 1; gbc_label_23.gridy = 7; treePanel.add(label_23, gbc_label_23); tree_linkTypeTxt = new JComboBox(); tree_linkTypeTxt.setToolTipText("设置了链接类型,那么参照树设置就失效!"); GridBagConstraints gbc_tree_linkTypeTxt = new GridBagConstraints(); gbc_tree_linkTypeTxt.fill = GridBagConstraints.HORIZONTAL; gbc_tree_linkTypeTxt.insets = new Insets(0, 0, 5, 5); gbc_tree_linkTypeTxt.gridx = 2; gbc_tree_linkTypeTxt.gridy = 7; treePanel.add(tree_linkTypeTxt, gbc_tree_linkTypeTxt); getContentPane().add(treePanel, BorderLayout.CENTER); label_24 = new JLabel("查询模板"); GridBagConstraints gbc_label_24 = new GridBagConstraints(); gbc_label_24.insets = new Insets(0, 0, 0, 5); gbc_label_24.gridx = 1; gbc_label_24.gridy = 8; treePanel.add(label_24, gbc_label_24); tree_templateIdCom = new JComboBox(); tree_templateIdCom.setToolTipText("如设置了链接类型,那么就业务类型失效!"); GridBagConstraints gbc_tree_templateIdCom = new GridBagConstraints(); gbc_tree_templateIdCom.insets = new Insets(0, 0, 0, 5); gbc_tree_templateIdCom.fill = GridBagConstraints.HORIZONTAL; gbc_tree_templateIdCom.gridx = 2; gbc_tree_templateIdCom.gridy = 8; treePanel.add(tree_templateIdCom, gbc_tree_templateIdCom); label_25 = new JLabel("根节点显示表达式"); GridBagConstraints gbc_label_25 = new GridBagConstraints(); gbc_label_25.insets = new Insets(0, 0, 0, 5); gbc_label_25.gridx = 1; gbc_label_25.gridy = 9; treePanel.add(label_25, gbc_label_25); txtTreeRootContent = new JTextField(); /*txtTreeRootContent.setEditable(false);*/ txtTreeRootContent.setToolTipText("根节点显示可单独设置(具体跟\"树节点显示\"一样),如不设置就按照子孙节点一样显示!"); GridBagConstraints gbc_txtRootContent = new GridBagConstraints(); gbc_txtRootContent.insets = new Insets(0, 0, 0, 5); gbc_txtRootContent.fill = GridBagConstraints.HORIZONTAL; gbc_txtRootContent.gridx = 2; gbc_txtRootContent.gridy = 9; treePanel.add(txtTreeRootContent, gbc_txtRootContent); txtTreeRootContent.addFocusListener(new FocusListener() { @Override public void focusLost(FocusEvent e) { // TODO:失去焦点时判断设置的正确性(如果是表达式需校验表达式的正确性) //表单式判断参考:plm.uif.engine.client.TreePanel.isFreemarkExpression(); //同时根据当前所选的链接类型(tree_linkTypeTxt)或业务类型(tree_showTypeTxt)的属性判断表达式中变量(即属性)的正确性,具体参考:plm.uif.engine.client.tree.appendToValueMapExt //如果存在问题提示用户,并标红提示 txtTreeRootContent.setForeground(Color.black); String rtnContent = isTreeNodeShowExpress(txtTreeRootContent.getText()); if (!rtnContent.equals("")) { VCIOptionPane.showError(UIDesinDialog.this, "根节点显示表达式校验:" + rtnContent); txtTreeRootContent.setForeground(Color.red); } } @Override public void focusGained(FocusEvent e) { } }); } private String isTreeNodeShowExpress(String showExpress){ //,String firstStringOfLable if (showExpress == null || showExpress.trim().equals("")) { return ""; } String rtnStr =isFreemarkExpression(showExpress); if(rtnStr.equals("")){ //,firstStringOfLable //判断表达式中的属性是否属于所选的链接类型 String bussinessType = tree_showTypeTxt.getSelectedItem()+""; String linkTypeTxt = tree_linkTypeTxt.getSelectedItem()+""; if(linkTypeTxt.equals("")){ //如果链接类型为空,则判断表达式中的属性是否属于所选的业务类型 //${name},数量:${quantity.XXX},所属产品:${ownproduct.name} try { //[CODE, KEYINFOS, MATERIALNAME, MATERIALSPECS, MATERIALTRADEMARK, PARTSOURCE, PARTTYPE, WEIGHT, GZ, OWNPRODUCT, BIZDOMAIN, POINTLINETYPE, SECRETGRADE, THUMBNAILPATH, USEMATERIAL, VIRTUALSOURCE, VIRTUALSOURCEMDV, ICONFILEPATH, ISDEFAULT, OID, REVISIONOID, NAMEOID, BTMNAME, ISLASTR, ISFIRSTR, ISLASTV, ISFIRSTV, CREATOR, CREATETIME, LASTMODIFIER, LASTMODIFYTIME, REVISIONRULE, VERSIONRULE, REVISIONSEQ, REVISIONVALUE, VERSIONSEQ, VERSIONVALUE, LCTID, LCSTATUS, TS, ID, NAME, DESCRIPTION, OWNER, CHECKINBY, CHECKINTIME, CHECKOUTBY, CHECKOUTTIME, COPYFROMVERSION] List sumList = getTypeAllPropertys(bussinessType,false); for (String firstAttrName: firstAttrNames) { //valueList:{name,quantity,ownproduct,...} if(!sumList.contains(firstAttrName)){ //value = "ownproduct" //VCIOptionPane.showError(UIDesinDialog.this, firstStringOfLable+"节点显示的"+firstAttrName+"属性有误,请核对后再填写!"); //tree_showAbsTxt.setForeground(Color.RED); //replace("不存在属性","") return "节点显示的"+firstAttrName+"属性有误,请核对后再填写!"; }else { //第二段的计算:String secValue = value.? = "ownproduct" //String[] btms = BtmClient.getService().getBTMNamesByAPName(firstAttrName.toLowerCase());// -->part 此API有误 //btms[0]获取属性(即part的所有属性) //没有属性的时候,不执行 AttribItem attribItem = ApProvider.getAbItemByName(firstAttrName.toLowerCase()); OtherInfo otherInfo = OtherInfo.getOtherInfoByText(attribItem.other); String refTypeName = otherInfo.getRefTypeName(); List secAttrNames = firSecMap.get(firstAttrName); if(refTypeName!=null&&!refTypeName.equals("")){ //firstAttrName是参照属性 List refTypeAttrs = getTypeAllPropertys(refTypeName, false); //二段属性 //参照类型的属性(如"Part"的所有属性) if(secAttrNames!=null&&secAttrNames.size()>0){ for (String secAttrName : secAttrNames) { if (!refTypeAttrs.contains(secAttrName)) { //VCIOptionPane.showError(UIDesinDialog.this, firstStringOfLable+"节点显示的"+firstAttrName+"."+secAttrName+"属性有误,请核对后再填写!"); //tree_showAbsTxt.setForeground(Color.RED); return "节点显示的"+firstAttrName+"."+secAttrName+"属性有误,请核对后再填写!"; } } } }else { //firstAttrName不是参照属性,那么 “ownproduct.name”就错了 if (firSecMap.containsKey(firstAttrName)) { for (String secAttrName : secAttrNames) { //VCIOptionPane.showError(UIDesinDialog.this, firstStringOfLable+"树节点显示"+firstAttrName+"."+secAttrName+"有误,请核对后再填写!"); //tree_showAbsTxt.setForeground(Color.RED); return "树节点显示"+firstAttrName+"."+secAttrName+"有误,请核对后再填写!"; } } } } } } catch (VCIError e1) { e1.printStackTrace(); } catch (Exception e1) { e1.printStackTrace(); } catch (Throwable e1) { e1.printStackTrace(); } }else { //如果链接类型不为空,则判断表达式中的属性是否属于所选的链接类型 //${t_oid.name},数量:${quantity},所属产品:${f_oid.ownproduct.name} try { //所有的链接类型属性:[LINKDESCRIPTION, QUANTITY, SEQUENCE, OID, CREATOR, CREATETIME, LASTMODIFIER, LASTMODIFYTIME, F_OID, F_REVISIONOID, F_NAMEOID, F_BTWNAME, T_OID, T_REVISIONOID, T_NAMEOID, T_BTWNAME, TS] List linkAllAttrNames = getTypeAllPropertys(linkTypeTxt,true); LinkType linkType = LinkTypeProvider.getInstance().getLinkTypeByName(linkTypeTxt); //linkTypeTxt = 'ebom' for (String firstAttrName: firstAttrNames) { if(!linkAllAttrNames.contains(firstAttrName)){ //VCIOptionPane.showError(UIDesinDialog.this, firstStringOfLable+"节点显示的属性"+firstAttrName+"有误,请核对后再填写!"); //tree_showAbsTxt.setForeground(Color.RED); return "节点显示的属性"+firstAttrName+"有误,请核对后再填写!"; }else { //获取链接类型的btmItemsTo/from属性(判断第二段) if(firstAttrName.equals("T_OID")){ String[] toBtmNames = linkType.btmItemsTo; //btmToStrings[0] = "part" 获取类型 String rtnContent = processT_OIDOrF_OID(toBtmNames, firstAttrName); if(!rtnContent.equals("")){ return rtnContent; } }else if(firstAttrName.equals("F_OID")){ String[] toBtmNames = linkType.btmItemsFrom; String rtnContent = processT_OIDOrF_OID(toBtmNames, firstAttrName); if(!rtnContent.equals("")){ return rtnContent; } } else { // Link的第一段是其它参照属性时 //String[] btms = BtmClient.getService().getBTMNamesByAPName(firstAttrName.toLowerCase());// -->part // 没有属性的时候,不执行 AttribItem attribItem = ApProvider.getAbItemByName(firstAttrName.toLowerCase()); OtherInfo otherInfo = OtherInfo.getOtherInfoByText(attribItem.other); String refTypeName = otherInfo.getRefTypeName(); List secAttrNames = firSecMap .get(firstAttrName); if (refTypeName!=null&&!refTypeName.equals("")) { // firstAttrName是参照属性 List refTypeAttrs = getTypeAllPropertys( refTypeName, false); // 二段属性 // //参照类型的属性(如"Part"的所有属性) if(secAttrNames!=null&&secAttrNames.size()>0){ for (String secAttrName : secAttrNames) { if (!refTypeAttrs .contains(secAttrName)) { /*VCIOptionPane .showError( UIDesinDialog.this, firstStringOfLable+"节点显示的" + firstAttrName + "." + secAttrName + "属性有误,请核对后再填写!");*/ /*tree_showAbsTxt .setForeground(Color.RED);*/ return "节点显示的" + firstAttrName + "." + secAttrName + "属性有误,请核对后再填写!"; }//如果包含,判断第三段属性是否属于对应的类型 //String[] thBtms = BtmClient.getService().getBTMNamesByAPName(secAttrName.toLowerCase()); AttribItem thrAttribItem = ApProvider.getAbItemByName(secAttrName.toLowerCase()); OtherInfo thrOtherInfo = OtherInfo.getOtherInfoByText(thrAttribItem.other); String thrRefTypeName = thrOtherInfo.getRefTypeName(); List thrAttrNames= secThrMap.get(secAttrName); if(thrRefTypeName!=null&&!thrRefTypeName.equals("")){ //第二段是参照属性 List thrRefTypeAttrs = getTypeAllPropertys(thrRefTypeName, true); if(thrAttrNames!=null&&thrAttrNames.size()>0){ for (String thrAttrName : thrRefTypeAttrs) { if(!refTypeAttrs.contains(thrAttrName)){ //VCIOptionPane.showError(UIDesinDialog.this, firstStringOfLable+"节点显示的属性"+thrAttrName+"有误,请核对后再填写!"); //tree_showAbsTxt.setForeground(Color.RED); return "节点显示的属性"+thrAttrName+"有误,请核对后再填写!"; } } } }else { //第二段不是参照属性 if (firSecMap.containsKey(secAttrName)) { if(thrAttrNames!=null&&thrAttrNames.size()>0){ for (String thrAttrName : thrAttrNames) { //VCIOptionPane.showError(UIDesinDialog.this, firstStringOfLable+"节点显示"+secAttrName+"."+thrAttrName+"有误,请核对后再填写!"); //tree_showAbsTxt.setForeground(Color.RED); return "节点显示"+secAttrName+"."+thrAttrName+"有误,请核对后再填写!"; } } } } } } } else { // 第一段不是参照属性 if (secAttrNames != null && secAttrNames.size() > 0) { for (String secAttrName : secAttrNames) { /*VCIOptionPane .showError( UIDesinDialog.this, firstStringOfLable+"节点显示" + firstAttrName + "." + secAttrName + "有误,请核对后再填写!");*/ /*tree_showAbsTxt .setForeground(Color.RED);*/ return "节点显示" + firstAttrName + "." + secAttrName + "有误,请核对后再填写!"; } } } } } } } catch (Exception e1) { e1.printStackTrace(); } catch (Throwable e1) { e1.printStackTrace(); } } return ""; }else { //VCIOptionPane.showError(UIDesinDialog.this, "树节点显示的格式有误,请核对后再填写"); //tree_showAbsTxt.setForeground(Color.RED); return rtnStr; } } /**T_OID或F_OID处理 * @throws Throwable */ private String processT_OIDOrF_OID(String[] btmNames,String firstAttrName) throws Throwable{ //,String firstStringOfLable //当链接类型为T_OID/F_OID时,判断参照属性(比如ownproduct)是否符合t_oid/f_oid的链接类型的属性 -->part //to和from端有可能存在多种类型,将这些类型所包含的属性集合,放入大集合 List toAllAttrNames = new ArrayList(); for (String btmName : btmNames) { List btmPropertys = getTypeAllPropertys(btmName,false); /*List btmPropertysList=new ArrayList(); for(String bt:btmPropertys){ String btmStrs = bt.toUpperCase(); btmPropertysList.add(btmStrs); }*/ //所有的to端类型的属性集合[CODE, KEYINFOS, MATERIALNAME, MATERIALSPECS, MATERIALTRADEMARK, PARTSOURCE, PARTTYPE, WEIGHT, GZ, OWNPRODUCT, BIZDOMAIN, POINTLINETYPE, SECRETGRADE, THUMBNAILPATH, USEMATERIAL, VIRTUALSOURCE, VIRTUALSOURCEMDV, ICONFILEPATH, ISDEFAULT] toAllAttrNames.addAll(btmPropertys); } //判断第二段属性是否属于to端类型的所有属性 List secAttrNames =firSecMap.get(firstAttrName) ; //-->NAME(属于) OWNPRODUCT(属于) CODE(属于) if(secAttrNames!=null&&secAttrNames.size()>0){ for (String secAttrName : secAttrNames) { if(!toAllAttrNames.contains(secAttrName)){ //VCIOptionPane.showError(UIDesinDialog.this, firstStringOfLable+"节点显示的属性"+firstAttrName+"."+secAttrName+"有误,请核对后再填写!"); //tree_showAbsTxt.setForeground(Color.RED); return "节点显示的属性"+firstAttrName+"."+secAttrName+"有误,请核对后再填写!"; }else { //如果包含,判断第三段属性是否属于对应的类型 //String[] btms = BtmClient.getService().getBTMNamesByAPName(secAttrName.toLowerCase()); AttribItem attribItem = ApProvider.getAbItemByName(secAttrName.toLowerCase()); OtherInfo otherInfo = OtherInfo.getOtherInfoByText(attribItem.other); String refTypeName = otherInfo.getRefTypeName(); List thrAttrNames= secThrMap.get(secAttrName); if(refTypeName!=null&&!refTypeName.equals("")){ List refTypeAttrs = getTypeAllPropertys(refTypeName, false); //[CODE, KEYINFOS, MATERIALNAME, MATERIALSPECS, MATERIALTRADEMARK, PARTSOURCE, PARTTYPE, WEIGHT, GZ, OWNPRODUCT, BIZDOMAIN, POINTLINETYPE, SECRETGRADE, THUMBNAILPATH, USEMATERIAL, VIRTUALSOURCE, VIRTUALSOURCEMDV, ICONFILEPATH, ISDEFAULT, OID, CREATOR, CREATETIME, LASTMODIFIER, LASTMODIFYTIME, F_OID, F_REVISIONOID, F_NAMEOID, F_BTWNAME, T_OID, T_REVISIONOID, T_NAMEOID, T_BTWNAME, TS] if(thrAttrNames!=null&&thrAttrNames.size()>0){ for (String thrAttrName : thrAttrNames) { if(!refTypeAttrs.contains(thrAttrName)){ //VCIOptionPane.showError(UIDesinDialog.this, firstStringOfLable+"节点显示的属性"+firstAttrName+"."+secAttrName+"."+thrAttrName+"有误,请核对后再填写!"); //tree_showAbsTxt.setForeground(Color.RED); return "节点显示的属性"+firstAttrName+"."+secAttrName+"."+thrAttrName+"有误,请核对后再填写!"; } } } }else { if(thrAttrNames!=null&&thrAttrNames.size()>0){ for (String thrAttrName : thrAttrNames) { //VCIOptionPane.showError(UIDesinDialog.this, firstStringOfLable+"节点显示"+firstAttrName+"."+secAttrName+"."+thrAttrName+"有误,请核对后再填写!"); //tree_showAbsTxt.setForeground(Color.RED); return "节点显示"+firstAttrName+"."+secAttrName+"."+thrAttrName+"有误,请核对后再填写!"; } } } } } } return ""; } /**获取所有的业务/链接类型属性*/ private List getTypeAllPropertys(String typeName,boolean isLink) throws Throwable{ List sumPropertys=new ArrayList(); //所有的业务类型 String[] typePropertys = null; if (isLink) { LinkType linkTypes = LinkTypeProvider.getInstance().getLinkTypeByName(typeName); typePropertys = linkTypes.attributes; }else { typePropertys = BtmClient.getService().getBtmApNameArray(typeName); //此API获取的没有OID,有ownproduct } String[] sysPropertys = null; if (isLink) { sysPropertys = LinkConstants.SELECT_CONSTANTS; } else { sysPropertys = BusinessConstants.SELECT_CONSTANTS; } //统一将查询出来的字符串变为大写 for(String item:typePropertys){ String upperCase = item.toUpperCase(); sumPropertys.add(upperCase); } for(String btm:sysPropertys){ String btmStrs = btm.toUpperCase(); sumPropertys.add(btmStrs); } return sumPropertys; } /**获取所有的链接类型属性*//* private List getLinkPropertys(String linkType,boolean flag) throws Throwable{ List linkAttrsName=new ArrayList(); //所有的业务类型 LinkType linkTypes = ClientCacheFacade.getInstance().getLinkType(linkType); //linkTypeTxt = 'ebom' String[] linkPropertys = linkTypes.attributes; String[] sysDefaultAtrrs = ClientCacheFacade.getInstance().getSystemAttributes(true); for(String link:linkPropertys){ String linkAttrName = link.toUpperCase(); linkAttrsName.add(linkAttrName); } for(String link:sysDefaultAtrrs){ String linkAttrName = link.toUpperCase(); linkAttrsName.add(linkAttrName); } return linkAttrsName; }*/ /**判断输入的树节点的表达式是否格式正确,并获取属性*/ private String isFreemarkExpression(String field){ //,String firstStringOfLable firstAttrNames = new ArrayList(); sameKeySecList = new ArrayList(); DifferentKeySecList = new ArrayList(); sameKeyThrList = new ArrayList(); DifferentKeyThrList = new ArrayList(); try { boolean res = true; int begin = field.indexOf("${"); int end = field.indexOf("}"); int len = field.length(); String key = null; firSecMap = new HashMap>(); secThrMap = new HashMap>(); while(!"".equals(field) && begin >= 0 && end < len){ key = field.substring(begin + 2, end); if (key.trim().equals("")) { return "${}中无设置值,表达式不正确"; } //获取第一段属性 //链接类型:${t_oid.name},数量:${quantity},所属产品:${t_oid.ownproduct.name} //业务类型 : ${name},数量:${quantity},所属产品:${ownproduct.name} //${t_oid.name},数量:${quantity.pp} String[] keyStrings = key.split("\\."); String lastSplitStr=null; String SecondSplitStr=null; String firstSplitStr=null; if(keyStrings.length>1&&keyStrings.length<3){ //String lastSplitStr = keyStrings[keyStrings.length -1].toUpperCase(); SecondSplitStr = keyStrings[1].toUpperCase(); firstSplitStr = keyStrings[0].toUpperCase(); firstAttrNames.add(firstSplitStr); //bug修复(根据key的不同,将后面的属性放入不同的List中) if(firSecMap.containsKey(firstSplitStr)||firSecMap.size()==0){ sameKeySecList.add(SecondSplitStr); firSecMap.put(firstSplitStr, sameKeySecList); }else { DifferentKeySecList.add(SecondSplitStr); firSecMap.put(firstSplitStr, DifferentKeySecList); } //thrList.add(lastSplitStr); }else if (keyStrings.length==1) { firstSplitStr = keyStrings[0].toUpperCase(); firstAttrNames.add(firstSplitStr); }else if(keyStrings.length==3){ lastSplitStr = keyStrings[keyStrings.length -1].toUpperCase(); SecondSplitStr = keyStrings[1].toUpperCase(); firstSplitStr = keyStrings[0].toUpperCase(); firstAttrNames.add(firstSplitStr); //secList.add(SecondSplitStr); //thrList.add(lastSplitStr); if(firSecMap.containsKey(firstSplitStr)||firSecMap.size()==0){ sameKeySecList.add(SecondSplitStr); firSecMap.put(firstSplitStr, sameKeySecList); }else { DifferentKeySecList.add(SecondSplitStr); firSecMap.put(firstSplitStr, DifferentKeySecList); } if(secThrMap.containsKey(SecondSplitStr)||secThrMap.size()==0){ sameKeyThrList.add(lastSplitStr); secThrMap.put(SecondSplitStr, sameKeyThrList); }else { DifferentKeyThrList.add(lastSplitStr); secThrMap.put(SecondSplitStr, DifferentKeyThrList); } //firSecMap.put(firstSplitStr, secList); //{T_OID=[CODE, OWNPRODUCT]} //secThrMap.put(SecondSplitStr, thrList);//{OWNPRODUCT=[NAME]} } String linkTypeTxt = tree_linkTypeTxt.getSelectedItem()+""; if(linkTypeTxt.equals("")){ //业务类型 if(keyStrings.length>2){ //VCIOptionPane.showError(UIDesinDialog.this, firstStringOfLable+"节点显示的格式"+firstSplitStr+"."+SecondSplitStr+"."+lastSplitStr+"有误,请核对后再填写"); return "节点显示的格式"+firstSplitStr+"."+SecondSplitStr+"."+lastSplitStr+"有误,请核对后再填写"; } }else { //链接类型 if(keyStrings.length>3){ //VCIOptionPane.showError(UIDesinDialog.this, firstStringOfLable+"节点显示的格式"+firstSplitStr+"."+SecondSplitStr+"."+lastSplitStr+"有误,请核对后再填写"); return "节点显示的格式"+firstSplitStr+"."+SecondSplitStr+"."+lastSplitStr+"有误,请核对后再填写"; } } field = field.substring(end + 1); begin = field.indexOf("${"); end = field.indexOf("}"); len = field.length(); res = true; } //如果表达式不存在S{},即为文本时,是正确的。 if (key == null || key.trim().equals("")) { return ""; } return ""; } catch (Exception e) { return "freemarker表达式判断异常!"; } } private void setFormPanel() { GridBagLayout gbl_panel_2 = new GridBagLayout(); gbl_panel_2.columnWidths = new int[] { 0, 0, 0, 0, 0 }; gbl_panel_2.rowHeights = new int[] { 0, 0, 0 }; gbl_panel_2.columnWeights = new double[] { 0.0, 0.0, 0.0, 1.0, Double.MIN_VALUE }; gbl_panel_2.rowWeights = new double[] { 0.0, 0.0, Double.MIN_VALUE }; formPanel.setLayout(gbl_panel_2); label_12 = new JLabel("模板类型"); GridBagConstraints gbc_label_12 = new GridBagConstraints(); gbc_label_12.insets = new Insets(0, 0, 5, 5); gbc_label_12.gridx = 1; gbc_label_12.gridy = 0; formPanel.add(label_12, gbc_label_12); genralRdb = new JRadioButton("普通模板"); genralRdb.setSelected(true); GridBagConstraints gbc_genralRdb = new GridBagConstraints(); gbc_genralRdb.insets = new Insets(0, 0, 5, 0); gbc_genralRdb.gridx = 3; gbc_genralRdb.gridy = 0; formPanel.add(genralRdb, gbc_genralRdb); label_13 = new JLabel("搜索类型"); GridBagConstraints gbc_label_13 = new GridBagConstraints(); gbc_label_13.insets = new Insets(0, 0, 0, 5); gbc_label_13.gridx = 1; gbc_label_13.gridy = 1; formPanel.add(label_13, gbc_label_13); panel_6 = new JPanel(); GridBagConstraints gbc_panel_6 = new GridBagConstraints(); gbc_panel_6.anchor = GridBagConstraints.NORTH; gbc_panel_6.fill = GridBagConstraints.BOTH; gbc_panel_6.gridx = 3; gbc_panel_6.gridy = 1; formPanel.add(panel_6, gbc_panel_6); ButtonGroup bg = new ButtonGroup(); form_rootRdb = new JRadioButton("本对象属性"); panel_6.add(form_rootRdb); form_rootRdb.setSelected(true); form_relateRdb = new JRadioButton("关联对象"); panel_6.add(form_relateRdb); bg.add(form_rootRdb); bg.add(form_relateRdb); } private void setTreeTablePanel() { GridBagLayout gbl_treeTablePanel = new GridBagLayout(); gbl_treeTablePanel.columnWidths = new int[] { 0, 0, 0 }; gbl_treeTablePanel.rowHeights = new int[] { 0, 0, 0, 0, 0 }; gbl_treeTablePanel.columnWeights = new double[] { 0.0, 1.0, Double.MIN_VALUE }; gbl_treeTablePanel.rowWeights = new double[] { 0.0, 0.0, 0.0, 0.0, Double.MIN_VALUE }; treeTablePanel.setLayout(gbl_treeTablePanel); lblNewLabel_1 = new JLabel("顶级节点显示类型"); GridBagConstraints gbc_lblNewLabel_1 = new GridBagConstraints(); gbc_lblNewLabel_1.anchor = GridBagConstraints.EAST; gbc_lblNewLabel_1.insets = new Insets(0, 0, 5, 5); gbc_lblNewLabel_1.gridx = 0; gbc_lblNewLabel_1.gridy = 0; treeTablePanel.add(lblNewLabel_1, gbc_lblNewLabel_1); tree_table_rootCom = new JComboBox(); GridBagConstraints gbc_tree_table_rootObjCom = new GridBagConstraints(); gbc_tree_table_rootObjCom.insets = new Insets(0, 0, 5, 0); gbc_tree_table_rootObjCom.fill = GridBagConstraints.HORIZONTAL; gbc_tree_table_rootObjCom.gridx = 1; gbc_tree_table_rootObjCom.gridy = 0; gbc_tree_table_rootObjCom.gridwidth = 3; treeTablePanel.add(tree_table_rootCom, gbc_tree_table_rootObjCom); lblNewLabel_2 = new JLabel("选择模板"); GridBagConstraints gbc_lblNewLabel_2 = new GridBagConstraints(); gbc_lblNewLabel_2.insets = new Insets(0, 0, 5, 5); gbc_lblNewLabel_2.gridx = 0; gbc_lblNewLabel_2.gridy = 1; treeTablePanel.add(lblNewLabel_2, gbc_lblNewLabel_2); tree_table_rootSelectTem = new JComboBox(); GridBagConstraints gbc_tree_table_rootObjSelectCom = new GridBagConstraints(); gbc_tree_table_rootObjSelectCom.insets = new Insets(0, 0, 5, 0); gbc_tree_table_rootObjSelectCom.fill = GridBagConstraints.HORIZONTAL; gbc_tree_table_rootObjSelectCom.gridx = 1; gbc_tree_table_rootObjSelectCom.gridy = 1; treeTablePanel.add(tree_table_rootSelectTem, gbc_tree_table_rootObjSelectCom); //==add by guo==当模板类型是TableTree模板且对象是业务类型的时候,添加模板 createPOTreeTable = new JButton("+"); GridBagConstraints gbc_createPOTreeTable = new GridBagConstraints(); gbc_createPOTreeTable.gridx = 2; gbc_createPOTreeTable.gridy = 1; treeTablePanel.add(createPOTreeTable, gbc_createPOTreeTable); //编辑业务类型的TableTree模板 editPOTreeTable = new JButton("编辑"); GridBagConstraints gbc_editPOTreeTable = new GridBagConstraints(); gbc_editPOTreeTable.gridx = 3; gbc_editPOTreeTable.gridy = 1; treeTablePanel.add(editPOTreeTable, gbc_editPOTreeTable); label_4 = new JLabel("展开方式"); GridBagConstraints gbc_label_4 = new GridBagConstraints(); gbc_label_4.insets = new Insets(0, 0, 5, 5); gbc_label_4.gridx = 0; gbc_label_4.gridy = 2; treeTablePanel.add(label_4, gbc_label_4); panel_3 = new JPanel(); GridBagConstraints gbc_panel_3 = new GridBagConstraints(); gbc_panel_3.fill = GridBagConstraints.BOTH; gbc_panel_3.insets = new Insets(0, 0, 5, 0); gbc_panel_3.gridx = 1; gbc_panel_3.gridy = 2; gbc_panel_3.gridwidth = 2; treeTablePanel.add(panel_3, gbc_panel_3); ButtonGroup bg = new ButtonGroup(); graduallyRad = new JRadioButton("逐级展开"); graduallyRad.setSelected(true); panel_3.add(graduallyRad); allRad = new JRadioButton("全部展开"); panel_3.add(allRad); bg.add(graduallyRad); bg.add(allRad); label_5 = new JLabel("树形结构展开列"); GridBagConstraints gbc_label_5 = new GridBagConstraints(); gbc_label_5.insets = new Insets(0, 0, 0, 5); gbc_label_5.gridx = 0; gbc_label_5.gridy = 3; treeTablePanel.add(label_5, gbc_label_5); expandColsTxt = new JTextField(); expandColsTxt.setColumns(10); GridBagConstraints gbc_expandColsTxt = new GridBagConstraints(); gbc_expandColsTxt.fill = GridBagConstraints.HORIZONTAL; gbc_expandColsTxt.gridx = 1; gbc_expandColsTxt.gridy = 3; gbc_expandColsTxt.gridwidth = 2; treeTablePanel.add(expandColsTxt, gbc_expandColsTxt); } private void setRelatePanel() { gernalDynamicPal.setLayout(new BorderLayout(0, 0)); relatetPal = new JPanel(); GridBagLayout gridBagLayout = new GridBagLayout(); gridBagLayout.columnWidths = new int[] { 0, 72, 0, 0 }; gridBagLayout.rowHeights = new int[] { 0, 0, 0, 0 }; gridBagLayout.columnWeights = new double[] { 0.0, 0.0, 1.0, Double.MIN_VALUE }; gridBagLayout.rowWeights = new double[] { 0.0, 0.0, 0.0, Double.MIN_VALUE }; relatetPal.setLayout(gridBagLayout); JLabel label = new JLabel("目标对象"); GridBagConstraints gbc_label = new GridBagConstraints(); gbc_label.insets = new Insets(0, 0, 5, 5); gbc_label.gridx = 1; gbc_label.gridy = 0; relatetPal.add(label, gbc_label); relatCom = new JComboBox(); GridBagConstraints gbc_comboBox = new GridBagConstraints(); gbc_comboBox.insets = new Insets(0, 0, 5, 0); gbc_comboBox.fill = GridBagConstraints.HORIZONTAL; gbc_comboBox.gridx = 2; gbc_comboBox.gridy = 0; gbc_comboBox.gridwidth = 3; relatetPal.add(relatCom, gbc_comboBox); JLabel lblLinktype = new JLabel("LinkType"); GridBagConstraints gbc_lblLinktype = new GridBagConstraints(); gbc_lblLinktype.insets = new Insets(0, 0, 5, 5); gbc_lblLinktype.gridx = 1; gbc_lblLinktype.gridy = 1; relatetPal.add(lblLinktype, gbc_lblLinktype); relateLtCom = new JComboBox(); GridBagConstraints gbc_comboBox_2 = new GridBagConstraints(); gbc_comboBox_2.insets = new Insets(0, 0, 5, 0); gbc_comboBox_2.fill = GridBagConstraints.HORIZONTAL; gbc_comboBox_2.gridx = 2; gbc_comboBox_2.gridy = 1; gbc_comboBox_2.gridwidth = 3; relatetPal.add(relateLtCom, gbc_comboBox_2); JLabel label_1 = new JLabel("选择模板"); GridBagConstraints gbc_label_1 = new GridBagConstraints(); gbc_label_1.insets = new Insets(0, 0, 0, 5); gbc_label_1.gridx = 1; gbc_label_1.gridy = 2; relatetPal.add(label_1, gbc_label_1); relateSelectTem = new JComboBox(); GridBagConstraints gbc_comboBox_1 = new GridBagConstraints(); gbc_comboBox_1.fill = GridBagConstraints.HORIZONTAL; gbc_comboBox_1.gridx = 2; gbc_comboBox_1.gridy = 2; relatetPal.add(relateSelectTem, gbc_comboBox_1); //==add by guo==当模板类型为Table且对象为链接类型的时候,添加模板 createLOTable = new JButton("+"); GridBagConstraints gbc_createLOTable = new GridBagConstraints(); gbc_createLOTable.gridx = 3; gbc_createLOTable.gridy = 2; relatetPal.add(createLOTable, gbc_createLOTable); //编辑链接类型的Table模板 editLOTable = new JButton("编辑"); GridBagConstraints gbc_editLOTable = new GridBagConstraints(); gbc_editLOTable.gridx = 4; gbc_editLOTable.gridy = 2; relatetPal.add(editLOTable, gbc_editLOTable); } private void setFormRelatePanel() { form_relatetPal = new JPanel(); GridBagLayout gridBagLayout = new GridBagLayout(); gridBagLayout.columnWidths = new int[] { 0, 72, 0, 0 }; gridBagLayout.rowHeights = new int[] { 0, 0, 0, 0 }; gridBagLayout.columnWeights = new double[] { 0.0, 0.0, 1.0, Double.MIN_VALUE }; gridBagLayout.rowWeights = new double[] { 0.0, 0.0, 0.0, Double.MIN_VALUE }; form_relatetPal.setLayout(gridBagLayout); JLabel label = new JLabel("目标对象"); GridBagConstraints gbc_label = new GridBagConstraints(); gbc_label.insets = new Insets(0, 0, 5, 5); gbc_label.gridx = 1; gbc_label.gridy = 0; form_relatetPal.add(label, gbc_label); form_relatCom = new JComboBox(); GridBagConstraints gbc_comboBox = new GridBagConstraints(); gbc_comboBox.insets = new Insets(0, 0, 5, 0); gbc_comboBox.fill = GridBagConstraints.HORIZONTAL; gbc_comboBox.gridx = 2; gbc_comboBox.gridy = 0; gbc_comboBox.gridwidth = 3; form_relatetPal.add(form_relatCom, gbc_comboBox); JLabel lblLinktype = new JLabel("LinkType"); GridBagConstraints gbc_lblLinktype = new GridBagConstraints(); gbc_lblLinktype.insets = new Insets(0, 0, 5, 5); gbc_lblLinktype.gridx = 1; gbc_lblLinktype.gridy = 1; form_relatetPal.add(lblLinktype, gbc_lblLinktype); form_relateLtCom = new JComboBox(); GridBagConstraints gbc_comboBox_2 = new GridBagConstraints(); gbc_comboBox_2.insets = new Insets(0, 0, 5, 0); gbc_comboBox_2.fill = GridBagConstraints.HORIZONTAL; gbc_comboBox_2.gridx = 2; gbc_comboBox_2.gridy = 1; gbc_comboBox_2.gridwidth = 3; form_relatetPal.add(form_relateLtCom, gbc_comboBox_2); JLabel label_1 = new JLabel("选择模板"); GridBagConstraints gbc_label_1 = new GridBagConstraints(); gbc_label_1.insets = new Insets(0, 0, 0, 5); gbc_label_1.gridx = 1; gbc_label_1.gridy = 2; form_relatetPal.add(label_1, gbc_label_1); form_relateSelectTem = new JComboBox(); GridBagConstraints gbc_comboBox_1 = new GridBagConstraints(); gbc_comboBox_1.fill = GridBagConstraints.HORIZONTAL; gbc_comboBox_1.gridx = 2; gbc_comboBox_1.gridy = 2; form_relatetPal.add(form_relateSelectTem, gbc_comboBox_1); //==add by guo==当模板类型为Form,并且对象为链接类型的时候,添加模板 createLOForm = new JButton("+"); GridBagConstraints gbc_createLOForm = new GridBagConstraints(); gbc_createLOForm.gridx = 3; gbc_createLOForm.gridy = 2; form_relatetPal.add(createLOForm, gbc_createLOForm); //编辑链接类型对应的form模板 editLOForm = new JButton("编辑"); GridBagConstraints gbc_editLOForm = new GridBagConstraints(); gbc_editLOForm.gridx = 4; gbc_editLOForm.gridy = 2; form_relatetPal.add(editLOForm, gbc_editLOForm); } private void setrootObjectPanel() { gernalDynamicPal.setLayout(new BorderLayout(0, 0)); tableObjectPal = new JPanel(); GridBagLayout gbl_tableObjectPal = new GridBagLayout(); gbl_tableObjectPal.columnWidths = new int[] { 0, 72, 0, 0 }; gbl_tableObjectPal.rowHeights = new int[] { 0, 0, 0 }; gbl_tableObjectPal.columnWeights = new double[] { 0.0, 0.0, 1.0, Double.MIN_VALUE }; gbl_tableObjectPal.rowWeights = new double[] { 0.0, 0.0, Double.MIN_VALUE }; tableObjectPal.setLayout(gbl_tableObjectPal); JLabel label = new JLabel("源对象"); GridBagConstraints gbc_label = new GridBagConstraints(); gbc_label.insets = new Insets(0, 0, 5, 5); gbc_label.gridx = 1; gbc_label.gridy = 0; tableObjectPal.add(label, gbc_label); rootCom = new JComboBox(); GridBagConstraints gbc_comboBox = new GridBagConstraints(); gbc_comboBox.insets = new Insets(0, 0, 5, 0); gbc_comboBox.fill = GridBagConstraints.HORIZONTAL; gbc_comboBox.gridx = 2; gbc_comboBox.gridy = 0; gbc_comboBox.gridwidth = 3; tableObjectPal.add(rootCom, gbc_comboBox); JLabel label_1 = new JLabel("选择模板"); GridBagConstraints gbc_label_1 = new GridBagConstraints(); gbc_label_1.insets = new Insets(0, 0, 0, 5); gbc_label_1.gridx = 1; gbc_label_1.gridy = 1; tableObjectPal.add(label_1, gbc_label_1); rootSelectTem = new JComboBox(); GridBagConstraints gbc_comboBox_1 = new GridBagConstraints(); gbc_comboBox_1.fill = GridBagConstraints.HORIZONTAL; gbc_comboBox_1.gridx = 2; gbc_comboBox_1.gridy = 1; tableObjectPal.add(rootSelectTem, gbc_comboBox_1); //add by guo==模板类型为Table且对象为业务类型的时候,选择模板 createPOTable = new JButton("+"); GridBagConstraints gbc_createPOTable = new GridBagConstraints(); gbc_createPOTable.gridx = 3; gbc_createPOTable.gridy = 1; tableObjectPal.add(createPOTable, gbc_createPOTable); //编辑业务类型对应的table类型的模板 editPOTable = new JButton("编辑"); GridBagConstraints gbc_editPOTable = new GridBagConstraints(); gbc_editPOTable.gridx = 4; gbc_editPOTable.gridy = 1; tableObjectPal.add(editPOTable, gbc_editPOTable); } private void setCustomPanel() { custermPanel = new JPanel(); GridBagLayout gbl_custermPanel = new GridBagLayout(); gbl_custermPanel.columnWidths = new int[] { 91, 66, 0 }; gbl_custermPanel.rowHeights = new int[] { 21, 0 }; gbl_custermPanel.columnWeights = new double[] { 0.0, 1.0, Double.MIN_VALUE }; gbl_custermPanel.rowWeights = new double[] { 0.0, Double.MIN_VALUE }; custermPanel.setLayout(gbl_custermPanel); JLabel lblNewLabel = new JLabel("控制路径"); GridBagConstraints gbc_lblNewLabel = new GridBagConstraints(); gbc_lblNewLabel.insets = new Insets(0, 0, 0, 5); gbc_lblNewLabel.gridx = 0; gbc_lblNewLabel.gridy = 0; custermPanel.add(lblNewLabel, gbc_lblNewLabel); controlpath = new JTextField(); GridBagConstraints gbc_controlpath = new GridBagConstraints(); gbc_controlpath.fill = GridBagConstraints.HORIZONTAL; gbc_controlpath.anchor = GridBagConstraints.NORTH; gbc_controlpath.gridx = 1; gbc_controlpath.gridy = 0; custermPanel.add(controlpath, gbc_controlpath); controlpath.setColumns(10); } private void setgernaralPanel() { tableGernaralPanel = new JPanel(); GridBagLayout gbl_tableGernaralPanel = new GridBagLayout(); gbl_tableGernaralPanel.columnWidths = new int[] { 15, 95, 66, 0, 0, 0 }; gbl_tableGernaralPanel.rowHeights = new int[] { 21, 0 }; gbl_tableGernaralPanel.columnWeights = new double[] { 0.0, 0.0, 0.0, 0.0, 0.0, Double.MIN_VALUE }; gbl_tableGernaralPanel.rowWeights = new double[] { 0.0, Double.MIN_VALUE }; tableGernaralPanel.setLayout(gbl_tableGernaralPanel); JLabel label = new JLabel("搜索类型"); GridBagConstraints gbc_label = new GridBagConstraints(); gbc_label.insets = new Insets(0, 0, 0, 5); gbc_label.gridx = 1; gbc_label.gridy = 0; tableGernaralPanel.add(label, gbc_label); rootObjectRdb = new JRadioButton("本对象属性"); rootObjectRdb.setSelected(true); GridBagConstraints gbc_rdbtnNewRadioButton = new GridBagConstraints(); gbc_rdbtnNewRadioButton.insets = new Insets(0, 0, 0, 5); gbc_rdbtnNewRadioButton.gridx = 2; gbc_rdbtnNewRadioButton.gridy = 0; tableGernaralPanel.add(rootObjectRdb, gbc_rdbtnNewRadioButton); bg1.add(rootObjectRdb); relateRdb = new JRadioButton("关联对象"); GridBagConstraints gbc_rdbtnNewRadioButton_1 = new GridBagConstraints(); gbc_rdbtnNewRadioButton_1.insets = new Insets(0, 0, 0, 5); gbc_rdbtnNewRadioButton_1.gridx = 3; gbc_rdbtnNewRadioButton_1.gridy = 0; tableGernaralPanel.add(relateRdb, gbc_rdbtnNewRadioButton_1); bg1.add(relateRdb); PFKRdb = new JRadioButton("主外键对象"); GridBagConstraints gbc_rdbtnNewRadioButton_2 = new GridBagConstraints(); gbc_rdbtnNewRadioButton_2.gridx = 4; gbc_rdbtnNewRadioButton_2.gridy = 0; // generalPanel.add(PFKRdb, gbc_rdbtnNewRadioButton_2); // bg1.add(PFKRdb); } private void setTree_table_gernaralPanel() { tree_tableGernaralPanel = new JPanel(); GridBagLayout gbl_tablePanel = new GridBagLayout(); gbl_tablePanel.columnWidths = new int[] { 15, 95, 66, 0, 0, 0 }; gbl_tablePanel.rowHeights = new int[] { 21, 0 }; gbl_tablePanel.columnWeights = new double[] { 0.0, 0.0, 0.0, 0.0, 0.0, Double.MIN_VALUE }; gbl_tablePanel.rowWeights = new double[] { 0.0, Double.MIN_VALUE }; tree_tableGernaralPanel.setLayout(gbl_tablePanel); JLabel label = new JLabel("搜索类型"); GridBagConstraints gbc_label = new GridBagConstraints(); gbc_label.insets = new Insets(0, 0, 0, 5); gbc_label.gridx = 1; gbc_label.gridy = 0; tree_tableGernaralPanel.add(label, gbc_label); tree_table_bg1 = new ButtonGroup(); tree_table_rootObjectRdb = new JRadioButton("本对象属性"); tree_table_rootObjectRdb.setSelected(true); GridBagConstraints gbc_rdbtnNewRadioButton = new GridBagConstraints(); gbc_rdbtnNewRadioButton.insets = new Insets(0, 0, 0, 5); gbc_rdbtnNewRadioButton.gridx = 2; gbc_rdbtnNewRadioButton.gridy = 0; tree_tableGernaralPanel.add(tree_table_rootObjectRdb, gbc_rdbtnNewRadioButton); tree_table_bg1.add(tree_table_rootObjectRdb); tree_table_relateRdb = new JRadioButton("关联对象"); GridBagConstraints gbc_rdbtnNewRadioButton_1 = new GridBagConstraints(); gbc_rdbtnNewRadioButton_1.insets = new Insets(0, 0, 0, 5); gbc_rdbtnNewRadioButton_1.gridx = 3; gbc_rdbtnNewRadioButton_1.gridy = 0; tree_tableGernaralPanel.add(tree_table_relateRdb, gbc_rdbtnNewRadioButton_1); tree_table_bg1.add(tree_table_relateRdb); PFKRdb = new JRadioButton("主外键对象"); GridBagConstraints gbc_rdbtnNewRadioButton_2 = new GridBagConstraints(); gbc_rdbtnNewRadioButton_2.gridx = 4; gbc_rdbtnNewRadioButton_2.gridy = 0; // generalPanel.add(PFKRdb, gbc_rdbtnNewRadioButton_2); // bg1.add(PFKRdb); } private void actionListener() { tree_showTypeTxt.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent arg0) { fillQtNameCom(); } }); tree_linkTypeTxt.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent arg0) { fillQtNameCom(); } }); rootObjCom.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent arg0) { refreshChangableTablePortalVIs(rootObjCom, rootObjSelectCom, PortalVIType.Form); } }); okButton.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent arg0) { okBtn_actionPerformed(arg0); } }); cancelButton.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent arg0) { dispose(); } }); tableRadio.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent arg0) { dynamicPal.remove(custermPanel); dynamicPal.remove(treeTablePanel); dynamicPal.remove(treePanel); dynamicPal.remove(tree_tableGernaralPanel); dynamicPal.remove(tree_table_gernalDynamicPal); dynamicPal.remove(formPanel); dynamicPal.remove(form_gernalDynamicPal); dynamicPal.add(tableGernaralPanel, BorderLayout.NORTH); dynamicPal.add(gernalDynamicPal, BorderLayout.CENTER); dynamicPal.updateUI(); } }); customRadio.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent arg0) { dynamicPal.remove(tableGernaralPanel); dynamicPal.remove(gernalDynamicPal); dynamicPal.remove(treeTablePanel); dynamicPal.remove(treePanel); dynamicPal.remove(tree_tableGernaralPanel); dynamicPal.remove(tree_table_gernalDynamicPal); dynamicPal.remove(formPanel); dynamicPal.remove(form_gernalDynamicPal); dynamicPal.add(custermPanel, BorderLayout.CENTER); dynamicPal.updateUI(); } }); rdbtnTreeTable.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent arg0) { dynamicPal.remove(tableGernaralPanel); dynamicPal.remove(gernalDynamicPal); dynamicPal.remove(custermPanel); dynamicPal.remove(treePanel); dynamicPal.remove(formPanel); dynamicPal.remove(form_gernalDynamicPal); dynamicPal.add(tree_tableGernaralPanel, BorderLayout.NORTH); dynamicPal.add(tree_table_gernalDynamicPal, BorderLayout.CENTER); dynamicPal.updateUI(); } }); rdbtnForm.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent arg0) { dynamicPal.remove(tableGernaralPanel); dynamicPal.remove(gernalDynamicPal); dynamicPal.remove(custermPanel); dynamicPal.remove(treeTablePanel); dynamicPal.remove(treePanel); dynamicPal.remove(tree_tableGernaralPanel); dynamicPal.remove(tree_table_gernalDynamicPal); dynamicPal.add(formPanel, BorderLayout.NORTH); dynamicPal.add(form_gernalDynamicPal, BorderLayout.CENTER); dynamicPal.updateUI(); } }); rdbtnTree.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent arg0) { dynamicPal.remove(tableGernaralPanel); dynamicPal.remove(gernalDynamicPal); dynamicPal.remove(custermPanel); dynamicPal.remove(treeTablePanel); dynamicPal.remove(tree_tableGernaralPanel); dynamicPal.remove(tree_table_gernalDynamicPal); dynamicPal.remove(formPanel); dynamicPal.remove(form_gernalDynamicPal); dynamicPal.add(treePanel, BorderLayout.CENTER); dynamicPal.updateUI(); } }); rootObjectRdb.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent arg0) { gernalDynamicPal.remove(relatetPal); gernalDynamicPal.add(tableObjectPal, BorderLayout.CENTER); gernalDynamicPal.updateUI(); } }); relateRdb.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent arg0) { gernalDynamicPal.remove(tableObjectPal); gernalDynamicPal.add(relatetPal, BorderLayout.CENTER); gernalDynamicPal.updateUI(); } }); form_rootRdb.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent arg0) { form_gernalDynamicPal.remove(form_relatetPal); form_gernalDynamicPal.add(form_rootPal, BorderLayout.CENTER); form_gernalDynamicPal.updateUI(); } }); form_relateRdb.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent arg0) { form_gernalDynamicPal.remove(form_rootPal); form_gernalDynamicPal.add(form_relatetPal, BorderLayout.CENTER); form_gernalDynamicPal.updateUI(); } }); tree_table_rootObjectRdb.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent arg0) { tree_table_gernalDynamicPal.remove(tree_table_RelatePal); tree_table_gernalDynamicPal.add(treeTablePanel, BorderLayout.CENTER); tree_table_gernalDynamicPal.updateUI(); } }); tree_table_relateRdb.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent arg0) { tree_table_gernalDynamicPal.remove(treeTablePanel); tree_table_gernalDynamicPal.add(tree_table_RelatePal, BorderLayout.CENTER); tree_table_gernalDynamicPal.updateUI(); } }); PFKRdb.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent arg0) { } }); rootCom.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent arg0) { refreshChangableTablePortalVIs(rootCom, rootSelectTem, PortalVIType.Table); } }); tree_table_rootCom.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent arg0) { refreshChangableTablePortalVIs(tree_table_rootCom, tree_table_rootSelectTem, PortalVIType.Table); } }); relatCom.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent arg0) { // relateLtCom.removeAllItems(); LinkType[] linkTypes = getSortedLinkTypes(); for (int i = 0; i < linkTypes.length; i++) { relateLtCom.addItem(linkTypes[i].name); } relateLtCom.updateUI(); } }); relateLtCom.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent arg0) { refreshChangableTablePortalVIs(relateLtCom, relateSelectTem, PortalVIType.Table); } }); form_relatCom.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent arg0) { // form_relateLtCom.removeAllItems(); LinkType[] linkTypes = getSortedLinkTypes(); for (int i = 0; i < linkTypes.length; i++) { form_relateLtCom.addItem(linkTypes[i].name); } form_relateLtCom.updateUI(); } }); form_relateLtCom.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent arg0) { refreshChangableTablePortalVIs(form_relateLtCom, form_relateSelectTem, PortalVIType.Form); } }); tree_table_relatCom.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent arg0) { tree_table_relateLtCom.removeAllItems(); LinkType[] linkTypes = getSortedLinkTypes(); for (int i = 0; i < linkTypes.length; i++) { tree_table_relateLtCom.addItem(linkTypes[i].name); } tree_table_relateLtCom.updateUI(); } }); tree_table_relateLtCom.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent arg0) { refreshChangableTablePortalVIs(tree_table_relateLtCom, tree_table_relateSelectTem, PortalVIType.Table); } }); //========add by guo== createPOForm.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent arg0) { addSelectModel(rootObjSelectCom, rootObjCom, null, PortalVIType.Form, false); } }); editPOForm.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent arg0) { editSelectModel(PortalVIType.Form , rootObjSelectCom, rootObjCom, null, false); } }); createLOTreeTable.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent arg0) { addSelectModel(tree_table_relateSelectTem, tree_table_relateLtCom, tree_table_relateLtCom, PortalVIType.Table, true); } }); editLOTreeTable.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent arg0) { editSelectModel(PortalVIType.Table , tree_table_relateSelectTem,tree_table_relateLtCom, tree_table_relateLtCom, true); } }); createPOTreeTable.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent arg0) { addSelectModel(tree_table_rootSelectTem, tree_table_rootCom, null, PortalVIType.Table, false); } }); editPOTreeTable.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent arg0) { editSelectModel(PortalVIType.Table , tree_table_rootSelectTem,tree_table_rootCom, null, false); } }); createLOTable.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent arg0) { addSelectModel(relateSelectTem, relateLtCom, relateLtCom, PortalVIType.Table, true); } }); editLOTable.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent arg0) { editSelectModel(PortalVIType.Table , relateSelectTem, relateLtCom, relateLtCom, true); } }); createLOForm.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent arg0) { addSelectModel(form_relateSelectTem, form_relateLtCom, form_relateLtCom, PortalVIType.Form, true); } }); editLOForm.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent arg0) { editSelectModel(PortalVIType.Form , form_relateSelectTem, form_relateLtCom, form_relateLtCom, true); } }); createPOTable.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent arg0) { addSelectModel(rootSelectTem, rootCom, null, PortalVIType.Table, false); } }); editPOTable.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent arg0) { editSelectModel(PortalVIType.Table , rootSelectTem, rootCom, null, false); } }); } private void okBtn_actionPerformed(ActionEvent e){ DialogResult dialogRes = DialogResult.CANCEL; try{ String rtnContent = isTreeNodeShowExpress(tree_showAbsTxt.getText()); if (!rtnContent.equals("")) { VCIOptionPane.showError(UIDesinDialog.this, "树节点显示表达式校验异常:" + rtnContent); return; } rtnContent = isTreeNodeShowExpress(txtTreeRootContent.getText()); if (!rtnContent.equals("")) { VCIOptionPane.showError(UIDesinDialog.this, "根节点显示表达式校验异常:" + rtnContent); return; } /*if(!isTreeNodeShowExpress(txtTreeRootContent.getText(),label_25.getText().substring(0, 1))){ VCIOptionPane.showError(UIDesinDialog.this, "根节点显示表达式定义有误,请修正后再保存!"); return; }*/ PLPageDefination plPageDefination = getPLPageDefinationFromUI(); PLDefination plDefination = getPLDefinationFromUI(); if(checkEdit(plPageDefination, plDefination)){ return; } boolean res = save(plPageDefination, UIDesinDialog.this.plPageDefination != null); if(res){ dialogRes = DialogResult.OK; VCIOptionPane.showMessage(UIDesinDialog.this, "保存成功!"); dispose(); } else{ dialogRes = DialogResult.CANCEL; VCIOptionPane.showMessage(UIDesinDialog.this, "保存失败!"); } }catch(Throwable ex){ dialogRes = DialogResult.CANCEL; ex.printStackTrace(); VCIOptionPane.showMessage(UIDesinDialog.this, "保存的过程发生错误!\n" + ex.getMessage() + ""); } close(dialogRes); } private void close(DialogResult res){ setDialogResult(res); setVisible(false); dispose(); } private boolean save(PLPageDefination plPageDefination, boolean isEdit) throws VCIError{ boolean res = false; if(isEdit && plPageDefination != null){ plPageDefination.plOId = UIDesinDialog.this.plPageDefination.plOId; res = UITools.getService().updatePLPageDefination(plPageDefination); } else{ res = UITools.getService().savePLPageDefination(plPageDefination); } return res; } private PLPageDefination getPLPageDefinationFromUI() throws Throwable{ PLPageDefination plPageDefination = new PLPageDefination(); plPageDefination.plOId = ObjectUtility.getNewObjectID36(); plPageDefination.plTabPageOId = pltabpage.plOId; plPageDefination.name = nameTxt.getText(); plPageDefination.seq = Short.valueOf(seqTxt.getText()); plPageDefination.desc = descTxt.getText(); plPageDefination.plType = disType; plPageDefination.plDefination = UITools.getPLDefinationText(getPLDefinationFromUI()); return plPageDefination; } private PLDefination getPLDefinationFromUI() { PLDefination obj = new PLDefination(); obj.setUiParser(txtUIParser.getText().trim()); obj.setExtAttr(txtExtAtt.getText().trim()); if (tableRadio.isSelected()) { obj.setTemplateType("1"); if (rootObjectRdb.isSelected()) { obj.setSearchTarger("1"); obj.setShowType(String.valueOf(rootCom .getSelectedItem())); obj.setTemplateId(String.valueOf(rootSelectTem .getSelectedItem())); } if (relateRdb.isSelected()) { obj.setSearchTarger("2"); obj.setShowType(String.valueOf(relatCom .getSelectedItem())); obj.setLinkType(String.valueOf(relateLtCom .getSelectedItem())); obj.setTemplateId(String.valueOf(relateSelectTem .getSelectedItem())); } } if (customRadio.isSelected()) { obj.setTemplateType("2"); obj.setControlPath(controlpath.getText()); } if (navigatorfold.isSelected()) { obj.setNavigatorType("3"); } if (navigatorrole.isSelected()) { obj.setNavigatorType("2"); } if (navigatornodisply.isSelected()) { obj.setNavigatorType("1"); } if (rdbtnTreeTable.isSelected()) { obj.setTemplateType("3"); if (tree_table_rootObjectRdb.isSelected()) { obj.setSearchTarger("1"); obj.setShowType(String.valueOf(tree_table_rootCom .getSelectedItem())); obj.setTemplateId(String.valueOf(tree_table_rootSelectTem .getSelectedItem())); // 逐级展开:1、全部展开:0 if (graduallyRad.isSelected()) { obj.setExpandMode("1"); } if (allRad.isSelected()) { obj.setExpandMode("0"); } obj.setExpandCols(expandColsTxt.getText()); } if (tree_table_relateRdb.isSelected()) { obj.setSearchTarger("2"); obj.setShowType(String.valueOf(tree_table_relatCom .getSelectedItem())); obj.setLinkType(String.valueOf(tree_table_relateLtCom .getSelectedItem())); obj.setTemplateId(String.valueOf(tree_table_relateSelectTem .getSelectedItem())); // 逐级展开:1、全部展开:0 if (tree_table_R_graduallyRad.isSelected()) { obj.setExpandMode("1"); } if (tree_table_R_allRad.isSelected()) { obj.setExpandMode("0"); } obj.setExpandCols(tree_table_R_expandColsTxt.getText()); } } if (rdbtnForm.isSelected()) { if (genralRdb.isSelected()) { obj.setTemplateType("4"); if (form_rootRdb.isSelected()) { obj.setSearchTarger("1"); obj.setShowType(String.valueOf(rootObjCom .getSelectedItem())); obj.setTemplateId(String.valueOf(rootObjSelectCom .getSelectedItem())); } if (form_relateRdb.isSelected()) { obj.setSearchTarger("2"); obj.setShowType(String.valueOf(form_relatCom .getSelectedItem())); obj.setLinkType(String.valueOf(form_relateLtCom .getSelectedItem())); obj.setTemplateId(String.valueOf(form_relateSelectTem .getSelectedItem())); } } } if (rdbtnTree.isSelected()) { obj.setTemplateType("5"); obj.setShowType(tree_showTypeTxt.getSelectedItem().toString()); if (tree_zhengRad.isSelected()) { obj.setOrientation(QTConstants.DIRECTION_POSITIVE); } if (tree_fanRad.isSelected()) { obj.setOrientation(QTConstants.DIRECTION_OPPOSITE); } obj.setShowAbs(tree_showAbsTxt.getText()); obj.setSeparator(tree_separatorTxt.getText()); // 逐级展开:1、全部展开:0 if (graduallyRad.isSelected()) { obj.setExpandMode("1"); } if (allRad.isSelected()) { obj.setExpandMode("0"); } obj.setLinkType(tree_linkTypeTxt.getSelectedItem().toString()); obj.setValidity(getValidityKey(String.valueOf(tree_validityTxt.getSelectedItem()))); obj.setShowLinkAbs(tree_showLinkAbsTxt.getText()); if (tree_isShowImage.isSelected()) { obj.setIsShowImage("1"); } else { obj.setIsShowImage("0"); } obj.setTemplateId(String.valueOf(tree_templateIdCom.getSelectedItem())); obj.setRootContent(txtTreeRootContent.getText()); } DefaultListModel listModel = cp.getListModel(); int size = listModel.getSize(); List keyList = new ArrayList(); Map keyMap = new HashMap(); for(int i=0;i es : keyMap.entrySet()){ String key = es.getKey(); String value = es.getValue(); eventKey += key+","; eventValue += value+","; } if(eventKey!=null&&!"".equals(eventKey)){ obj.setEventKey(eventKey.substring(0,eventKey.length()-1)); obj.setEventValue(eventValue.substring(0,eventValue.length()-1)); }else{ obj.setEventKey(""); obj.setEventValue(""); } return obj; } private void fetchEventValue(DefaultListModel listModel, int size, List keyList,Map keyMap) { for(int j=0;j validityMap; private JLabel lblNewLabel_1; private JComboBox tree_table_rootCom; private JLabel lblNewLabel_2; private JComboBox tree_table_rootSelectTem; private JPanel tree_table_RelatePal; private JLabel label_3; private JComboBox tree_table_relatCom; private JLabel label_6; private JComboBox tree_table_relateSelectTem; private JLabel label_7; private JPanel panel_2; private JRadioButton tree_table_R_graduallyRad; private JRadioButton tree_table_R_allRad; private JLabel label_8; private JTextField tree_table_R_expandColsTxt; private JLabel lblNewLabel_3; private JComboBox tree_table_relateLtCom; private JPanel panel_6; private JRadioButton form_relateRdb; private JPanel form_rootPal; private JLabel label_24; private JComboBox tree_templateIdCom; private JLabel label_25; private JTextField txtTreeRootContent; private JPanel panel_7; private void intiValidity(){ tree_validityTxt.addItem(""); validityMap = new LinkedHashMap(); validityMap.put("1", "当前版本当前版次"); validityMap.put("2", "当前版本最新版次"); validityMap.put("3", "最新版本最新版次"); for(Map.Entry entry: validityMap.entrySet()){ tree_validityTxt.addItem(entry.getValue()); } } private String getValidityKey(String value){ for(Map.Entry entry: validityMap.entrySet()){ if(value!=null&&!"".equals(value)){ if(value.equals(entry.getValue())){ return entry.getKey(); } } } return ""; } private void fillQtNameCom(){ String showtypeStr = (String) tree_showTypeTxt.getSelectedItem(); String linkTypeStr = (String) tree_linkTypeTxt.getSelectedItem(); String showtypebtmName = ""; String linkTypebtmName = ""; boolean linktypeFlage = false; if(linkTypeStr!=null&&!"".equals(linkTypeStr)){ linktypeFlage = true; } try { BtmItem[] allBtItems = getSortedBtmItems(); for(BtmItem btItem : allBtItems){ if(showtypeStr.equals(btItem.name)){ showtypebtmName = showtypeStr; } } LinkType[] linkTypes = getSortedLinkTypes(); for(LinkType linkType:linkTypes){ if(linkTypeStr.equals(linkType.name)){ linkTypebtmName = linkTypeStr; } } tree_templateIdCom.removeAllItems(); if(linktypeFlage){ QTInfo[] qts = ServiceProvider.getOMDService().getQTDService().getObjTypeQTs(linkTypebtmName); qts = getSortedQTWrappers(qts); for(QTInfo qt : qts){ tree_templateIdCom.addItem(qt.qtName); } tree_showAbsTxt.setToolTipText("Link关系构成树节点显示表达式示例:\"${t_oid.name},数量:${quantity},所属产品:${t_oid.ownproduct.name}\";\r\n注:可定义属性为当前所选Link类型属性,且支持参照属性,如\"t_oid.ownproduct.name\""); txtTreeRootContent.setToolTipText("Link关系构成树根节点显示可额外设置表达式(具体参考\"树节点显示\"的表达式定义),如不设置就按照子孙节点一样显示!"); tree_templateIdCom.setToolTipText("请选择链接类型[" + linkTypebtmName + "]所对应的查询"); }else{ QTInfo[] qts = ServiceProvider.getOMDService().getQTDService().getObjTypeQTs(showtypebtmName); qts = getSortedQTWrappers(qts); for(QTInfo qt : qts){ tree_templateIdCom.addItem(qt.qtName); } tree_showAbsTxt.setToolTipText("参照关系构成树节点显示表达式示例:${code}[${name}],所属产品:${ownproduct.name};\r\n注:可定义属性为当前所选业务类型属性,且支持参照属性,如\"ownproduct.name\""); txtTreeRootContent.setToolTipText("参照关系构成树根节点显示可额外设置表达式(具体参考\"树节点显示\"的表达式定义),如不设置就按照子孙节点一样显示!"); tree_templateIdCom.setToolTipText("请选择业务类型[" + showtypebtmName + "]所对应的查询;注:查询模板中需存在参照属性查询条件"); } } catch (Exception e1) { e1.printStackTrace(); } catch (Throwable e1) { e1.printStackTrace(); } } private BtmItem[] allBtms = null; private BtmItem[] getSortedBtmItems(){ if(allBtms == null){ synchronized (BtmItem.class) { if(allBtms == null){ allBtms = BtmProvider.getInstance().getAllBtmItems(); Arrays.sort(allBtms, BtmItem_Comparator); } } } return allBtms; } private LinkType[] allLinkTypes = null; private LinkType[] getSortedLinkTypes(){ if(allLinkTypes == null){ synchronized(LinkType.class){ if(allLinkTypes == null){ allLinkTypes = LinkTypeProvider.getInstance().getLinkTypes(); Arrays.sort(allLinkTypes, LinkType_Comparator); } } } return allLinkTypes; } private PortalVI[] getSortedPortalVI(PortalVI[] vis){ Arrays.sort(vis, PortalVI_Comparator); return vis; } private QTInfo[] getSortedQTWrappers(QTInfo[] qts){ Arrays.sort(qts, QTWrapper_Comparator); return qts; } /** * 刷新业务类型下可供选择的列表表单 * @param srcCombox 触发端 * @param destRefCombox 刷新端 */ private void refreshChangableTablePortalVIs(JComboBox srcCombox, JComboBox destRefCombox) { refreshChangableTablePortalVIs(srcCombox, destRefCombox, PortalVIType.Table); } /** * 刷新业务类型下可供选择的列表表单 * @param srcCombox 触发端 * @param destRefCombox 刷新端 * @param viType 表单类型 */ private void refreshChangableTablePortalVIs(JComboBox srcCombox, JComboBox destRefCombox, PortalVIType viType) { destRefCombox.removeAllItems(); String selectedItem = (String) srcCombox.getSelectedItem(); if (selectedItem == null) { return; } try { String[] viNames = getTypePortalVINamesFromMap(viType, selectedItem); destRefCombox.setModel(new DefaultComboBoxModel(viNames)); } catch (VCIError e) { e.printStackTrace(); } destRefCombox.updateUI(); } /** * 业务类型下全部的表单名缓存Map * key:业务类型名 * value:Map * key: 表单类型(1:表单、0:表格) * value: 表单名称的一维数组 */ private Map> typePortalVINames = new HashMap>(); /** * 从Dialog组件页面缓存中取出业务类型下指定表单类型的表单名 * @param viType 表单类型 * @param type 业务类型 * @return * @throws VCIError */ private String[] getTypePortalVINamesFromMap(PortalVIType viType, String type) throws VCIError{ if(typePortalVINames.containsKey(type)){ if(typePortalVINames.get(type).containsKey(viType.getIntVal())){ return typePortalVINames.get(type).get(viType.getIntVal()); } else { String[] viNames = getTypePortalVINames(viType, type); Map map = typePortalVINames.get(type); map.put(viType.getIntVal(), viNames); typePortalVINames.put(type, map); return viNames; } } else { String[] viNames = getTypePortalVINames(viType, type); Map map = new HashMap(); map.put(viType.getIntVal(), viNames); typePortalVINames.put(type, map); return viNames; } } /** * 查出指定业务类型下全部的表单名称 * @param viType 表单类型 * @param type 业务类型名 * @return * @throws VCIError */ private String[] getTypePortalVINames(PortalVIType viType, String type) throws VCIError{ String sql = String.format("" + "select vi.viname from plportalvi vi " + "where vi.vitype='%s' and vi.typename='%s' " + "order by vi.viname ", String.valueOf(viType.getIntVal()), type); List viNameList = new LinkedList(); String[][] kvss = QTClient.getService().queryBySqlWithoutKey(sql); for(String[] kvs : kvss){ viNameList.add(kvs[0]); } String[] viNames = viNameList.toArray(new String[]{}); Map map = new HashMap(); map.put(viType.getIntVal(), viNames); return viNameList.toArray(new String[]{}); } private final Comparator BtmItem_Comparator = new Comparator() { @Override public int compare(BtmItem o1, BtmItem o2) { return PinyinCommon.getPingYin(o1.name).compareTo(PinyinCommon.getPingYin(o2.name)); } }; private final Comparator LinkType_Comparator = new Comparator() { @Override public int compare(LinkType o1, LinkType o2) { return PinyinCommon.getPingYin(o1.name).compareTo(PinyinCommon.getPingYin(o2.name)); } }; private final Comparator PortalVI_Comparator = new Comparator() { @Override public int compare(PortalVI o1, PortalVI o2) { return PinyinCommon.getPingYin(o1.viName).compareTo(PinyinCommon.getPingYin(o2.viName)); } }; private final Comparator QTWrapper_Comparator = new Comparator() { @Override public int compare(QTInfo o1, QTInfo o2) { return PinyinCommon.getPingYin(o1.qtName).compareTo(PinyinCommon.getPingYin(o2.qtName)); } }; }