/* AtomFilterChainTable.java created 2008-03-04
*
*/
package org.signalml.app.view.book.filter;
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.event.TableColumnModelEvent;
import javax.swing.table.TableColumnModel;
import org.signalml.app.view.TablePopupMenuProvider;
import org.signalml.app.view.common.components.cellrenderers.ResolvableTableCellRenderer;
import org.springframework.context.MessageSourceResolvable;
/** AtomFilterChainTable
*
*
* @author Michal Dobaczewski © 2007-2008 CC Otwarte Systemy Komputerowe Sp. z o.o.
*/
public class AtomFilterChainTable extends JTable {
private static final long serialVersionUID = 1L;
private TablePopupMenuProvider popupMenuProvider;
public AtomFilterChainTable(AtomFilterChainTableModel model) {
super(model, (TableColumnModel) null);
setSelectionMode(ListSelectionModel.SINGLE_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);
}
}
}
});
setDefaultRenderer(MessageSourceResolvable.class, new ResolvableTableCellRenderer());
getTableHeader().setReorderingAllowed(false);
TableColumnModel columnModel = getColumnModel();
columnModel.setColumnSelectionAllowed(false);
}
@Override
public void columnAdded(TableColumnModelEvent e) {
super.columnAdded(e);
int index = e.getToIndex();
int width;
switch (index) {
case AtomFilterChainTableModel.INDEX_COLUMN :
width = 50;
break;
case AtomFilterChainTableModel.BLOCKING_COLUMN :
width = 40;
break;
case AtomFilterChainTableModel.ENABLED_COLUMN :
width = 40;
break;
case AtomFilterChainTableModel.NAME_COLUMN :
case AtomFilterChainTableModel.TYPE_COLUMN :
default :
width = 200;
break;
}
getColumnModel().getColumn(index).setPreferredWidth(width);
}
@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;
}
}