• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 package autotest.common.ui;
2 
3 import com.google.gwt.event.logical.shared.CloseHandler;
4 import com.google.gwt.user.client.Command;
5 import com.google.gwt.user.client.Window;
6 import com.google.gwt.user.client.ui.MenuBar;
7 import com.google.gwt.user.client.ui.MenuItem;
8 import com.google.gwt.user.client.ui.PopupPanel;
9 
10 
11 
12 public class ContextMenu {
13     private  PopupPanel popup = new PopupPanel(true);
14     private AutoHideMenu menu = new AutoHideMenu();
15     private boolean enabled = true;
16 
17     private class CommandWrapper implements Command {
18         private Command command;
19 
CommandWrapper(Command command)20         CommandWrapper(Command command) {
21             this.command = command;
22         }
23 
execute()24         public void execute() {
25             popup.hide();
26             command.execute();
27         }
28     }
29 
30     private class AutoHideMenu extends MenuBar {
AutoHideMenu()31         public AutoHideMenu() {
32             super(true);
33         }
34 
35         @Override
addItem(String text, Command cmd)36         public MenuItem addItem(String text, Command cmd) {
37             return super.addItem(text, new CommandWrapper(cmd));
38         }
39 
setEnabled(boolean enabled)40         public void setEnabled(boolean enabled) {
41             for (MenuItem menuItem : getItems()) {
42                 menuItem.setEnabled(enabled);
43             }
44         }
45     }
46 
ContextMenu()47     public ContextMenu() {
48         menu.setAutoOpen(true);
49         setUseHandCursor(true);
50         popup.add(menu);
51     }
52 
setUseHandCursor(boolean enabled)53     protected void setUseHandCursor(boolean enabled) {
54         if (enabled)
55             menu.addStyleName("menubar-hand-cursor");
56         else
57             menu.removeStyleName("menubar-hand-cursor");
58     }
59 
addItem(String text, Command cmd)60     public void addItem(String text, Command cmd) {
61         menu.addItem(text, new CommandWrapper(cmd));
62     }
63 
addSubMenuItem(String text)64     public MenuBar addSubMenuItem(String text) {
65         MenuBar subMenu = new AutoHideMenu();
66         menu.addItem(text, subMenu);
67         return subMenu;
68     }
69 
showAt(int left, int top)70     public void showAt(int left, int top) {
71         popup.setPopupPosition(left, top);
72         popup.show();
73     }
74 
showAtWindow(int left, int top)75     public void showAtWindow(int left, int top) {
76         showAt(left + Window.getScrollLeft(), top + Window.getScrollTop());
77     }
78 
addCloseHandler(CloseHandler<PopupPanel> closeHandler)79     public void addCloseHandler(CloseHandler<PopupPanel> closeHandler) {
80         popup.addCloseHandler(closeHandler);
81     }
82 
isEnabled()83     public boolean isEnabled() {
84         return enabled;
85     }
86 
setEnabled(boolean enabled)87     public void setEnabled(boolean enabled) {
88         this.enabled = enabled;
89         menu.setEnabled(enabled);
90         setUseHandCursor(enabled);
91     }
92 }
93