package com.vci.client.oq.ui; import java.awt.BorderLayout; import java.awt.Color; import java.awt.Dimension; import java.awt.FlowLayout; import java.awt.GridBagConstraints; import java.awt.GridBagLayout; import java.awt.HeadlessException; import java.awt.Toolkit; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.ItemEvent; import java.awt.event.ItemListener; import java.util.ArrayList; import java.util.Arrays; import java.util.List; import javax.swing.BorderFactory; import javax.swing.ButtonGroup; 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.JSplitPane; import javax.swing.JTextField; import javax.swing.event.TreeSelectionEvent; import javax.swing.event.TreeSelectionListener; import javax.swing.table.JTableHeader; import javax.swing.table.TableColumn; import javax.swing.tree.DefaultMutableTreeNode; import javax.swing.tree.DefaultTreeModel; import javax.swing.tree.TreeNode; import javax.swing.tree.TreePath; import org.jdesktop.swingx.JXTable; import org.jdesktop.swingx.decorator.HighlighterFactory; import com.vci.corba.omd.btm.BtmItem; import com.vci.corba.omd.ltm.LinkType; import com.vci.corba.omd.qtm.QTD; import com.vci.client.common.oq.OQTool; import com.vci.client.common.providers.ServiceProvider; import com.vci.client.omd.btm.ui.BtmTree; import com.vci.client.omd.btm.wrapper.BtmItemWrapper; import com.vci.client.omd.linktype.LinkTypeTree; import com.vci.client.omd.linktype.LinkTypeWrapper; import com.vci.client.omd.linktype.itf.LinkTypeInterfaceImpl; import com.vci.client.omd.provider.BtmProvider; import com.vci.client.oq.QTDClient; import com.vci.client.oq.wrapper.QTDWrapper; import com.vci.client.ui.table.CheckBoxEditor; import com.vci.client.ui.table.CheckBoxRenderer; import com.vci.client.ui.util.PostorderEnumeration; import com.vci.corba.common.VCIError; public class QTDPanel extends JPanel{ /** * */ private static final long serialVersionUID = -6885848663019109473L; private static QTDPanel qtdPanel = null; /** * add by caill * 添加定位框和定位按钮,并添加left 和leftTopPanel容器 * */ private JTextField textField=new JTextField(20); private JButton sel=new JButton("定位"); private JPanel left=new JPanel(); private JPanel leftTopPanel=new JPanel(); /** * northPanel: 创建, 修改, 删除查询模板按钮 */ private JPanel northPanel; /** * centerPanel: cp_treePanel, cp_mainPanel */ private JSplitPane centerPanel; /** * cp_treePanel:业务类型树/连接类型树 */ private JPanel cp_treePanel; /** * cp_mainPanel:选择查询属性, 定制查询模板; 确定, 取消按钮 * 执行查询 */ private JPanel cp_mainPanel; private JButton btnCreate, btnModify, btnDelete; private static BtmTree btmTree = new BtmTree(); private static LinkTypeTree linkTypeTree = new LinkTypeTree(); /** * cpm_northPanel : 查询模板定义列表, 查询模板定义名 */ private JPanel cpm_northPanel; private JComboBox combQTD; private JTextField tfName; /** * cmp_centerPanel : 选择查询属性, 定制查询模板 */ private JPanel cpm_centerPanel; private JScrollPane scrollPane; private JXTable abTable; private BtmAttrTableModel tableModel; private final int TABLE_HEADER_HEIGHT = 25; private final int ROW_HEIGHT = 30; /** * cmp_southPanel : 确定, 取消按钮 */ private JPanel cpm_southPanel; private JButton btnOK, btnCancel, btnSelectAll; private BtmItem selectedBtm = null; /** * 0: 查看, 1: 创建, 2: 修改 */ private int flag = 0; private JLabel qtdLab; private JRadioButton rdBtm; private JRadioButton rdLinkType; private ButtonGroup btnGroup; private LinkType selectedLinkType; private int isAllSelected = -1;//等于0,已经全部选中;等于1,一个都没有选中。 private boolean selectAll = false ; private QTDPanel(){ initUI(); initCombQTD(); addListener(); } static void initVars(){ qtdPanel = null; btmTree = new BtmTree(); linkTypeTree = new LinkTypeTree(); } public static void cleanInstance(){ initVars(); qtdPanel = null; } public static QTDPanel getInstance(){ if(qtdPanel == null){ qtdPanel = new QTDPanel(); } if(btmTree != null){ btmTree.initOrUpdate(); } if(linkTypeTree != null){ linkTypeTree.initOrUpdate(); } qtdPanel.updateUI(); return qtdPanel; } private void initUI(){ this.setBackground(Color.WHITE); this.setLayout(new BorderLayout(0, 0)); northPanel = new JPanel(); this.add(northPanel, BorderLayout.NORTH); cp_treePanel = new JPanel(); cp_mainPanel = new JPanel(); //add by caill //为业务类型树和链接类型树添加公用定位框和定位按钮,并添加left和leftTopPanel容器 //搜索框的设置 GridBagConstraints gbc = new GridBagConstraints(); gbc.gridx = 0; gbc.gridy = 0; gbc.weightx = 0.7; gbc.weighty = 0; gbc.fill = GridBagConstraints.HORIZONTAL; leftTopPanel.setLayout(new GridBagLayout()); leftTopPanel.add(textField,gbc); leftTopPanel.add(sel); left.setLayout(new BorderLayout()); left.add(leftTopPanel,BorderLayout.NORTH); left.add(new JScrollPane(cp_treePanel),BorderLayout.CENTER); centerPanel = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT, left, cp_mainPanel); //add by caill end //centerPanel = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT, new JScrollPane(cp_treePanel), cp_mainPanel); centerPanel.setDividerLocation(Toolkit.getDefaultToolkit().getScreenSize().width/5); centerPanel.setOneTouchExpandable(true); this.add(centerPanel, BorderLayout.CENTER); btnCreate = new JButton("创建"); btnModify = new JButton("修改"); btnDelete = new JButton("删除"); rdBtm = new JRadioButton("业务类型"); rdLinkType = new JRadioButton("链接类型"); rdBtm.setSelected(true); btnGroup = new ButtonGroup(); btnGroup.add(rdBtm); btnGroup.add(rdLinkType); northPanel.setLayout(new FlowLayout(FlowLayout.LEFT)); northPanel.add(btnCreate); northPanel.add(btnModify); northPanel.add(btnDelete); northPanel.add(rdBtm); northPanel.add(rdLinkType); //add by caill start //为定位按钮增添点击事件 sel.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { //e.getSource(); String test = textField.getText().trim(); //当业务类型树被选中时 if(rdBtm.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 BtmItemWrapper) { BtmItemWrapper wrapper = (BtmItemWrapper) element .getUserObject(); if (wrapper != null && wrapper.btmItem!=null && wrapper.btmItem.name.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 LinkTypeWrapper) { LinkTypeWrapper wrapper = (LinkTypeWrapper) element .getUserObject(); if (wrapper != null && wrapper.linkType!=null && wrapper.linkType.name.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(rdBtm.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 BtmItemWrapper) { BtmItemWrapper wrapper = (BtmItemWrapper) element .getUserObject(); if (wrapper != null && wrapper.btmItem!=null && wrapper.btmItem.name.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 LinkTypeWrapper) { LinkTypeWrapper wrapper = (LinkTypeWrapper) element .getUserObject(); if (wrapper != null && wrapper.linkType!=null && wrapper.linkType.name.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 //设置cp_treePanel cp_treePanel.setLayout(new GridBagLayout()); GridBagConstraints g = new GridBagConstraints(); g.gridx = 0; g.gridy = 0; g.weightx = 1.0; g.weighty = 1.0; g.fill = GridBagConstraints.BOTH; if(rdBtm.isSelected()){ cp_treePanel.add(btmTree, g); }else if(rdLinkType.isSelected()){ cp_treePanel.add(linkTypeTree, g); } //设置cp_mainPanel cp_mainPanel.setLayout(new BorderLayout()); cpm_northPanel = new JPanel(); cpm_centerPanel = new JPanel(); cpm_southPanel = new JPanel(); cp_mainPanel.add(cpm_northPanel, BorderLayout.NORTH); cp_mainPanel.add(cpm_centerPanel, BorderLayout.CENTER); cp_mainPanel.add(cpm_southPanel, BorderLayout.SOUTH); cpm_northPanel.setMinimumSize(new Dimension(400, 40)); cpm_northPanel.setLayout(new GridBagLayout()); GridBagConstraints g1 = new GridBagConstraints(); g1.gridheight = 30; g1.anchor = GridBagConstraints.WEST; g1.gridx = 0; g1.gridy = 0; g1.weighty = 0.0; g1.fill = GridBagConstraints.NONE; cpm_northPanel.add(new JLabel("模板列表 "), g1); g1.gridx = 1; combQTD = new JComboBox(); combQTD.setPreferredSize(new Dimension(300, 23)); cpm_northPanel.add(combQTD, g1); g1.gridx = 2; qtdLab = new JLabel("模板名: "); cpm_northPanel.add(qtdLab, g1); g1.gridx = 3; g1.gridwidth = GridBagConstraints.REMAINDER; tfName = new JTextField(20); cpm_northPanel.add(tfName, g1); qtdLab.setVisible(false); tfName.setVisible(false); //设置cpm_centerPanel选择查询属性, 定制查询模板 cpm_centerPanel.setBorder(BorderFactory.createTitledBorder("选择查询属性")); //占用空间的透明边框(间距) cpm_centerPanel.setAutoscrolls(true); cpm_centerPanel.setLayout(new BorderLayout(5, 5)); scrollPane = new JScrollPane(); cpm_centerPanel.add(scrollPane, BorderLayout.CENTER); tableModel = new BtmAttrTableModel(); abTable = new JXTable(tableModel); TableColumn colIndex = abTable.getColumn(0); colIndex.setMaxWidth(50); colIndex.setMinWidth(50); TableColumn column = abTable.getColumn(1); column.setCellEditor(new CheckBoxEditor(new JCheckBox())); column.setCellRenderer(new CheckBoxRenderer()); column.setMaxWidth(60); column.setMinWidth(60); abTable.setRowHeight(ROW_HEIGHT); abTable.setHorizontalScrollEnabled(true); abTable.setHighlighters(HighlighterFactory.createAlternateStriping()); //排序后,引起其他页面的数据不显示 abTable.setSortable(false); //设置表头高度 JTableHeader tableHeader = abTable.getTableHeader(); Dimension size = tableHeader.getPreferredSize(); size.height = TABLE_HEADER_HEIGHT; tableHeader.setPreferredSize(size); scrollPane.setViewportView(abTable); //设置cpm_southPanel确定, 取消按钮 btnSelectAll = new JButton("全选"); btnOK = new JButton("确定"); btnCancel = new JButton("取消"); FlowLayout layout2 = (FlowLayout) cpm_southPanel.getLayout(); layout2.setAlignment(FlowLayout.RIGHT); cpm_southPanel.setLayout(layout2); cpm_southPanel.add(btnSelectAll); cpm_southPanel.add(btnOK); cpm_southPanel.add(btnCancel); setEnable(); } /** * 加监听 */ private void addListener(){ //创建查询模板 btnCreate.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { if(rdBtm.isSelected() && selectedBtm == null){ JOptionPane.showMessageDialog(northPanel, "请选中业务类型创建模板", "无业务类型", JOptionPane.ERROR_MESSAGE); return; } if(rdLinkType.isSelected() && selectedLinkType == null){ JOptionPane.showMessageDialog(northPanel, "请选中链接类型创建模板", "无链接类型", JOptionPane.ERROR_MESSAGE); return; } if(flag == 1){ return; }else{ flag = 1; setEnable(); } } }); //修改查询模板 btnModify.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { if(rdBtm.isSelected() && selectedBtm == null){ JOptionPane.showMessageDialog(northPanel, "请选中业务类型创建模板", "无业务类型", JOptionPane.ERROR_MESSAGE); return; } if(rdLinkType.isSelected() && selectedLinkType == null){ JOptionPane.showMessageDialog(northPanel, "请选中链接类型创建模板", "无链接类型", JOptionPane.ERROR_MESSAGE); return; } QTDWrapper qtdWrapper = (QTDWrapper)combQTD.getSelectedItem(); if(qtdWrapper == null){ JOptionPane.showMessageDialog(northPanel, "请选择要修改的模板", "没有选中模板", JOptionPane.WARNING_MESSAGE); return; } if(flag == 2){ return; }else{ flag = 2; setEnable(); initCombQTD(); } } }); //删除查询模板 btnDelete.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { if(rdBtm.isSelected() && selectedBtm == null){ JOptionPane.showMessageDialog(northPanel, "请选中业务类型创建模板", "无业务类型", JOptionPane.ERROR_MESSAGE); return; } if(rdLinkType.isSelected() && selectedLinkType == null){ JOptionPane.showMessageDialog(northPanel, "请选中链接类型创建模板", "无链接类型", JOptionPane.ERROR_MESSAGE); return; } QTDWrapper qtdWrapper = (QTDWrapper)combQTD.getSelectedItem(); if(qtdWrapper == null){ JOptionPane.showMessageDialog(northPanel, "请选择要删除的模板", "没有选中模板", JOptionPane.WARNING_MESSAGE); return; } Object[] options = { "Yes", "No" }; String qtdName = qtdWrapper.qtd.name; int option = JOptionPane .showOptionDialog(getInstance(), "确认是否删除查询模版定义\"" + qtdName + "\"", "查询模版定义删除", JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE, null, options, options[1]); // int option = JOptionPane.showConfirmDialog(getInstance(), "是否确认删除", "删除确认", JOptionPane.YES_NO_CANCEL_OPTION); // int option = JOptionPane.showConfirmDialog(northPanel, "是否确定要删除查询模板", "确认删除", JOptionPane.YES_NO_OPTION); if(option != JOptionPane.YES_OPTION){ return; } boolean flag = false; try { flag = ServiceProvider.getOMDService().getQTDService().deleteQTD(qtdName); } catch (VCIError e1) { e1.printStackTrace(); } if(flag){ JOptionPane.showMessageDialog(northPanel, "删除查询模板成功", "删除模板成功", JOptionPane.INFORMATION_MESSAGE); initCombQTD(); }else{ JOptionPane.showMessageDialog(northPanel, "删除查询模板失败", "删除模板失败", JOptionPane.ERROR_MESSAGE); } } }); rdBtm.addItemListener(new ItemListener() { @Override public void itemStateChanged(ItemEvent e) { cp_treePanel.removeAll(); GridBagConstraints g = new GridBagConstraints(); g.gridx = 0; g.gridy = 0; g.weightx = 1.0; g.weighty = 1.0; g.fill = GridBagConstraints.BOTH; cp_treePanel.add(btmTree, g); cp_treePanel.updateUI(); selectedLinkType = null; tfName.setText(""); } }); rdLinkType.addItemListener(new ItemListener() { @Override public void itemStateChanged(ItemEvent e) { cp_treePanel.removeAll(); GridBagConstraints g = new GridBagConstraints(); g.gridx = 0; g.gridy = 0; g.weightx = 1.0; g.weighty = 1.0; g.fill = GridBagConstraints.BOTH; cp_treePanel.add(linkTypeTree, g); cp_treePanel.updateUI(); selectedBtm = null; tfName.setText(""); } }); //业务类型树选择的变化 btmTree.getSelectionModel().addTreeSelectionListener(new TreeSelectionListener() { @Override public void valueChanged(TreeSelectionEvent e) { DefaultMutableTreeNode selectedNode = (DefaultMutableTreeNode) btmTree.getLastSelectedPathComponent(); if(selectedNode == null){ selectedBtm = null; } if(selectedNode.getUserObject() instanceof BtmItemWrapper){ selectedBtm = ((BtmItemWrapper)selectedNode.getUserObject()).btmItem; }else{ selectedBtm = null; } initBtmAttrTable(); initCombQTD(); setEnable(); } }); //链接类型树选择的变化 linkTypeTree.getSelectionModel().addTreeSelectionListener(new TreeSelectionListener() { @Override public void valueChanged(TreeSelectionEvent e) { DefaultMutableTreeNode selectedNode = (DefaultMutableTreeNode) linkTypeTree.getLastSelectedPathComponent(); if(selectedNode == null){ selectedLinkType = null; } if(selectedNode.getUserObject() instanceof LinkTypeWrapper){ selectedLinkType = ((LinkTypeWrapper)selectedNode.getUserObject()).linkType; }else{ selectedLinkType = null; } initLinkTypeAttrTable(); initCombQTD(); setEnable(); } }); //确定(创建, 修改业务类型的查询模板) btnOK.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { if(flag == 1){ if(!checkName()){ return; } QTD qtd = new QTD(); qtd.name = tfName.getText(); qtd.creator = "sam"; qtd.createTime = System.currentTimeMillis(); qtd.btmName = selectedBtm == null ? "" : selectedBtm.name; qtd.linkTypeName = selectedLinkType == null ? "" : selectedLinkType.name; List abList = new ArrayList(); for(int i = 0; i < abTable.getRowCount(); i++){ if(((JCheckBox)abTable.getValueAt(i, 1)).isSelected()){ abList.add((String)abTable.getValueAt(i, 2)); } } qtd.abNames = abList.toArray(new String[0]); boolean addFlag = false; try { addFlag = ServiceProvider.getOMDService().getQTDService().addQTD(qtd); } catch (VCIError e1) { e1.printStackTrace(); } if(addFlag){ JOptionPane.showMessageDialog(cp_mainPanel, "增加业务类型查询模板成功", "增加模板成功", JOptionPane.INFORMATION_MESSAGE); }else{ JOptionPane.showMessageDialog(cp_mainPanel, "增加业务类型查询模板失败", "增加模板失败", JOptionPane.ERROR_MESSAGE); } flag = 0; updateInfo(); }else if(flag == 2){ QTDWrapper qtdWrapper = (QTDWrapper)combQTD.getSelectedItem(); if(qtdWrapper == null){ JOptionPane.showMessageDialog(cp_mainPanel, "请选择要修改的模板", "没有选中模板", JOptionPane.WARNING_MESSAGE); return; } QTD qtd = qtdWrapper.qtd; List abNameList = new ArrayList(); int count = abTable.getRowCount(); for(int i = 0; i < count; i++){ if(((JCheckBox)abTable.getValueAt(i, 1)).isSelected()){ abNameList.add(((String)abTable.getValueAt(i, 2))); } } qtd.abNames = abNameList.toArray(new String[0]); boolean modifyFlag = false; try { modifyFlag = ServiceProvider.getOMDService().getQTDService().modifyQTD(qtd); } catch (VCIError e1) { e1.printStackTrace(); } if(modifyFlag){ JOptionPane.showMessageDialog(cp_mainPanel, "修改模板成功", "修改成功", JOptionPane.INFORMATION_MESSAGE); }else{ JOptionPane.showMessageDialog(cp_mainPanel, "修改模板失败", "修改失败", JOptionPane.ERROR_MESSAGE); } flag = 0; updateInfo(); } } }); combQTD.addItemListener(new ItemListener() { @Override public void itemStateChanged(ItemEvent e) { isAllSelected = -1;//等于0,已经全部选中;等于1,一个都没有选中。 selectAll = false ; if(rdBtm.isSelected()){ initBtmAttrTable(); }else if(rdLinkType.isSelected()){ initLinkTypeAttrTable(); } } }); //add by guo ==全选,selectAll值为false,第一次点击"全选"按钮;isAllSelected=0,属性全选中,isAllSelected=1,属性全部没有选中 btnSelectAll.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { List attsList = null; String[] attsArr; if(rdBtm.isSelected()){//业务类型 attsList = BtmProvider.getInstance().getAllAbNames(selectedBtm.name); } else {//链接类型 attsArr = new LinkTypeInterfaceImpl().getDetailAttributesByLinkTypeName(selectedLinkType.name); attsList = Arrays.asList(attsArr); } int countAtts = attsList.size(); if(selectAll == false){//第一次点击"全选" selectAll = true; List abNameList = new ArrayList(); for(int i = 0; i < countAtts; i++){ if(((JCheckBox)abTable.getValueAt(i, 1)).isSelected()){ abNameList.add(((String)abTable.getValueAt(i, 2))); } } if(abNameList.size() == countAtts){ for(int i = 0; i < countAtts; i++){ ((JCheckBox)abTable.getValueAt(i, 1)).setSelected(false); } isAllSelected = 1; } else { for(int i = 0; i < countAtts; i++){ ((JCheckBox)abTable.getValueAt(i, 1)).setSelected(true); } isAllSelected = 0; } } else {//已经点击过"全选"按钮 if(isAllSelected == 0){//属性全选中 for(int i = 0; i < countAtts; i++){ ((JCheckBox)abTable.getValueAt(i, 1)).setSelected(false); } isAllSelected = 1; } else if(isAllSelected == 1){//属性没有被选中 for(int i = 0; i < countAtts; i++){ ((JCheckBox)abTable.getValueAt(i, 1)).setSelected(true); } isAllSelected = 0; } } abTable.repaint(); } }); }; /** * 设置当前业务类型下的模板定义列表 */ private void initCombQTD(){ combQTD.removeAllItems(); if(rdBtm.isSelected() && selectedBtm == null){ return; } if(rdLinkType.isSelected() && selectedLinkType == null){ return; } QTD[] qtdArray = null; if(rdBtm.isSelected()){ String btmName = selectedBtm.name; if(btmName == null || btmName.equals("")){ return; } try { qtdArray = ServiceProvider.getOMDService().getQTDService().getBizTypeQTDs(btmName); } catch (VCIError e) { e.printStackTrace(); } if(qtdArray == null){ return; } for(int i = 0; i < qtdArray.length; i++){ combQTD.addItem(new QTDWrapper(qtdArray[i])); } }else if(rdLinkType.isSelected()){ String linkTypeName = selectedLinkType.name; if(linkTypeName == null || linkTypeName.equals("")){ return; } try { qtdArray = ServiceProvider.getOMDService().getQTDService().getLinkTypeQTDs(linkTypeName); } catch (VCIError e) { e.printStackTrace(); } if(qtdArray == null){ return; } for(int i = 0; i < qtdArray.length; i++){ combQTD.addItem(new QTDWrapper(qtdArray[i])); } } } /** * 设置业务类型的属性列表 * @param abNameList */ private void initBtmAttrTable(){ if(selectedBtm == null){ tableModel.setRowCount(0); return; } List selectedABS = null; QTDWrapper qtdWrapper = (QTDWrapper)combQTD.getSelectedItem(); if(qtdWrapper != null){ selectedABS = Arrays.asList(qtdWrapper.qtd.abNames); } List abNameList = BtmProvider.getInstance().getAllAbNames(selectedBtm.name); int count = abNameList.size(); tableModel.setRowCount(count); //重新设置table的Cell的可编辑性 tableModel.setInitFlag(false); for(int i = 0; i < count; i++){ abTable.setValueAt(i, i, 0); abTable.setValueAt(new JCheckBox(), i, 1); if(selectedABS != null){ if(selectedABS.contains(abNameList.get(i))){ ((JCheckBox)abTable.getValueAt(i, 1)).setSelected(true); } } abTable.setValueAt(abNameList.get(i), i, 2); } //重新设置table的Cell的可编辑性 tableModel.setInitFlag(true); } /** * 设置链接类型的属性列表 * @param abNameList */ private void initLinkTypeAttrTable(){ if(selectedLinkType == null){ tableModel.setRowCount(0); return; } List selectedABS = null; QTDWrapper qtdWrapper = (QTDWrapper)combQTD.getSelectedItem(); if(qtdWrapper != null){ selectedABS = Arrays.asList(qtdWrapper.qtd.abNames); } String[] abNameList = new LinkTypeInterfaceImpl().getDetailAttributesByLinkTypeName(selectedLinkType.name); int count = abNameList.length; tableModel.setRowCount(count); //重新设置table的Cell的可编辑性 tableModel.setInitFlag(false); for(int i = 0; i < count; i++){ abTable.setValueAt(i, i, 0); abTable.setValueAt(new JCheckBox(), i, 1); if(selectedABS != null){ if(selectedABS.contains(abNameList[i])){ ((JCheckBox)abTable.getValueAt(i, 1)).setSelected(true); } } abTable.setValueAt(abNameList[i], i, 2); } //重新设置table的Cell的可编辑性 tableModel.setInitFlag(true); } /** * 当flag为0时, unenable * 当flag为1时, enable */ private void setEnable(){ if(flag == 0){ combQTD.setEnabled(true); qtdLab.setVisible(false); tfName.setVisible(false); abTable.setEnabled(false); btnSelectAll.setEnabled(false); btnOK.setEnabled(false); btnCancel.setEnabled(false); }else if(flag == 1){ combQTD.setSelectedItem(null); combQTD.setEnabled(false); qtdLab.setVisible(true); tfName.setVisible(true); abTable.setEnabled(true); btnSelectAll.setEnabled(true); btnOK.setEnabled(true); btnCancel.setEnabled(true); }else if(flag == 2){ combQTD.setEnabled(true); qtdLab.setVisible(false); tfName.setVisible(false); abTable.setEnabled(true); btnSelectAll.setEnabled(true); btnOK.setEnabled(true); btnCancel.setEnabled(true); } } private boolean checkName(){ if(tfName.getText().equals("")){ JOptionPane.showMessageDialog(this, "请输入模板定义名", "注意", JOptionPane.WARNING_MESSAGE); return false; } String name = tfName.getText(); if(!name.matches("[a-z A-Z]*")){ JOptionPane.showMessageDialog(this, "模板定义名只能为英文字母", "注意", JOptionPane.WARNING_MESSAGE); return false; } String qtdName = name.toLowerCase(); try { if(ServiceProvider.getOMDService().getQTDService().isExistsQTD(qtdName)){ JOptionPane.showMessageDialog(this, "该模板定义名已经被使用, 请更换", "注意", JOptionPane.WARNING_MESSAGE); return false; } } catch (VCIError e) { e.printStackTrace(); } catch (HeadlessException e) { e.printStackTrace(); } return true; } private void updateInfo(){ initCombQTD(); if(rdBtm.isSelected()){ initBtmAttrTable(); }else if(rdLinkType.isSelected()){ initLinkTypeAttrTable(); } setEnable(); } }