2 * Copyright (c) 2011 Greek Research and Technology Network
4 package gr.grnet.pithos.web.client;
6 import com.google.gwt.core.client.GWT;
7 import com.google.gwt.resources.client.ClientBundle;
8 import com.google.gwt.resources.client.ImageResource;
9 import com.google.gwt.user.client.Command;
10 import com.google.gwt.user.client.Window;
11 import com.google.gwt.user.client.ui.AbstractImagePrototype;
12 import com.google.gwt.user.client.ui.Composite;
13 import com.google.gwt.user.client.ui.HTML;
14 import com.google.gwt.user.client.ui.HasHorizontalAlignment;
15 import com.google.gwt.user.client.ui.HasVerticalAlignment;
16 import com.google.gwt.user.client.ui.HorizontalPanel;
17 import com.google.gwt.user.client.ui.MenuBar;
18 import com.google.gwt.user.client.ui.MenuItem;
21 * The top panel, which contains the menu bar icons and the user name.
23 public class TopPanel extends Composite {
26 * A constant that denotes the completion of an IncrementalCommand.
28 public static final boolean DONE = false;
31 * An image bundle for this widgets images.
33 public interface Images extends ClientBundle, FileMenu.Images, EditMenu.Images,
34 SettingsMenu.Images, GroupMenu.Images, FilePropertiesDialog.Images,
35 HelpMenu.Images, LoadingIndicator.Images {
37 @Source("gr/grnet/pithos/resources/exit.png")
40 @Source("gr/grnet/pithos/resources/folder_blue.png")
41 ImageResource folder();
43 @Source("gr/grnet/pithos/resources/edit.png")
46 @Source("gr/grnet/pithos/resources/edit_group.png")
47 ImageResource group();
49 @Source("gr/grnet/pithos/resources/configure.png")
50 ImageResource configure();
52 @Source("gr/grnet/pithos/resources/help.png")
55 @Source("gr/grnet/pithos/resources/pithos-logo.png")
56 ImageResource gssLogo();
58 @Source("gr/grnet/pithos/resources/grnet-logo.png")
59 ImageResource grnetLogo();
63 * The menu bar widget.
68 * The file menu widget.
70 private FileMenu fileMenu;
73 * The edit menu widget.
75 private EditMenu editMenu;
78 * The group menu widget.
80 private GroupMenu groupMenu;
83 * The settings menu widget.
85 private SettingsMenu settingsMenu;
88 * The help menu widget.
90 private HelpMenu helpMenu;
93 * A widget that displays a message indicating that communication with the
96 private LoadingIndicator loading;
99 * The constructor for the top panel.
101 * @param images the supplied images
103 public TopPanel(Images images) {
104 fileMenu = new FileMenu(images);
105 editMenu = new EditMenu(images);
106 groupMenu = new GroupMenu(images);
107 settingsMenu = new SettingsMenu(images);
108 helpMenu = new HelpMenu(images);
109 loading = new LoadingIndicator(images);
110 HorizontalPanel outer = new HorizontalPanel();
112 outer.setHorizontalAlignment(HasHorizontalAlignment.ALIGN_LEFT);
114 menu = new MenuBar();
115 menu.setWidth("100%");
116 menu.setAutoOpen(false);
117 menu.setAnimationEnabled(true);
118 menu.setStyleName("toolbarmenu");
120 Command quitCommand = new Command(){
122 public void execute() {
123 QuitDialog dlg = new QuitDialog();
127 MenuItem quitItem = new MenuItem("<table style='font-size: 100%'><tr><td>" +
128 AbstractImagePrototype.create(images.exit()).getHTML() + "</td><td>Quit</td></tr></table>", true, quitCommand);
129 quitItem.getElement().setId("topMenu.quit");
131 MenuItem fileItem = new MenuItem("<table style='font-size: 100%'><tr><td>" +
132 AbstractImagePrototype.create(images.folder()).getHTML() + "</td><td>File</td></tr></table>", true, new MenuBar(true)){
134 public MenuBar getSubMenu() {
135 return fileMenu.createMenu();
138 fileItem.getElement().setId("topMenu.file");
140 MenuItem editItem = new MenuItem("<table style='font-size: 100%'><tr><td>" +
141 AbstractImagePrototype.create(images.edit()).getHTML() + "</td><td>Edit</td></tr></table>", true, new MenuBar(true)){
143 public MenuBar getSubMenu() {
144 return editMenu.createMenu();
147 editItem.getElement().setId("topMenu.edit");
149 MenuItem groupItem = new MenuItem("<table style='font-size: 100%'><tr><td>" +
150 AbstractImagePrototype.create(images.group()).getHTML() + "</td><td>Group</td></tr></table>", true,
151 groupMenu.getContextMenu());
152 groupItem.getElement().setId("topMenu.group");
154 MenuItem configureItem = new MenuItem("<table style='font-size: 100%'><tr><td>" +
155 AbstractImagePrototype.create(images.configure()).getHTML() + "</td><td>Settings</td></tr></table>",
156 true,settingsMenu.getContextMenu());
157 configureItem.getElement().setId("topMenu.settings");
159 MenuItem helpItem = new MenuItem("<table style='font-size: 100%'><tr><td>" +
160 AbstractImagePrototype.create(images.help()).getHTML() + "</td><td>Help</td></tr></table>", true, new MenuBar(true)){
162 public MenuBar getSubMenu() {
163 return helpMenu.createMenu();
166 helpItem.getElement().setId("topMenu.help");
168 menu.addItem(quitItem);
169 menu.addItem(fileItem);
170 menu.addItem(editItem);
171 menu.addItem(groupItem);
172 menu.addItem(configureItem);
173 menu.addItem(helpItem);
176 outer.setVerticalAlignment(HasVerticalAlignment.ALIGN_MIDDLE);
177 outer.setCellVerticalAlignment(menu, HasVerticalAlignment.ALIGN_MIDDLE);
179 outer.setStyleName("toolbar");
183 Configuration conf = (Configuration) GWT.create(Configuration.class);
184 String path = Window.Location.getPath();
185 String baseUrl = GWT.getModuleBaseURL();
186 String homeUrl = baseUrl.substring(0, baseUrl.indexOf(path));
187 HTML logos = new HTML("<table><tr><td><a href='" + homeUrl +
188 "' target='pithos'>" + AbstractImagePrototype.create(images.gssLogo()).getHTML() +
189 "</a><a href='http://www.grnet.gr/' " + "target='grnet'>" +
190 AbstractImagePrototype.create(images.grnetLogo()).getHTML()+"</a></td></tr></table>");
193 outer.setCellHorizontalAlignment(logos, HasHorizontalAlignment.ALIGN_RIGHT);
200 * Retrieve the loading.
202 * @return the loading
204 public LoadingIndicator getLoading() {
209 * Retrieve the fileMenu.
211 * @return the fileMenu
213 FileMenu getFileMenu() {
218 * Retrieve the editMenu.
220 * @return the editMenu
222 EditMenu getEditMenu() {