blob: 9af23510133aae31ee58a796c387d6ee673be4ea [file] [log] [blame]
package jpos.util;
///////////////////////////////////////////////////////////////////////////////
//
// This software is provided "AS IS". The JavaPOS working group (including
// each of the Corporate members, contributors and individuals) MAKES NO
// REPRESENTATIONS OR WARRANTIES ABOUT THE SUITABILITY OF THE SOFTWARE,
// EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED
// WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
// NON-INFRINGEMENT. The JavaPOS working group shall not be liable for
// any damages suffered as a result of using, modifying or distributing this
// software or its derivatives. Permission to use, copy, modify, and distribute
// the software and its documentation for any purpose is hereby granted.
//
// The JavaPOS Config/Loader (aka JCL) is now under the CPL license, which
// is an OSS Apache-like license. The complete license is located at:
// http://oss.software.ibm.com/developerworks/opensource/license-cpl.html
//
///////////////////////////////////////////////////////////////////////////////
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.util.*;
/**
* utility class that enables and controls showing of popupMenus
* @author Manuel M Monserrate
* @since 1.3 (SF 2K meeting)
*/
public class PopupHelper
{
static Dictionary dictionary = new Hashtable();
static MouseListener popupMouseListener = new java.awt.event.MouseAdapter()
{
void tryPopup( MouseEvent evt ) {
if ( !evt.isPopupTrigger() )
return;
Component mouseEvtComp = evt.getComponent();
Object o[] = (Object [])dictionary.get( mouseEvtComp );
if ( o == null )
return;
JPopupMenu popupMenu = (JPopupMenu)o[0];
PopupListener popupListener = (PopupListener)o[1];
int x = evt.getX(), y = evt.getY();
boolean go = true;
if ( popupListener != null )
go = popupListener.startPopup( x, y );
if ( go )
popupMenu.show( mouseEvtComp, x - 20, y - 10 );
}
public void mousePressed( MouseEvent evt ) { tryPopup( evt ); }
public void mouseReleased( MouseEvent evt ) { tryPopup( evt ); }
};
/**
* registers a component to listen to mouse events for the popupMenu, does not use
* the PopupListener to do extra setting up for the menu
* @since 1.3 (SF 2K meeting)
*/
public static void setPopup( JComponent mouseEvtComp, JPopupMenu popupMenu ) { setPopup( mouseEvtComp, popupMenu, null ); }
/**
* registers a component to listen to mouse events for the popupMenu, uses
* the PopupListener to do extra setting up for the menu when mouse is clicked
* @since 1.3 (SF 2K meeting)
*/
public static void setPopup( JComponent mouseEvtComp, JPopupMenu popupMenu, PopupListener popupListener )
{
Object o[] = { popupMenu, popupListener };
dictionary.put( mouseEvtComp, o );
mouseEvtComp.addMouseListener( popupMouseListener );
}
/**
* unregisters a component from listen to mouse events for the popupMenu
* @since 1.3 (SF 2K meeting)
*/
public static void removePopup( JComponent mouseEvtComp ) { dictionary.remove( mouseEvtComp ); }
}