package jdepend.client.report.ui; import java.awt.BorderLayout; import java.util.Collection; import javax.swing.BorderFactory; import javax.swing.JPanel; import javax.swing.JScrollPane; import javax.swing.JTable; import javax.swing.table.DefaultTableModel; import jdepend.framework.ui.component.TableSorter; import jdepend.metadata.InvokeItem; import jdepend.metadata.Method; import jdepend.metadata.RemoteInvokeItem; public class InvokeItemListPanel extends JPanel { private DefaultTableModel invokeItemListModel; private JTable invokedItemListTable; private Collection<InvokeItem> invokedItems; public InvokeItemListPanel(Collection<InvokeItem> invokedItems) { super(); this.setLayout(new BorderLayout()); this.invokedItems = invokedItems; this.initInvokeItemList(); JScrollPane pane = new JScrollPane(invokedItemListTable); pane.setBorder(BorderFactory.createEmptyBorder(0, 0, 0, 0)); this.add(pane); } public int loadInvokeItemList() { invokeItemListModel.setRowCount(0); Object[] row; Method caller; Method Callee; for (InvokeItem invokeItem : this.invokedItems) { caller = invokeItem.getCaller(); Callee = invokeItem.getCallee(); row = new Object[4]; row[0] = caller.getMethodInfo(); row[1] = Callee.getMethodInfo(); row[2] = invokeItem instanceof RemoteInvokeItem ? "是" : "否"; row[3] = invokeItem.getName(); invokeItemListModel.addRow(row); } return invokeItemListModel.getRowCount(); } protected void initInvokeItemList() { invokeItemListModel = new DefaultTableModel() { @Override public boolean isCellEditable(int row, int column) { return false; } }; TableSorter sorter = new TableSorter(invokeItemListModel); invokedItemListTable = new JTable(sorter); sorter.setTableHeader(invokedItemListTable.getTableHeader()); invokeItemListModel.addColumn("调用者"); invokeItemListModel.addColumn("被调用者"); invokeItemListModel.addColumn("是否包含进程间调用"); invokeItemListModel.addColumn("调用类型"); } }