- Add "Save file as" menu that forces browser to download file instead of opening...
[pithos] / src / gr / ebs / gss / client / SettingsMenu.java
1 /*\r
2  * Copyright 2007, 2008, 2009 Electronic Business Systems Ltd.\r
3  *\r
4  * This file is part of GSS.\r
5  *\r
6  * GSS is free software: you can redistribute it and/or modify\r
7  * it under the terms of the GNU General Public License as published by\r
8  * the Free Software Foundation, either version 3 of the License, or\r
9  * (at your option) any later version.\r
10  *\r
11  * GSS is distributed in the hope that it will be useful,\r
12  * but WITHOUT ANY WARRANTY; without even the implied warranty of\r
13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r
14  * GNU General Public License for more details.\r
15  *\r
16  * You should have received a copy of the GNU General Public License\r
17  * along with GSS.  If not, see <http://www.gnu.org/licenses/>.\r
18  */\r
19 package gr.ebs.gss.client;\r
20 \r
21 import com.google.gwt.user.client.Command;\r
22 import com.google.gwt.user.client.Window;\r
23 import com.google.gwt.user.client.ui.AbstractImagePrototype;\r
24 import com.google.gwt.user.client.ui.ClickListener;\r
25 import com.google.gwt.user.client.ui.ImageBundle;\r
26 import com.google.gwt.user.client.ui.MenuBar;\r
27 import com.google.gwt.user.client.ui.PopupPanel;\r
28 import com.google.gwt.user.client.ui.Widget;\r
29 \r
30 /**\r
31  * The 'settings' menu implementation.\r
32  */\r
33 public class SettingsMenu extends PopupPanel implements ClickListener {\r
34 \r
35         /**\r
36          * The widget's images.\r
37          */\r
38         private Images images;\r
39         private final MenuBar contextMenu;\r
40         /**\r
41          * An image bundle for this widgets images.\r
42          */\r
43         public interface Images extends ImageBundle {\r
44 \r
45                 /**\r
46                  * Will bundle the file 'advancedsettings.png' residing in the package\r
47                  * 'gr.ebs.gss.resources'.\r
48                  *\r
49                  * @return the image prototype\r
50                  */\r
51                 @Resource("gr/ebs/gss/resources/advancedsettings.png")\r
52                 AbstractImagePrototype preferences();\r
53 \r
54                 @Resource("gr/ebs/gss/resources/lock.png")\r
55                 AbstractImagePrototype credentials();\r
56 \r
57         }\r
58 \r
59         /**\r
60          * The widget's constructor.\r
61          *\r
62          * @param newImages the image bundle passed on by the parent object\r
63          */\r
64         public SettingsMenu(final Images newImages) {\r
65                 // The popup's constructor's argument is a boolean specifying that it\r
66                 // auto-close itself when the user clicks outside of it.\r
67                 super(true);\r
68                 setAnimationEnabled(true);\r
69                 images = newImages;\r
70 \r
71                 // Make a command that we will execute from all leaves.\r
72                 final Command cmd = new Command() {\r
73 \r
74                         public void execute() {\r
75                                 hide();\r
76                                 Window.alert("You selected a menu item!");\r
77                         }\r
78                 };\r
79                 Command userCredentialsCommand = new Command(){\r
80                         /* (non-Javadoc)\r
81                          * @see com.google.gwt.user.client.Command#execute()\r
82                          */\r
83                         public void execute() {\r
84                                 CredentialsDialog dlg = new CredentialsDialog();\r
85                                 dlg.center();\r
86                         }\r
87                 };\r
88                 contextMenu = new MenuBar(true);\r
89 //              contextMenu.addItem("<span>" + newImages.preferences().getHTML() + "&nbsp;Preferences</span>", true, cmd);\r
90                 contextMenu.addItem("<span>" + newImages.credentials().getHTML() + "&nbsp;Show Credentials</span>", true, userCredentialsCommand);\r
91 \r
92                 add(contextMenu);\r
93                 // setStyleName("toolbarPopup");\r
94         }\r
95 \r
96         /*\r
97          * (non-Javadoc)\r
98          *\r
99          * @see com.google.gwt.user.client.ui.ClickListener#onClick(com.google.gwt.user.client.ui.Widget)\r
100          */\r
101         public void onClick(final Widget sender) {\r
102                 final SettingsMenu menu = new SettingsMenu(images);\r
103                 final int left = sender.getAbsoluteLeft();\r
104                 final int top = sender.getAbsoluteTop() + sender.getOffsetHeight();\r
105                 menu.setPopupPosition(left, top);\r
106 \r
107                 menu.show();\r
108         }\r
109 \r
110 \r
111         /**\r
112          * Retrieve the contextMenu.\r
113          *\r
114          * @return the contextMenu\r
115          */\r
116         public MenuBar getContextMenu() {\r
117                 contextMenu.setAutoOpen(false);\r
118                 return contextMenu;\r
119         }\r
120 \r
121 \r
122 }\r