package com.vci.client.portal.NewNewUI.actionmng; import java.awt.BorderLayout; 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.ComponentAdapter; import java.awt.event.ComponentEvent; import java.util.ArrayList; import java.util.Arrays; import java.util.Comparator; import java.util.HashMap; import java.util.List; import javax.swing.BorderFactory; import javax.swing.JButton; import javax.swing.JDialog; import javax.swing.JOptionPane; import javax.swing.JPanel; import javax.swing.JScrollPane; import javax.swing.JSplitPane; import javax.swing.JTree; import javax.swing.event.TreeSelectionEvent; import javax.swing.event.TreeSelectionListener; import javax.swing.tree.DefaultMutableTreeNode; import javax.swing.tree.DefaultTreeModel; import javax.swing.tree.TreePath; import javax.swing.tree.TreeSelectionModel; import com.vci.client.common.PinyinCommon; import com.vci.client.portal.utility.UITools; import com.vci.client.ui.swing.VCISwingUtil; import com.vci.client.ui.swing.components.VCIJButton; import com.vci.client.ui.swing.components.VCIJComboBox; import com.vci.client.ui.swing.components.VCIJLabel; import com.vci.client.ui.swing.components.VCIJPanel; import com.vci.client.ui.swing.components.VCIJTextField; import com.vci.client.ui.swing.components.table.AbstractVCIJTableDataProvider; import com.vci.client.ui.swing.components.table.VCIJTableNode; import com.vci.client.ui.swing.components.table.VCIJTablePanel; import com.vci.corba.common.VCIError; import com.vci.corba.portal.data.Constraint; import com.vci.corba.portal.data.PLAction; import com.vci.corba.portal.data.PLActionCls; import com.vci.mw.ClientContextVariable; /** * Action选择窗口 * @author VCI-STGK006 * */ public class ActionSelectDialog extends JDialog { /** * serialVersionUID */ private static final long serialVersionUID = 5783143146712146457L; private VCIJTablePanel actionTablePanel = null; private JTree clsTree; String[] headerName = new String[] { "编号", "名称","类路径", "链接地址", "类型", "描述" }; private VCIJLabel lblCode = new VCIJLabel("编号:"); private VCIJTextField txtCode = new VCIJTextField(""); private VCIJLabel lblName = new VCIJLabel("名称:"); private VCIJTextField txtName = new VCIJTextField(""); private VCIJLabel lblBSClass = new VCIJLabel("B/S类路径:"); private VCIJTextField txtBSClass = new VCIJTextField(""); private VCIJLabel lblCSClass = new VCIJLabel("C/S类路径:"); private VCIJTextField txtCSClass = new VCIJTextField(""); private VCIJLabel lblType = new VCIJLabel("业务类型:"); private VCIJComboBox cbxType = new VCIJComboBox(new String[]{"","业务类型","链接类型"}); private VCIJLabel lblDesc = new VCIJLabel("描述:"); private VCIJTextField txtDesc = new VCIJTextField(""); private VCIJButton btnSearch = VCISwingUtil.createVCIJButton("search", "查询", "查询", "search.png"); private VCIJButton btnClear = VCISwingUtil.createVCIJButton("clear", "清空", "清空", "clear.gif"); private JSplitPane mainSplitPanel; /** * 用户选择的Action */ private PLAction selectedAction = null; //PLAction[] selectedActions =new PLAction[2]; //add by caill 定义一个list List list=new ArrayList(); /** * 当前选择的分类节点 * 当选择根节点时为null */ private PLActionCls currentCls = null; /** * 构造器 * @param owner */ public ActionSelectDialog(JDialog owner) { super(owner, "选择Action", true); init(); this.validate(); this.setSize(800, 600); this.setLocationRelativeTo(owner); this.setVisible(true); } private void init() { initUI(); initActionListener(); //设置第一个分类选中状态 clsTree.expandRow(0); clsTree.setSelectionRow(0); } private void initUI(){ // this.setLayout(new BorderLayout()); //得到分类树面板 JPanel treePanel = getTreePanel(); //刷新分类树 refreshClsTree(clsTree.getPathForRow(0)); //得到Action列表 JPanel actionPanel = getActionPanel(); actionPanel.setBorder(BorderFactory.createTitledBorder("Action列表")); mainSplitPanel = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT); mainSplitPanel.setDividerSize(2); mainSplitPanel.setDividerLocation(0.2); mainSplitPanel.add(treePanel, JSplitPane.LEFT); mainSplitPanel.add(actionPanel, JSplitPane.RIGHT); //创建按钮面板 FlowLayout fl = new FlowLayout(FlowLayout.CENTER); fl.setHgap(10); JPanel btnPanel = new JPanel(fl); JButton okBtn = new JButton("确定"); okBtn.setSize(50, 25); okBtn.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { okBtnListener(); } }); JButton cancelBtn = new JButton("取消"); cancelBtn.setSize(50, 25); cancelBtn.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { cancelBtnListener(); } }); btnPanel.add(okBtn); btnPanel.add(cancelBtn); this.getContentPane().setLayout(new BorderLayout()); this.getContentPane().add(mainSplitPanel, BorderLayout.CENTER); this.getContentPane().add(btnPanel, BorderLayout.SOUTH); this.addComponentListener(new ComponentAdapter() { @Override public void componentResized(ComponentEvent e) { mainSplitPanel.setDividerLocation(0.2); } }); } /** * 确定按钮 */ private void okBtnListener() { int[] selectedCount = this.actionTablePanel.getSelectedRowIndexs(); if(selectedCount == null || selectedCount.length < 1) { JOptionPane.showMessageDialog(this, "请选择Action!", "系统提示", JOptionPane.INFORMATION_MESSAGE); return; } /*if(selectedCount.length > 1) { JOptionPane.showMessageDialog(this, "只能选择一个Action!", "系统提示", JOptionPane.INFORMATION_MESSAGE); return; }*/ //add by caill start //将所有选中的索引行加入到list中 for(int i=0;i(new ActionDataProvider()); actionTablePanel.setPageSizeList(new int[]{100,150,200,250,300,350,400}); HashMap columnWidthMap = new HashMap(); columnWidthMap.put(1, 150); columnWidthMap.put(2, 250); columnWidthMap.put(3, 400); columnWidthMap.put(4, 500); columnWidthMap.put(5, 300); columnWidthMap.put(6, 200); columnWidthMap.put(7, 500); actionTablePanel.setColumnWidthMaps(columnWidthMap); actionTablePanel.setLastClickRowToChecked(true); actionTablePanel.setShowCheckbox(false); actionTablePanel.buildTablePanel(); actionTablePanel.refreshTableData(); topPanel.add(pp, BorderLayout.NORTH); topPanel.add(actionTablePanel, BorderLayout.CENTER); return topPanel; } class ActionDataProvider extends AbstractVCIJTableDataProvider{ @Override public PLAction[] getDatas(int pageIndex, int pageSize) { PLAction[] res = getTablePanelData(); super.total = res.length; return res; } @Override public VCIJTableNode getNewRowNode(PLAction obj) { return getTablePanelNode(obj); } @Override public String[] getSpecialColumns() { return headerName; } @Override public int getTotal() { return total; } } /** * 查询Action表格数据 * @return */ private PLAction[] getTablePanelData(){ PLAction[] res = null; try { res = UITools.getService().getPLActionsByConsArray(getFilterConstraints()); } catch (VCIError e) { e.printStackTrace(); } Arrays.sort(res, new Comparator(){ @Override public int compare(PLAction o1, PLAction o2) { String py1 = PinyinCommon.getPingYin(o1.plName); String py2 = PinyinCommon.getPingYin(o2.plName); return py1.compareTo(py2); }}); return res; } /** * 设置table查询条件 * @return */ private Constraint[] getFilterConstraints(){ Constraint[] consArray = new Constraint[7]; if(this.currentCls == null) { consArray = new Constraint[6]; } consArray[0] = new Constraint("plcode", txtCode.getText().trim()); consArray[1] = new Constraint("plname", txtName.getText().trim()); consArray[2] = new Constraint("plbsurl", txtBSClass.getText().trim()); consArray[3] = new Constraint("plcsclass", txtCSClass.getText().trim()); String type = cbxType.getSelectedItem().toString(); if(type.equals("业务类型")){ type = "business"; } else if(type.equals("链接类型")){ type = "link"; } consArray[4] = new Constraint("pltypetype", type); consArray[5] = new Constraint("pldesc", txtDesc.getText().trim()); if(this.currentCls != null) { if(this.currentCls.name.equals("未分类")) { consArray[6] = new Constraint("plactioncls", ""); } else { consArray[6] = new Constraint("plactioncls", this.currentCls.id); } } return consArray; } private VCIJTableNode getTablePanelNode(PLAction obj){ VCIJTableNode res = new VCIJTableNode(obj); res.setPropertyValue(headerName[0], obj.plCode); res.setPropertyValue(headerName[1], obj.plName); res.setPropertyValue(headerName[2], obj.plCSClass); res.setPropertyValue(headerName[3], obj.plBSUrl); String plTypeType = obj.plTypeType; String disType = ""; if(plTypeType.equals("business")){ disType = "业务类型"; } else if(plTypeType.equals("link")){ disType = "链接类型"; } res.setPropertyValue(headerName[4], disType); res.setPropertyValue(headerName[5], obj.plDesc); return res; } private void clear(){ txtCode.setText("");txtName.setText(""); txtBSClass.setText("");txtCSClass.setText(""); cbxType.setSelectedIndex(0); cbxType.setSelectedItem(""); txtDesc.setText(""); } private void initActionListener(){ btnClear.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent arg0) { clear(); } }); btnSearch.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent arg0) { actionTablePanel.refreshTableData(); } }); } private GridBagConstraints getGBC(int gridx, int gridy, int gridwidth, int gridheight, double weightx, double weighty, int anchor, int fill, int padxy) { return new GridBagConstraints(gridx, gridy, gridwidth, gridheight, weightx, weighty, anchor, fill, new Insets(padxy, padxy, padxy, padxy), padxy, padxy); } /** * 得到用户选择的Action * @return */ public PLAction getSelectedAction() { return selectedAction; } //add by caill start //添加list返回方法 public List getSelectedActions() { return list; } //add by caill end }