/* AtomTable.java created 2008-02-28 * */ package org.signalml.app.view.book; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; import javax.swing.JPopupMenu; import javax.swing.JTable; import javax.swing.ListSelectionModel; import javax.swing.SwingUtilities; import javax.swing.table.TableColumnModel; import org.signalml.app.view.TablePopupMenuProvider; /** AtomTable * * * @author Michal Dobaczewski © 2007-2008 CC Otwarte Systemy Komputerowe Sp. z o.o. */ public class AtomTable extends JTable { private static final long serialVersionUID = 1L; private TablePopupMenuProvider popupMenuProvider; public AtomTable(AtomTableModel model) { super(model, (TableColumnModel) null); getColumnModel().setColumnSelectionAllowed(false); setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION); addMouseListener(new MouseAdapter() { @Override public void mousePressed(MouseEvent e) { if (SwingUtilities.isRightMouseButton(e) && (e.getClickCount() == 1)) { int index = rowAtPoint(e.getPoint()); ListSelectionModel selectionModel = getSelectionModel(); if (!selectionModel.isSelectedIndex(index)) { selectionModel.setSelectionInterval(index, index); } } } }); getTableHeader().setReorderingAllowed(false); setRowSorter(model.getSorter()); } @Override public AtomTableModel getModel() { return (AtomTableModel) super.getModel(); } @Override public JPopupMenu getComponentPopupMenu() { if (popupMenuProvider == null) { return null; } return popupMenuProvider.getPopupMenu(-1, getSelectedRow()); } public TablePopupMenuProvider getPopupMenuProvider() { return popupMenuProvider; } public void setPopupMenuProvider(TablePopupMenuProvider popupMenuProvider) { this.popupMenuProvider = popupMenuProvider; } }