Mercurial > hg > jslab
diff src/samer/core_/util/swing/PopupHandler.java @ 0:bf79fb79ee13
Initial Mercurial check in.
author | samer |
---|---|
date | Tue, 17 Jan 2012 17:50:20 +0000 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/samer/core_/util/swing/PopupHandler.java Tue Jan 17 17:50:20 2012 +0000 @@ -0,0 +1,39 @@ +/* + * PopupHandler.java + * + * Copyright (c) 2000, Samer Abdallah, King's College London. + * All rights reserved. + * + * This software is provided AS iS and WITHOUT ANY WARRANTY; + * without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. + */ + +package samer.core.util.swing; +import java.awt.event.*; +import javax.swing.*; + +public class PopupHandler extends MouseAdapter +{ + private JPopupMenu popup; + private boolean backstop; + + public PopupHandler(JPopupMenu p) { this(p,false); } + public PopupHandler(JPopupMenu p, boolean bs) { popup=p; backstop=bs; } + + public void setBackstop(boolean f) { backstop=f; } + public void mousePressed( MouseEvent e) { maybeShowMenu(e); } + public void mouseReleased( MouseEvent e) { maybeShowMenu(e); } + + void maybeShowMenu(MouseEvent e) + { + if (!e.isPopupTrigger()) return; + if (!backstop) { + // if not backstop, must NOT have Alt or Ctl down + // modified for Macs: need modifiers to get right mouse click! + if (e.isShiftDown()) return; + } + popup.show( e.getComponent(), e.getX(), e.getY()); + e.consume(); + } +}