Revision 023f6f1e src/gr/ebs/gss/client/TopPanel.java

b/src/gr/ebs/gss/client/TopPanel.java
1
/*
2
 * Copyright 2007, 2008, 2009 Electronic Business Systems Ltd.
3
 *
4
 * This file is part of GSS.
5
 *
6
 * GSS is free software: you can redistribute it and/or modify
7
 * it under the terms of the GNU General Public License as published by
8
 * the Free Software Foundation, either version 3 of the License, or
9
 * (at your option) any later version.
10
 *
11
 * GSS is distributed in the hope that it will be useful,
12
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14
 * GNU General Public License for more details.
15
 *
16
 * You should have received a copy of the GNU General Public License
17
 * along with GSS.  If not, see <http://www.gnu.org/licenses/>.
18
 */
19
package gr.ebs.gss.client;
20

  
21
import com.google.gwt.core.client.GWT;
22
import com.google.gwt.resources.client.ClientBundle;
23
import com.google.gwt.resources.client.ImageResource;
24
import com.google.gwt.user.client.Command;
25
import com.google.gwt.user.client.ui.AbstractImagePrototype;
26
import com.google.gwt.user.client.ui.Composite;
27
import com.google.gwt.user.client.ui.HTML;
28
import com.google.gwt.user.client.ui.HasHorizontalAlignment;
29
import com.google.gwt.user.client.ui.HasVerticalAlignment;
30
import com.google.gwt.user.client.ui.HorizontalPanel;
31
import com.google.gwt.user.client.ui.MenuBar;
32
import com.google.gwt.user.client.ui.MenuItem;
33

  
34
/**
35
 * The top panel, which contains the menu bar icons and the user name.
36
 */
