package prefuse.util.ui; import javax.swing.JFrame; import javax.swing.JScrollPane; import javax.swing.JTable; import javax.swing.table.DefaultTableCellRenderer; import javax.swing.table.TableCellRenderer; import prefuse.data.Table; import prefuse.visual.VisualTable; /** * Swing component that displays a prefuse Table instance in a Swing * JTable component. * * @author <a href="http://jheer.org">jeffrey heer</a> */ public class JPrefuseTable extends JTable { private Table m_table; private TableCellRenderer m_tcr = new DefaultTableCellRenderer(); /** * Create a new JPrefuseTable. * @param t the Table to display. */ public JPrefuseTable(Table t) { super(); m_table = t; PrefuseTableModel model = new PrefuseTableModel(m_table); super.setModel(model); m_table.addTableListener(model); } /** * Get the table backing this component. * @return a prefuse Table instance */ public Table getTable() { return m_table; } /** * Get the cell renderer to use for drawing table cells. * @see javax.swing.JTable#getCellRenderer(int, int) */ public TableCellRenderer getCellRenderer(int r, int c) { return m_tcr; } // ------------------------------------------------------------------------ /** * Create a new window displaying the contents of the input Table as * a Swing JTable. * @param t the Table instance to display * @return a reference to the JFrame holding the table view */ public static JFrame showTableWindow(Table t) { JPrefuseTable table = new JPrefuseTable(t); String title = t.toString(); if ( t instanceof VisualTable ) { title = ((VisualTable)t).getGroup() + " " + title; } JFrame frame = new JFrame(title); frame.getContentPane().add(new JScrollPane(table)); frame.pack(); frame.setVisible(true); return frame; } } // end of class JPrefuseTable