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();
+	}
+}