Mega Code Archive

 
Categories / Java / Swing JFC
 

Popup Menu Demo

//From: mg@dsd.camb.inmet.com (Mitch Gart) import java.awt.BorderLayout; import java.awt.Button; import java.awt.Component; import java.awt.Frame; import java.awt.Label; import java.awt.Menu; import java.awt.MenuBar; import java.awt.MenuItem; import java.awt.Panel; import java.awt.PopupMenu; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.MouseEvent; import java.awt.event.MouseListener; import java.util.Hashtable; public class PopupDemo extends Frame implements ActionListener, MouseListener {   public static void main(String argv[]) {     new PopupDemo().setVisible(true);   }   public PopupDemo() {     MenuBar mb = new MenuBar();     setMenuBar(mb);     Menu m = new Menu("file");     mb.add(m);     MenuItem item = new MenuItem("file-1");     item.addActionListener(this);     m.add(item);     item = new MenuItem("file-2");     m.add(item);     setSize(100, 100);     setLayout(new BorderLayout());     Label l = new Label("label");     addPopup(l, "label");     add(l, "North");     Panel p = new Panel();     addPopup(p, "Panel");     add(p, "Center");     Button b = new Button("button");     addPopup(b, "button");     add(b, "South");   }   public void actionPerformed(ActionEvent e) {     System.out.println("actionPerformed, event=" + e + ", mod="         + getMods(e));     System.out.println(" command=" + e.getActionCommand());     System.out.println(" param=" + e.paramString());     System.out.println(" source=" + e.getSource());   }   String getMods(ActionEvent e) {     return getMods(e.getModifiers());   }   String getMods(MouseEvent e) {     return getMods(e.getModifiers());   }   // a convenience routine for printing the Modifier keys   String getMods(int mods) {     String modstr = "";     if ((mods & ActionEvent.SHIFT_MASK) == ActionEvent.SHIFT_MASK)       modstr += (" SHIFT");     if ((mods & ActionEvent.ALT_MASK) == ActionEvent.ALT_MASK)       modstr += (" ALT");     if ((mods & ActionEvent.CTRL_MASK) == ActionEvent.CTRL_MASK)       modstr += (" CTRL");     if ((mods & ActionEvent.META_MASK) == ActionEvent.META_MASK)       modstr += (" META");     return modstr;   }   public void mouseClicked(MouseEvent e) {     mouseAction("mouseClicked", e);   }   public void mouseEntered(MouseEvent e) {   }   public void mouseExited(MouseEvent e) {   }   public void mousePressed(MouseEvent e) {     mouseAction("mousePressed", e);   }   public void mouseReleased(MouseEvent e) {     mouseAction("mouseReleased", e);   }   void mouseAction(String which, MouseEvent e) {     Component c = e.getComponent();     System.out.println(which + "e=" + e + ", mods=" + getMods(e)         + ", component=" + c);     if (e.isPopupTrigger()) {       System.out.println("isPopup");       PopupMenu pm = getHash(c);       pm.show(c, c.getSize().width / 2, c.getSize().height / 2);     }   }   void addPopup(Component c, String name) {     PopupMenu pm = new PopupMenu();     MenuItem mi = new MenuItem(name + "-1");     mi.addActionListener(this);     pm.add(mi);     mi = new MenuItem(name + "-2");     pm.add(mi);     setHash(c, pm);     c.add(pm);     c.addMouseListener(this);   }   Hashtable popupTable = new Hashtable();   void setHash(Component c, PopupMenu p) {     popupTable.put(c, p);   }   PopupMenu getHash(Component c) {     return (PopupMenu) (popupTable.get(c));   } }