package edu.brown.gui.stats; import java.awt.BorderLayout; import java.util.ArrayList; import java.util.List; import javax.swing.JPanel; import javax.swing.JScrollPane; import javax.swing.JTable; import javax.swing.ListSelectionModel; import javax.swing.table.AbstractTableModel; import org.voltdb.catalog.Table; import edu.brown.catalog.CatalogKey; public class TableListPanel extends JPanel { private static final long serialVersionUID = 1L; private JTable tableListTable; private final TableListPanel.TableModel tableModel = new TableModel(); public TableListPanel() { super(); this.init(); } public ListSelectionModel getSelectionModel() { return (this.tableListTable.getSelectionModel()); } public void setTables(Iterable<Table> tables) { this.tableModel.setTables(tables); } public String getSelectedTable() { int idx = this.tableListTable.getSelectedRow(); String table_key = null; if (idx != -1) { Table catalog_tbl = this.tableModel.getTables().get(idx); assert(catalog_tbl != null); table_key = CatalogKey.createKey(catalog_tbl); } return (table_key); } private void init() { this.setLayout(new BorderLayout()); tableListTable = new JTable(this.tableModel); tableListTable.setAutoResizeMode(JTable.AUTO_RESIZE_ALL_COLUMNS); tableListTable.setFillsViewportHeight(false); tableListTable.setDragEnabled(false); tableListTable.setColumnSelectionAllowed(false); tableListTable.setSelectionMode(javax.swing.ListSelectionModel.SINGLE_SELECTION); // // // // Set the column widths // // // tableListTable.getColumnModel().getColumn(0).setPreferredWidth(40); // tableListTable.getColumnModel().getColumn(1).setPreferredWidth(20); // tableListTable.getColumnModel().getColumn(3).setPreferredWidth(40); JScrollPane scrollPane = new JScrollPane(tableListTable); //scrollPane.setPreferredSize(new Dimension(DesignerVisualization.WINDOW_WIDTH, 175)); //scrollPane.setMaximumSize(this.columnSetTable.getPreferredScrollableViewportSize()); this.add(scrollPane, BorderLayout.CENTER); } private class TableModel extends AbstractTableModel { private static final long serialVersionUID = 1L; protected final List<Table> tables = new ArrayList<Table>(); protected final String columns[] = { "Table", "Partition Attribute", "Is Replicated" }; public TableModel() { super(); } public List<Table> getTables() { return (this.tables); } public void setTables(Iterable<Table> tables) { this.tables.clear(); for (Table catalog_tbl : tables) { this.tables.add(catalog_tbl); } } public String getColumnName(int col) { return (this.columns[col]); } public int getColumnCount() { return (this.columns.length); } public int getRowCount() { return (this.tables.size()); } public Object getValueAt(int row, int col) { String ret = null; Table catalog_tbl = this.tables.get(row); switch (col) { case 0: ret = catalog_tbl.getName(); break; case 1: ret = (catalog_tbl.getPartitioncolumn() != null ? catalog_tbl.getPartitioncolumn().getName() : "-"); break; case 2: ret = Boolean.toString(catalog_tbl.getIsreplicated()); break; } // SWITCH return (ret); } public boolean isCellEditable(int row, int col) { return (false); } public Class<?> getColumnClass(int c) { return getValueAt(0, c).getClass(); } } // END CLASS }