package gov.nih.nci.cagrid.common.portal; import java.awt.Color; import java.awt.Dimension; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; import java.util.Vector; import javax.swing.JTable; import javax.swing.ListSelectionModel; import javax.swing.table.DefaultTableModel; /** * @author <A href="mailto:langella@bmi.osu.edu">Stephen Langella </A> * @author <A href="mailto:oster@bmi.osu.edu">Scott Oster </A> * @author <A href="mailto:hastings@bmi.osu.edu">Shannon Hastings </A> * @created Oct 14, 2004 * @version $Id: ArgumentManagerTable.java,v 1.2 2004/10/15 16:35:16 langella * Exp $ */ public abstract class PortalTable extends JTable { private final static Color DEFAULT_FOREGROUND_1 = Color.BLACK; private final static Color DEFAULT_BACKGROUND_1 = Color.WHITE; private final static Color DEFAULT_FOREGROUND_2 = Color.BLACK; private final static Color DEFAULT_BACKGROUND_2 = Color.WHITE; private final static Color DEFAULT_SELECTED_FOREGROUND = Color.BLACK; private final static Color DEFAULT_SELECTED_BACKGROUND = Color.WHITE; public PortalTable(DefaultTableModel model) { this(model, DEFAULT_BACKGROUND_1, DEFAULT_FOREGROUND_1, DEFAULT_BACKGROUND_2, DEFAULT_FOREGROUND_2, DEFAULT_SELECTED_BACKGROUND, DEFAULT_SELECTED_FOREGROUND); } public PortalTable(DefaultTableModel model, Color bg1, Color fg1, Color bg2, Color fg2, Color sbg, Color sfg) { super(model); setDefaultRenderer(Object.class, new PortalTableCellRenderer(bg1, fg1, bg2, fg2, sbg, sfg)); // setDefaultEditor(JComponent.class, new JComponentCellEditor()); // this.setCellSelectionEnabled(true); this.setRowSelectionAllowed(true); this.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); this.addMouseListener(new MouseAdapter() { public void mouseClicked(MouseEvent e) { if (e.getClickCount() == 2) { try { doubleClick(); } catch (Exception ex) { ex.printStackTrace(); } } else if (e.getClickCount() == 1) { try { singleClick(); } catch (Exception ex) { ex.printStackTrace(); } } } }); // this.setOpaque(true); } public Dimension getPreferredScrollableViewportSize() { return getPreferredSize(); } public abstract void doubleClick() throws Exception; public abstract void singleClick() throws Exception; public boolean isCellEditable(int row, int column) { return false; } public synchronized void addRow(Vector v) { ((DefaultTableModel) this.getModel()).addRow(v); } public synchronized void removeRow(int i) { ((DefaultTableModel) this.getModel()).removeRow(i); } public synchronized void clearTable() { DefaultTableModel model = (DefaultTableModel) this.getModel(); while (model.getRowCount() != 0) { model.removeRow(0); } } }