moved towards gwt version 2.0 - updated dnd to version 3 -removed all deprecations
[pithos] / src / gr / ebs / gss / client / TopPanel.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.core.client.GWT;\r
22 import com.google.gwt.resources.client.ClientBundle;\r
23 import com.google.gwt.resources.client.ImageResource;\r
24 import com.google.gwt.user.client.Command;\r
25 import com.google.gwt.user.client.ui.AbstractImagePrototype;\r
26 import com.google.gwt.user.client.ui.Composite;\r
27 import com.google.gwt.user.client.ui.HTML;\r
28 import com.google.gwt.user.client.ui.HasHorizontalAlignment;\r
29 import com.google.gwt.user.client.ui.HasVerticalAlignment;\r
30 import com.google.gwt.user.client.ui.HorizontalPanel;\r
31 import com.google.gwt.user.client.ui.MenuBar;\r
32 import com.google.gwt.user.client.ui.MenuItem;\r
33 \r
34 /**\r
35  * The top panel, which contains the menu bar icons and the user name.\r
36  */\r
37 public class TopPanel extends Composite {\r
38 \r
39         /**\r
40          * A constant that denotes the completion of an IncrementalCommand.\r
41          */\r
42         public static final boolean DONE = false;\r
43 \r
44         /**\r
45          * An image bundle for this widgets images.\r
46          */\r
47         public interface Images extends ClientBundle, FileMenu.Images, EditMenu.Images,\r
48                         SettingsMenu.Images, GroupMenu.Images, FilePropertiesDialog.Images,\r
49                         HelpMenu.Images {\r
50 \r
51                 @Source("gr/ebs/gss/resources/exit.png")\r
52                 ImageResource exit();\r
53 \r
54                 @Source("gr/ebs/gss/resources/folder_blue.png")\r
55                 ImageResource folder();\r
56 \r
57                 @Source("gr/ebs/gss/resources/edit.png")\r
58                 ImageResource edit();\r
59 \r
60                 @Source("gr/ebs/gss/resources/edit_group.png")\r
61                 ImageResource group();\r
62 \r
63                 @Source("gr/ebs/gss/resources/configure.png")\r
64                 ImageResource configure();\r
65 \r
66                 @Source("gr/ebs/gss/resources/help.png")\r
67                 ImageResource help();\r
68 \r
69                 @Source("gr/ebs/gss/resources/pithos-logo.png")\r
70                 ImageResource gssLogo();\r
71 \r
72                 @Source("gr/ebs/gss/resources/grnet-logo.png")\r
73                 ImageResource grnetLogo();\r
74         }\r
75 \r
76         /**\r
77          * The menu bar widget.\r
78          */\r
79         private MenuBar menu;\r
80 \r
81         /**\r
82          * The file menu widget.\r
83          */\r
84         private FileMenu fileMenu;\r
85 \r
86         /**\r
87          * The edit menu widget.\r
88          */\r
89         private EditMenu editMenu;\r
90 \r
91         /**\r
92          * The group menu widget.\r
93          */\r
94         private GroupMenu groupMenu;\r
95 \r
96         /**\r
97          * The settings menu widget.\r
98          */\r
99         private SettingsMenu settingsMenu;\r
100 \r
101         /**\r
102          * The help menu widget.\r
103          */\r
104         private HelpMenu helpMenu;\r
105 \r
106         /**\r
107          * The constructor for the top panel.\r
108          *\r
109          * @param images the supplied images\r
110          */\r
111         public TopPanel(Images images) {\r
112                 fileMenu = new FileMenu(images);\r
113                 editMenu = new EditMenu(images);\r
114                 groupMenu = new GroupMenu(images);\r
115                 settingsMenu = new SettingsMenu(images);\r
116                 helpMenu = new HelpMenu(images);\r
117                 HorizontalPanel outer = new HorizontalPanel();\r
118 \r
119                 outer.setHorizontalAlignment(HasHorizontalAlignment.ALIGN_LEFT);\r
120 \r
121                 menu = new MenuBar();\r
122                 menu.setWidth("100%");\r
123                 menu.setAutoOpen(false);\r
124                 menu.setAnimationEnabled(true);\r
125                 menu.setStyleName("toolbarmenu");\r
126 \r
127                 Command quitCommand = new Command(){\r
128                         public void execute() {\r
129                                 QuitDialog dlg = new QuitDialog();\r
130                                 dlg.center();\r
131                         }\r
132                 };\r
133                 MenuItem quitItem = new MenuItem("<table style='font-size: 100%'><tr><td>" +\r
134                                         AbstractImagePrototype.create(images.exit()).getHTML() + "</td><td>Quit</td></tr></table>", true, quitCommand);\r
135                 MenuItem fileItem = new MenuItem("<table style='font-size: 100%'><tr><td>" +\r
136                                         AbstractImagePrototype.create(images.folder()).getHTML() + "</td><td>File</td></tr></table>", true, new MenuBar(true)){\r
137                         @Override\r
138                         public MenuBar getSubMenu() {\r
139                                 return fileMenu.createMenu();\r
140                         }\r
141                 };\r
142                 MenuItem editItem = new MenuItem("<table style='font-size: 100%'><tr><td>" +\r
143                                         AbstractImagePrototype.create(images.edit()).getHTML() + "</td><td>Edit</td></tr></table>", true, new MenuBar(true)){\r
144                         @Override\r
145                         public MenuBar getSubMenu() {\r
146                                 return editMenu.createMenu();\r
147                         }\r
148                 };\r
149                 MenuItem groupItem = new MenuItem("<table style='font-size: 100%'><tr><td>" +\r
150                                         AbstractImagePrototype.create(images.group()).getHTML() + "</td><td>Group</td></tr></table>", true,\r
151                                         groupMenu.getContextMenu());\r
152                 MenuItem configureItem = new MenuItem("<table style='font-size: 100%'><tr><td>" +\r
153                                         AbstractImagePrototype.create(images.configure()).getHTML() + "</td><td>Settings</td></tr></table>",\r
154                                         true,settingsMenu.getContextMenu());\r
155                 MenuItem helpItem = new MenuItem("<table style='font-size: 100%'><tr><td>" +\r
156                                         AbstractImagePrototype.create(images.help()).getHTML() + "</td><td>Help</td></tr></table>", true, new MenuBar(true)){\r
157                         @Override\r
158                         public MenuBar getSubMenu() {\r
159                                 return helpMenu.createMenu();\r
160                         }\r
161                 };\r
162                 menu.addItem(quitItem);\r
163                 menu.addItem(fileItem);\r
164                 menu.addItem(editItem);\r
165                 menu.addItem(groupItem);\r
166                 menu.addItem(configureItem);\r
167                 menu.addItem(helpItem);\r
168 \r
169                 outer.setSpacing(2);\r
170                 outer.setVerticalAlignment(HasVerticalAlignment.ALIGN_MIDDLE);\r
171                 outer.setCellVerticalAlignment(menu, HasVerticalAlignment.ALIGN_MIDDLE);\r
172                 outer.add(menu);\r
173                 outer.setStyleName("toolbar");\r
174 \r
175                 Configuration conf = (Configuration) GWT.create(Configuration.class);\r
176                 HTML logos = new HTML("<table><tr><td><a href='" + conf.serviceHome() +\r
177                                         "' target='gss'>" +     AbstractImagePrototype.create(images.gssLogo()).getHTML() +\r
178                                         "</a><a href='http://www.grnet.gr/' " + "target='grnet'>" +\r
179                                         AbstractImagePrototype.create(images.grnetLogo()).getHTML()+"</a></td></tr></table>");\r
180                 outer.add(logos);\r
181 \r
182                 outer.setCellHorizontalAlignment(logos, HasHorizontalAlignment.ALIGN_RIGHT);\r
183 \r
184                 initWidget(outer);\r
185         }\r
186 \r
187         /**\r
188          * Retrieve the fileMenu.\r
189          *\r
190          * @return the fileMenu\r
191          */\r
192         FileMenu getFileMenu() {\r
193                 return fileMenu;\r
194         }\r
195 \r
196         /**\r
197          * Retrieve the editMenu.\r
198          *\r
199          * @return the editMenu\r
200          */\r
201         EditMenu getEditMenu() {\r
202                 return editMenu;\r
203         }\r
204 }\r