package com.vci.client.omd.btm.ui; import java.awt.BorderLayout; import java.awt.Dimension; import java.awt.Toolkit; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.util.ArrayList; import java.util.List; import javax.swing.JButton; import javax.swing.JDialog; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JScrollPane; import javax.swing.JTextField; import javax.swing.table.DefaultTableModel; import javax.swing.table.JTableHeader; import org.jdesktop.swingx.JXTable; import org.jdesktop.swingx.decorator.HighlighterFactory; import com.vci.client.omd.btm.toOutside.Datacenter; public class LCycleSelectDialog extends JDialog{ /** * */ private static final long serialVersionUID = 855910566692375057L; private JPanel northPanel, centerPanel, southPanel; private JButton btnOK, btnCancel; private JScrollPane scrollPane; private JXTable table; private DefaultTableModel tableModel; private String[] tableHeader = {"生命周期模板名"}; private final int rowHeight = 40; private final int headerHeight = 40; private String[] names; private String selectName = ""; private List lcList; private List selectNames; private JLabel jla; public JTextField jt1; private JButton sel; public LCycleSelectDialog(List lcList_){ this.lcList = lcList_; initUI(); initTable(); addListener(); } private void initUI(){ this.setTitle("生命周期模板"); Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize(); this.setSize(screenSize.width/2, screenSize.height/2); this.setModal(true); this.setLocationRelativeTo(null); this.setResizable(false); this.setLayout(new BorderLayout()); //查询框和查询按钮 northPanel = new JPanel(); //生命周期模板名字列表 centerPanel = new JPanel(); //确定,取消按钮 southPanel = new JPanel(); this.add(northPanel, BorderLayout.NORTH); this.add(centerPanel, BorderLayout.CENTER); this.add(southPanel, BorderLayout.SOUTH); sel = new JButton("查询"); jt1 = new JTextField(20); jla = new JLabel("生命周期模板名"); northPanel.add(jla); northPanel.add(jt1); northPanel.add(sel); scrollPane = new JScrollPane(); centerPanel.setLayout(new BorderLayout()); centerPanel.add(scrollPane, BorderLayout.CENTER); tableModel = new DefaultTableModel(); tableModel.setColumnCount(tableHeader.length); tableModel.setColumnIdentifiers(tableHeader); table = new JXTable(tableModel); table.setHighlighters(HighlighterFactory.createSimpleStriping()); table.setHorizontalScrollEnabled(true); table.setSortable(false); table.setRowHeight(rowHeight); JTableHeader tableHeader = table.getTableHeader(); Dimension size = tableHeader.getPreferredSize(); size.height = headerHeight; tableHeader.setPreferredSize(size); scrollPane.setViewportView(table); btnOK = new JButton("确定"); btnCancel = new JButton("取消"); southPanel.add(btnOK); southPanel.add(btnCancel); } private void initTable(){ List selectableList = getSelectableList(); tableModel.setRowCount(selectableList.size()); table.setEditable(true); for(int i = 0; i < selectableList.size(); i++){ table.setValueAt(selectableList.get(i), i, 0); } table.setEditable(false); } private void addListener(){ btnOK.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { int selectRow = table.getSelectedRow(); if(selectRow >= 0){ selectName = (String) table.getValueAt(selectRow, 0); } selectNames = new ArrayList(); int[] selectedRows = table.getSelectedRows(); for(int i = 0; i < selectedRows.length; i++){ selectNames.add((String) table.getValueAt(selectedRows[i], 0)); } dispose(); } }); btnCancel.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { dispose(); } }); //add by caill start 2015.11.26 根据查询框中的关键字过滤数据 sel.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent arg0) { // TODO Auto-generated method stub initTable2(); } }); } private void initTable2(){ List selectableList = getSelectableList(); List list = new ArrayList(); String value = jt1.getText().trim(); for(int i = 0; i < selectableList.size(); i++){ if(selectableList.get(i).startsWith(value)){ list.add(selectableList.get(i)); } } tableModel.setRowCount(list.size()); table.setEditable(true); for(int i = 0; i < list.size(); i++){ table.setValueAt(list.get(i), i, 0); } table.setEditable(false); } //add by caill end public String getSelectName(){ return selectName; } public List getSelectNames(){ return selectNames; } private List getSelectableList(){ names = Datacenter.getInstance().getLCyleNames(); if(names == null || names.length == 0){ return null; } List list = new ArrayList(); if(lcList != null){ for(int i = 0; i < names.length; i++){ if(!lcList.contains(names[i])){ list.add(names[i]); } } }else{ for(int i = 0; i < names.length; i++){ list.add(names[i]); } } return list; } }