37
public class TopPanel extends Composite {
38

  
39
	/**
40
	 * A constant that denotes the completion of an IncrementalCommand.
41
	 */
42
	public static final boolean DONE = false;
43

  
44
	/**
45
	 * An image bundle for this widgets images.
46
	 */
47
	public interface Images extends ClientBundle, FileMenu.Images, EditMenu.Images,
48
			SettingsMenu.Images, GroupMenu.Images, FilePropertiesDialog.Images,
49
			HelpMenu.Images, LoadingIndicator.Images {
50

  
51
		@Source("gr/ebs/gss/resources/exit.png")
52
		ImageResource exit();
53

  
54
		@Source("gr/ebs/gss/resources/folder_blue.png")
55
		ImageResource folder();
56

  
57
		@Source("gr/ebs/gss/resources/edit.png")
58
		ImageResource edit();
59

  
60
		@Source("gr/ebs/gss/resources/edit_group.png")
61
		ImageResource group();
62

  
63
		@Source("gr/ebs/gss/resources/configure.png")
64
		ImageResource configure();
65

  
66
		@Source("gr/ebs/gss/resources/help.png")
67
		ImageResource help();
68

  
69
		@Source("gr/ebs/gss/resources/pithos-logo.png")
70
		ImageResource gssLogo();
71

  
72
		@Source("gr/ebs/gss/resources/grnet-logo.png")
73
		ImageResource grnetLogo();
74
	}
75

  
76
	/**
77
	 * The menu bar widget.
78
	 */
79
	private MenuBar menu;
80

  
81
	/**
82
	 * The file menu widget.
83
	 */
84
	private FileMenu fileMenu;
85

  
86
	/**
87
	 * The edit menu widget.
88
	 */
89
	private EditMenu editMenu;
90

  
91
	/**
92
	 * The group menu widget.
93
	 */
94
	private GroupMenu groupMenu;
95

  
96
	/**
97
	 * The settings menu widget.
98
	 */
99
	private SettingsMenu settingsMenu;
100

  
101
	/**
102
	 * The help menu widget.
103
	 */
104
	private HelpMenu helpMenu;
105

  
106
	/**
107
	 * A widget that displays a message indicating that communication with the
108
	 * server is underway.
109
	 */
110
	private LoadingIndicator loading;
111

  
112
	/**
113
	 * The constructor for the top panel.
114
	 *
115
	 * @param images the supplied images
116
	 */
117
	public TopPanel(Images images) {
118
		fileMenu = new FileMenu(images);
119
		editMenu = new EditMenu(images);
120
		groupMenu = new GroupMenu(images);
121
		settingsMenu = new SettingsMenu(images);
122
		helpMenu = new HelpMenu(images);
123
		loading = new LoadingIndicator(images);
124
		HorizontalPanel outer = new HorizontalPanel();
125

  
126
		outer.setHorizontalAlignment(HasHorizontalAlignment.ALIGN_LEFT);
127

  
128
		menu = new MenuBar();
129
		menu.setWidth("100%");
130
		menu.setAutoOpen(false);
131
		menu.setAnimationEnabled(true);
132
		menu.setStyleName("toolbarmenu");
133

  
134
		Command quitCommand = new Command(){
135
			public void execute() {
136
				QuitDialog dlg = new QuitDialog();
137
				dlg.center();
138
			}
139
		};
140
		MenuItem quitItem = new MenuItem("<table style='font-size: 100%'><tr><td>" +
141
					AbstractImagePrototype.create(images.exit()).getHTML() + "</td><td>Quit</td></tr></table>", true, quitCommand);
142
		MenuItem fileItem = new MenuItem("<table style='font-size: 100%'><tr><td>" +
143
					AbstractImagePrototype.create(images.folder()).getHTML() + "</td><td>File</td></tr></table>", true, new MenuBar(true)){
144
			@Override
145
			public MenuBar getSubMenu() {
146
				return fileMenu.createMenu();
147
			}
148
		};
149
		MenuItem editItem = new MenuItem("<table style='font-size: 100%'><tr><td>" +
150
					AbstractImagePrototype.create(images.edit()).getHTML() + "</td><td>Edit</td></tr></table>", true, new MenuBar(true)){
151
			@Override
152
			public MenuBar getSubMenu() {
153
				return editMenu.createMenu();
154
			}
155
		};
156
		MenuItem groupItem = new MenuItem("<table style='font-size: 100%'><tr><td>" +
157
					AbstractImagePrototype.create(images.group()).getHTML() + "</td><td>Group</td></tr></table>", true,
158
					groupMenu.getContextMenu());
159
		MenuItem configureItem = new MenuItem("<table style='font-size: 100%'><tr><td>" +
160
					AbstractImagePrototype.create(images.configure()).getHTML() + "</td><td>Settings</td></tr></table>",
161
					true,settingsMenu.getContextMenu());
162
		MenuItem helpItem = new MenuItem("<table style='font-size: 100%'><tr><td>" +
163
					AbstractImagePrototype.create(images.help()).getHTML() + "</td><td>Help</td></tr></table>", true, new MenuBar(true)){
164
			@Override
165
			public MenuBar getSubMenu() {
166
				return helpMenu.createMenu();
167
			}
168
		};
169
		menu.addItem(quitItem);
170
		menu.addItem(fileItem);
171
		menu.addItem(editItem);
172
		menu.addItem(groupItem);
173
		menu.addItem(configureItem);
174
		menu.addItem(helpItem);
175

  
176
		outer.setSpacing(2);
177
		outer.setVerticalAlignment(HasVerticalAlignment.ALIGN_MIDDLE);
178
		outer.setCellVerticalAlignment(menu, HasVerticalAlignment.ALIGN_MIDDLE);
179
		outer.add(menu);
180
		outer.setStyleName("toolbar");
181

  
182
		outer.add(loading);
183

  
184
		Configuration conf = (Configuration) GWT.create(Configuration.class);
185
		HTML logos = new HTML("<table><tr><td><a href='" + conf.serviceHome() +
186
					"' target='gss'>" +	AbstractImagePrototype.create(images.gssLogo()).getHTML() +
187
					"</a><a href='http://www.grnet.gr/' " +	"target='grnet'>" +
188
					AbstractImagePrototype.create(images.grnetLogo()).getHTML()+"</a></td></tr></table>");
189
		outer.add(logos);
190

  
191
		outer.setCellHorizontalAlignment(logos, HasHorizontalAlignment.ALIGN_RIGHT);
192

  
193
		initWidget(outer);
194
	}
195

  
196

  
197
	/**
198
	 * Retrieve the loading.
199
	 *
200
	 * @return the loading
201
	 */
202
	public LoadingIndicator getLoading() {
203
		return loading;
204
	}
205

  
206
	/**
207
	 * Retrieve the fileMenu.
208
	 *
209
	 * @return the fileMenu
210
	 */
211
	FileMenu getFileMenu() {
212
		return fileMenu;
213
	}
214

  
215
	/**
216
	 * Retrieve the editMenu.
217
	 *
218
	 * @return the editMenu
219
	 */
220
	EditMenu getEditMenu() {
221
		return editMenu;
222
	}
223
}
1
/*
2
 * Copyright 2007, 2008, 2009 Electronic Business Systems Ltd.
3
 *
4
 * This file is part of GSS.
5
 *
6
 * GSS is free software: you can redistribute it and/or modify
7
 * it under the terms of the GNU General Public License as published by
8
 * the Free Software Foundation, either version 3 of the License, or
9
 * (at your option) any later version.
10
 *
11
 * GSS is distributed in the hope that it will be useful,
12
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14
 * GNU General Public License for more details.
15
 *
16
 * You should have received a copy of the GNU General Public License
17
 * along with GSS.  If not, see <http://www.gnu.org/licenses/>.
18
 */
