package jdepend.client.report.ui; import java.awt.BorderLayout; import java.awt.Dimension; import java.awt.FlowLayout; import java.awt.Point; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.KeyAdapter; import java.awt.event.KeyEvent; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; import javax.swing.BorderFactory; import javax.swing.JButton; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JScrollPane; import javax.swing.JTable; import javax.swing.JTextField; import javax.swing.table.DefaultTableModel; import jdepend.client.report.util.ReportConstant; import jdepend.framework.ui.component.TableSorter; import jdepend.framework.ui.dialog.CooperDialog; import jdepend.framework.util.BundleUtil; import jdepend.metadata.CandidateUtil; import jdepend.metadata.util.JavaClassUtil; import jdepend.model.JDependUnitMgr; import jdepend.model.JavaClassUnit; public class SelectClassDialog extends CooperDialog { private JTable classListTable; private DefaultTableModel classListModel; protected String current; public SelectClassDialog() { super("类列表"); getContentPane().setLayout(new BorderLayout()); JPanel searchPanel = new JPanel(); searchPanel.setLayout(new FlowLayout(FlowLayout.LEFT)); JLabel titleLabel = new JLabel(BundleUtil.getString(BundleUtil.Metrics_Name) + ":"); searchPanel.add(titleLabel); final JTextField nameFilter = new JTextField(); nameFilter.setPreferredSize(new Dimension(250, 20)); nameFilter.addKeyListener(new KeyAdapter() { @Override public void keyReleased(KeyEvent e) { filterClassList(nameFilter.getText()); } private void filterClassList(String name) { refresh(name); } }); searchPanel.add(nameFilter); this.add(BorderLayout.NORTH, searchPanel); this.initTable(); JScrollPane pane = new JScrollPane(classListTable); pane.setBorder(BorderFactory.createEmptyBorder(0, 0, 0, 0)); this.add(BorderLayout.CENTER, pane); JButton button = new JButton(BundleUtil.getString(BundleUtil.Command_OK)); button.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { callback(); dispose(); } }); JPanel buttonPanel = new JPanel(); buttonPanel.add(button); this.add(BorderLayout.SOUTH, buttonPanel); this.refresh(); } protected void callback() { } private JTable initTable() { classListModel = new DefaultTableModel() { @Override public boolean isCellEditable(int row, int column) { return false; } }; TableSorter sorter = new TableSorter(classListModel); classListTable = new JTable(sorter); classListTable.addMouseListener(new MouseAdapter() { @Override public void mousePressed(MouseEvent e) { JTable table = (JTable) e.getSource(); Point p = new Point(e.getX(), e.getY()); int row = table.rowAtPoint(p); current = CandidateUtil.getId((String) table.getValueAt(row, 0), (String) table.getValueAt(row, 1)); } }); sorter.setTableHeader(classListTable.getTableHeader()); classListModel.addColumn(ReportConstant.JavaClass_Place); classListModel.addColumn(ReportConstant.Name); classListTable.getColumnModel().getColumn(0).setMinWidth(0); classListTable.getColumnModel().getColumn(0).setMaxWidth(0); return classListTable; } private void refresh() { refresh(null); } private void refresh(String name) { classListModel.setRowCount(0); Object row[]; for (JavaClassUnit javaClassUnit : JDependUnitMgr.getInstance().getResult().getClasses()) { if (name == null || name.length() == 0 || JavaClassUtil.match(name, javaClassUnit.getJavaClass())) { row = new Object[2]; row[0] = javaClassUnit.getJavaClass().getPlace(); row[1] = javaClassUnit.getJavaClass().getName(); classListModel.addRow(row); } } } }