package com.limegroup.gnutella.gui.tables; import java.awt.event.MouseEvent; import javax.swing.SwingUtilities; import javax.swing.event.MouseInputListener; import javax.swing.table.JTableHeader; /** * This class handles mouse input to the table. */ //2345678|012345678|012345678|012345678|012345678|012345678|012345678|012345678| public final class HeaderMouseListener implements MouseInputListener { private HeaderMouseObserver hmo; private boolean isResizing = false; public HeaderMouseListener(HeaderMouseObserver hmo) { this.hmo = hmo; } /** * Invoked when the mouse has been clicked on a component. * * @param event the <tt>MouseEvent</tt> that triggered this call */ public void mouseClicked(MouseEvent ev) { if ( !tryPopup(ev) && SwingUtilities.isLeftMouseButton(ev)) { if ( !isResizing ) //generally used for sorting. hmo.handleHeaderColumnLeftClick(ev.getPoint()); else isResizing = false; } } /** * Invoked when a mouse button has been pressed on a component. * * @param event the <tt>MouseEvent</tt> that triggered this call */ public void mousePressed(MouseEvent ev) { if ( !tryPopup(ev) && SwingUtilities.isLeftMouseButton(ev)) { if (((JTableHeader)ev.getSource()).getResizingColumn() == null) hmo.handleHeaderColumnPressed(ev.getPoint()); else isResizing = true; } } /** * Invoked when a mouse button has been released on a component. * * @param event the <tt>MouseEvent</tt> that triggered this call */ public void mouseReleased(MouseEvent ev) { if( !tryPopup(ev) && SwingUtilities.isLeftMouseButton(ev)) { hmo.handleHeaderColumnReleased(ev.getPoint()); } } /** * Invoked when the mouse enters a component. * * @param event the <tt>MouseEvent</tt> that triggered this call */ public void mouseEntered(MouseEvent event) {} /** * Invoked when the mouse exits a component. * * @param event the <tt>MouseEvent</tt> that triggered this call */ public void mouseExited(MouseEvent event) {} /** * Invoked when the mouse drags on a component. */ public void mouseDragged(MouseEvent ev) { // we may still be resizing, but the drag cancels // the clicked event, so it doesn't matter if we set it to // false here. isResizing = false; } public void mouseMoved(MouseEvent ev) { } private boolean tryPopup(MouseEvent ev) { if ( ev.isPopupTrigger() ) { hmo.handleHeaderPopupMenu( ev.getPoint() ); return true; } return false; } }