19
package gr.ebs.gss.client;
20

  
21
import com.google.gwt.core.client.GWT;
22
import com.google.gwt.resources.client.ClientBundle;
23
import com.google.gwt.resources.client.ImageResource;
24
import com.google.gwt.user.client.Command;
25
import com.google.gwt.user.client.ui.AbstractImagePrototype;
26
import com.google.gwt.user.client.ui.Composite;
27
import com.google.gwt.user.client.ui.HTML;
28
import com.google.gwt.user.client.ui.HasHorizontalAlignment;
29
import com.google.gwt.user.client.ui.HasVerticalAlignment;
30
import com.google.gwt.user.client.ui.HorizontalPanel;
31
import com.google.gwt.user.client.ui.MenuBar;
32
import com.google.gwt.user.client.ui.MenuItem;
33

  
34
/**
35
 * The top panel, which contains the menu bar icons and the user name.
36
 */
37
public class TopPanel extends Composite {
38

  
39
	/**
40
	 * A constant that denotes the completion of an IncrementalCommand.
41
	 */
42
	public static final boolean DONE = false;
43

  
44
	/**
45
	 * An image bundle for this widgets images.
46
	 */
47
	public interface Images extends ClientBundle, FileMenu.Images, EditMenu.Images,
48
			SettingsMenu.Images, GroupMenu.Images, FilePropertiesDialog.Images,
49
			HelpMenu.Images, LoadingIndicator.Images {
50

  
51
		@Source("gr/ebs/gss/resources/exit.png")
52
		ImageResource exit();
53

  
54
		@Source("gr/ebs/gss/resources/folder_blue.png")
55
		ImageResource folder();
56

  
57
		@Source("gr/ebs/gss/resources/edit.png")
58
		ImageResource edit();
59

  
60
		@Source("gr/ebs/gss/resources/edit_group.png")
61
		ImageResource group();
62

  
63
		@Source("gr/ebs/gss/resources/configure.png")
64
		ImageResource configure();
65

  
66
		@Source("gr/ebs/gss/resources/help.png")
67
		ImageResource help();
68

  
69
		@Source("gr/ebs/gss/resources/pithos-logo.png")
70
		ImageResource gssLogo();
71

  
72
		@Source("gr/ebs/gss/resources/grnet-logo.png")
73
		ImageResource grnetLogo();
74
	}
75

  
76
	/**
77
	 * The menu bar widget.
78
	 */
79
	private MenuBar menu;
80

  
81
	/**
82
	 * The file menu widget.
83
	 */
84
	private FileMenu fileMenu;
85

  
86
	/**
87
	 * The edit menu widget.
88
	 */
89
	private EditMenu editMenu;
90

  
91
	/**
92
	 * The group menu widget.
93
	 */
94
	private GroupMenu groupMenu;
95

  
96
	/**
97
	 * The settings menu widget.
98
	 */
99
	private SettingsMenu settingsMenu;
100

  
101
	/**
102
	 * The help menu widget.
103
	 */
104
	private HelpMenu helpMenu;
105

  
106
	/**
107
	 * A widget that displays a message indicating that communication with the
108
	 * server is underway.
109
	 */
110
	private LoadingIndicator loading;
111

  
112
	/**
113
	 * The constructor for the top panel.
114
	 *
115
	 * @param images the supplied images
116
	 */
117
	public TopPanel(Images images) {
118
		fileMenu = new FileMenu(images);
119
		editMenu = new EditMenu(images);
120
		groupMenu = new GroupMenu(images);
121
		settingsMenu = new SettingsMenu(images);
122
		helpMenu = new HelpMenu(images);
123
		loading = new LoadingIndicator(images);
124
		HorizontalPanel outer = new HorizontalPanel();
125

  
126
		outer.setHorizontalAlignment(HasHorizontalAlignment.ALIGN_LEFT);
127

  
128
		menu = new MenuBar();
129
		menu.setWidth("100%");
130
		menu.setAutoOpen(false);
131
		menu.setAnimationEnabled(true);
132
		menu.setStyleName("toolbarmenu");
133

  
134
		Command quitCommand = new Command(){
135
			@Override
136
			public void execute() {
137
				QuitDialog dlg = new QuitDialog();
138
				dlg.center();
139
			}
140
		};
141
		MenuItem quitItem = new MenuItem("<table style='font-size: 100%'><tr><td>" +
142
					AbstractImagePrototype.create(images.exit()).getHTML() + "</td><td>Quit</td></tr></table>", true, quitCommand);
143
		MenuItem fileItem = new MenuItem("<table style='font-size: 100%'><tr><td>" +
144
					AbstractImagePrototype.create(images.folder()).getHTML() + "</td><td>File</td></tr></table>", true, new MenuBar(true)){
145
			@Override
146
			public MenuBar getSubMenu() {
147
				return fileMenu.createMenu();
148
			}
149
		};
150
		MenuItem editItem = new MenuItem("<table style='font-size: 100%'><tr><td>" +
151
					AbstractImagePrototype.create(images.edit()).getHTML() + "</td><td>Edit</td></tr></table>", true, new MenuBar(true)){
152
			@Override
153
			public MenuBar getSubMenu() {
154
				return editMenu.createMenu();
155
			}
156
		};
157
		MenuItem groupItem = new MenuItem("<table style='font-size: 100%'><tr><td>" +
158
					AbstractImagePrototype.create(images.group()).getHTML() + "</td><td>Group</td></tr></table>", true,
159
					groupMenu.getContextMenu());
160
		MenuItem configureItem = new MenuItem("<table style='font-size: 100%'><tr><td>" +
161
					AbstractImagePrototype.create(images.configure()).getHTML() + "</td><td>Settings</td></tr></table>",
162
					true,settingsMenu.getContextMenu());
163
		MenuItem helpItem = new MenuItem("<table style='font-size: 100%'><tr><td>" +
164
					AbstractImagePrototype.create(images.help()).getHTML() + "</td><td>Help</td></tr></table>", true, new MenuBar(true)){
165
			@Override
166
			public MenuBar getSubMenu() {
167
				return helpMenu.createMenu();
168
			}
169
		};
170
		menu.addItem(quitItem);
171
		menu.addItem(fileItem);
172
		menu.addItem(editItem);
173
		menu.addItem(groupItem);
174
		menu.addItem(configureItem);
175
		menu.addItem(helpItem);
176

  
177
		outer.setSpacing(2);
178
		outer.setVerticalAlignment(HasVerticalAlignment.ALIGN_MIDDLE);
179
		outer.setCellVerticalAlignment(menu, HasVerticalAlignment.ALIGN_MIDDLE);
180
		outer.add(menu);
181
		outer.setStyleName("toolbar");
182

  
183
		outer.add(loading);
184

  
185
		Configuration conf = (Configuration) GWT.create(Configuration.class);
186
		HTML logos = new HTML("<table><tr><td><a href='" + conf.serviceHome() +
187
					"' target='gss'>" +	AbstractImagePrototype.create(images.gssLogo()).getHTML() +
188
					"</a><a href='http://www.grnet.gr/' " +	"target='grnet'>" +
189
					AbstractImagePrototype.create(images.grnetLogo()).getHTML()+"</a></td></tr></table>");
190
		outer.add(logos);
191

  
192
		outer.setCellHorizontalAlignment(logos, HasHorizontalAlignment.ALIGN_RIGHT);
193

  
194
		initWidget(outer);
195
	}
196

  
197

  
198
	/**
199
	 * Retrieve the loading.
200
	 *
201
	 * @return the loading
202
	 */
203
	public LoadingIndicator getLoading() {
204
		return loading;
205
	}
206

  
207
	/**
208
	 * Retrieve the fileMenu.
209
	 *
210
	 * @return the fileMenu
211
	 */
212
	FileMenu getFileMenu() {
213
		return fileMenu;
214
	}
215

  
216
	/**
217
	 * Retrieve the editMenu.
218
	 *
219
	 * @return the editMenu
220
	 */
221
	EditMenu getEditMenu() {
222
		return editMenu;
223
	}
224
}

Also available in: Unified diff