Updated copyright notice
[pithos] / web_client / src / gr / grnet / pithos / web / client / SettingsMenu.java
1 /*\r
2  * Copyright (c) 2011 Greek Research and Technology Network\r
3  */\r
4 package gr.grnet.pithos.web.client;\r
5 \r
6 import com.google.gwt.event.dom.client.ClickEvent;\r
7 import com.google.gwt.event.dom.client.ClickHandler;\r
8 import com.google.gwt.resources.client.ClientBundle;\r
9 import com.google.gwt.resources.client.ImageResource;\r
10 import com.google.gwt.user.client.Command;\r
11 import com.google.gwt.user.client.ui.AbstractImagePrototype;\r
12 import com.google.gwt.user.client.ui.MenuBar;\r
13 import com.google.gwt.user.client.ui.MenuItem;\r
14 import com.google.gwt.user.client.ui.PopupPanel;\r
15 \r
16 /**\r
17  * The 'settings' menu implementation.\r
18  */\r
19 public class SettingsMenu extends PopupPanel implements ClickHandler {\r
20 \r
21         /**\r
22          * The widget's images.\r
23          */\r
24         private Images images;\r
25         private final MenuBar contextMenu;\r
26         /**\r
27          * An image bundle for this widgets images.\r
28          */\r
29         public interface Images extends ClientBundle,MessagePanel.Images {\r
30 \r
31                 /**\r
32                  * Will bundle the file 'advancedsettings.png' residing in the package\r
33                  * 'gr.grnet.pithos.web.resources'.\r
34                  *\r
35                  * @return the image prototype\r
36                  */\r
37                 @Source("gr/grnet/pithos/resources/advancedsettings.png")\r
38                 ImageResource preferences();\r
39 \r
40                 @Source("gr/grnet/pithos/resources/lock.png")\r
41                 ImageResource credentials();\r
42 \r
43         }\r
44 \r
45         /**\r
46          * The widget's constructor.\r
47          *\r
48          * @param newImages the image bundle passed on by the parent object\r
49          */\r
50         public SettingsMenu(final Images newImages) {\r
51                 // The popup's constructor's argument is a boolean specifying that it\r
52                 // auto-close itself when the user clicks outside of it.\r
53                 super(true);\r
54                 setAnimationEnabled(true);\r
55                 images = newImages;\r
56 \r
57                 Command userCredentialsCommand = new Command(){\r
58                         @Override\r
59                         public void execute() {\r
60                                 CredentialsDialog dlg = new CredentialsDialog(newImages);\r
61                                 dlg.center();\r
62                         }\r
63                 };\r
64                 contextMenu = new MenuBar(true);\r
65 //              contextMenu.addItem("<span>" + newImages.preferences().getHTML() + "&nbsp;Preferences</span>", true, cmd);\r
66                 MenuItem showCredentialsItem = new MenuItem("<span>" + AbstractImagePrototype.create(newImages.credentials()).getHTML() + "&nbsp;Show Credentials</span>", true, userCredentialsCommand);\r
67                 showCredentialsItem.getElement().setId("topMenu.settingsMenu.showCredentials");\r
68                 contextMenu.addItem(showCredentialsItem);\r
69                 \r
70                 add(contextMenu);\r
71                 // setStyleName("toolbarPopup");\r
72         }\r
73 \r
74         @Override\r
75         public void onClick(final ClickEvent event) {\r
76                 final SettingsMenu menu = new SettingsMenu(images);\r
77                 final int left = event.getRelativeElement().getAbsoluteLeft();\r
78                 final int top = event.getRelativeElement().getAbsoluteTop() + event.getRelativeElement().getOffsetHeight();\r
79                 menu.setPopupPosition(left, top);\r
80 \r
81                 menu.show();\r
82         }\r
83 \r
84 \r
85         /**\r
86          * Retrieve the contextMenu.\r
87          *\r
88          * @return the contextMenu\r
89          */\r
90         public MenuBar getContextMenu() {\r
91                 contextMenu.setAutoOpen(false);\r
92                 return contextMenu;\r
93         }\r
94 \r
95 \r
96 }\r