/*
* $Id: ColumnHeaderListener.java,v 1.5 2006/09/25 16:20:18 marc0815 Exp $
*
* Created on 16.04.2005
*
*/
package de.moonflower.jfritz.callerlist;
import java.awt.Rectangle;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import javax.swing.JTable;
import javax.swing.table.JTableHeader;
import javax.swing.table.TableColumnModel;
import javax.swing.table.TableModel;
import de.moonflower.jfritz.JFritz;
/**
* Listener for clicks on the caller table header columns.
*
* @author Arno Willig
*/
public class ColumnHeaderListener extends MouseAdapter {
CallerList list;
public ColumnHeaderListener(TableModel list) {
super();
this.list = (CallerList) list;
}
public void mouseClicked(MouseEvent evt) {
JTable table = ((JTableHeader) evt.getSource()).getTable();
TableColumnModel colModel = table.getColumnModel();
// The index of the column whose header was clicked
int vColIndex = colModel.getColumnIndexAtX(evt.getX());
int mColIndex = table.convertColumnIndexToModel(vColIndex);
// Return if not clicked on any column header
if (vColIndex == -1) {
return;
}
// Determine if mouse was clicked between column heads
Rectangle headerRect = table.getTableHeader().getHeaderRect(vColIndex);
if (vColIndex == 0) {
headerRect.width -= 6; // Hard-coded constant
} else {
headerRect.grow(-6, 0); // Hard-coded constant
}
if (!headerRect.contains(evt.getX(), evt.getY())) {
// Mouse was clicked between column heads
// vColIndex is the column head closest to the click
// vLeftColIndex is the column head to the left of the click
// int vLeftColIndex = vColIndex;
if (evt.getX() < headerRect.x) {
// vLeftColIndex--;
}
} else {
// Disable editing
try {
JFritz.getJframe().getCallerTable().getCellEditor()
.cancelCellEditing();
} catch (NullPointerException e) {
}
list.sortAllFilteredRowsBy(mColIndex);
}
}
}
|