package jas.plot; import jas.util.OnScreenPopupMenu; import java.awt.Component; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; import javax.swing.JPopupMenu; public class PopupMenuBuilder extends MouseAdapter { void buildMenu(MouseEvent e) { // TODO: once we switch to JDK 1.3 we can use // JPopupMenu.isPopupTrigger() boolean isPopupTrigger = e.isPopupTrigger() && e.getID() != MouseEvent.MOUSE_EXITED; if (!isPopupTrigger) return; Component source = (Component) e.getSource(); JPopupMenu menu = new OnScreenPopupMenu(); for (Component c=source; c != null; c = c.getParent()) { if (c instanceof HasPopupItems) ((HasPopupItems) c).modifyPopupMenu(menu, source); } if (menu.getComponentCount() > 0) { menu.show(source,e.getX(),e.getY()); } } public void mousePressed(MouseEvent e) { buildMenu(e); super.mousePressed(e); } public void mouseReleased(MouseEvent e) { buildMenu(e); super.mouseReleased(e); } }