package kg.apc.jmeter.graphs; import javax.swing.event.TableModelEvent; import java.awt.Color; import javax.swing.JTable; import javax.swing.ListSelectionModel; import javax.swing.event.TableModelListener; import javax.swing.table.TableCellRenderer; import kg.apc.charting.AbstractGraphRow; import org.apache.jorphan.gui.ObjectTableModel; import org.apache.jorphan.reflect.Functor; class ChartRowsTable extends JTable { TableCellRenderer colorRenderer = new ColorRenderer(false); JRowsSelectorPanel parentContainer = null; /** * */ public ChartRowsTable(JRowsSelectorPanel parent) { super(); parentContainer = parent; initializeTableModel(); setSelectionMode(ListSelectionModel.SINGLE_SELECTION); getTableHeader().setDefaultRenderer(new HeaderAsTextRenderer()); getTableHeader().addMouseListener(new HeaderClickCheckAllListener()); getTableHeader().setReorderingAllowed(false); getTableHeader().setResizingAllowed(false); setCollumnsSize(); } private void setCollumnsSize() { getColumnModel().getColumn(0).setPreferredWidth(100); getColumnModel().getColumn(1).setPreferredWidth(100); getColumnModel().getColumn(2).setPreferredWidth(500); } private void initializeTableModel() { ObjectTableModel model = new ObjectTableModel(new String[] { "(Un)Check All", "Legend Color", "Row Name" }, AbstractGraphRow.class, new Functor[] { new Functor("isDrawOnChart"), new Functor("getColor"), new Functor("getLabel") }, new Functor[] { new Functor("setDrawOnChart"), null, null }, new Class[] { Boolean.class, Color.class, String.class }); model.addTableModelListener(new TableModelListener() { @Override public void tableChanged(TableModelEvent e) { if(parentContainer != null) { parentContainer.refreshPreview(); } } }); setModel(model); } /** * * @param row */ public void addRow(AbstractGraphRow row) { ((ObjectTableModel) dataModel).addRow(row); } @Override public TableCellRenderer getCellRenderer(int row, int column) { if ((column == 1)) { return colorRenderer; } return super.getCellRenderer(row, column); } /** * */ public void clear() { initializeTableModel(); setCollumnsSize(); } }