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