*/
package gr.grnet.pithos.web.client;
+import gr.grnet.pithos.web.client.foldertree.Resource;
+import gr.grnet.pithos.web.client.rest.GetRequest;
+import gr.grnet.pithos.web.client.rest.RestException;
+
import com.google.gwt.core.client.GWT;
-import com.google.gwt.resources.client.ClientBundle;
+import com.google.gwt.core.client.Scheduler;
+import com.google.gwt.http.client.Response;
import com.google.gwt.resources.client.ImageResource;
+import com.google.gwt.safehtml.shared.SafeHtml;
+import com.google.gwt.safehtml.shared.SafeHtmlBuilder;
+import com.google.gwt.safehtml.shared.SafeHtmlUtils;
import com.google.gwt.user.client.Command;
-import com.google.gwt.user.client.Window;
+import com.google.gwt.user.client.Cookies;
import com.google.gwt.user.client.ui.AbstractImagePrototype;
import com.google.gwt.user.client.ui.Composite;
import com.google.gwt.user.client.ui.HTML;
import com.google.gwt.user.client.ui.HasHorizontalAlignment;
import com.google.gwt.user.client.ui.HasVerticalAlignment;
import com.google.gwt.user.client.ui.HorizontalPanel;
+import com.google.gwt.user.client.ui.Image;
import com.google.gwt.user.client.ui.MenuBar;
import com.google.gwt.user.client.ui.MenuItem;
*/
public static final boolean DONE = false;
+ Pithos app;
+
/**
* An image bundle for this widgets images.
*/
- public interface Images extends ClientBundle, FileMenu.Images, EditMenu.Images,
- SettingsMenu.Images, FilePropertiesDialog.Images,
- HelpMenu.Images, LoadingIndicator.Images {
-
- @Source("gr/grnet/pithos/resources/exit.png")
- ImageResource exit();
-
- @Source("gr/grnet/pithos/resources/folder_blue.png")
- ImageResource folder();
-
- @Source("gr/grnet/pithos/resources/edit.png")
- ImageResource edit();
-
- @Source("gr/grnet/pithos/resources/edit_group.png")
- ImageResource group();
-
- @Source("gr/grnet/pithos/resources/configure.png")
- ImageResource configure();
-
- @Source("gr/grnet/pithos/resources/help.png")
- ImageResource help();
-
- @Source("gr/grnet/pithos/resources/pithos-logo.png")
- ImageResource gssLogo();
+ public interface Images extends FilePropertiesDialog.Images {
- @Source("gr/grnet/pithos/resources/grnet-logo.png")
- ImageResource grnetLogo();
+ @Source("gr/grnet/pithos/resources/pithos2-logo.png")
+ ImageResource pithosLogo();
+
+ @Source("gr/grnet/pithos/resources/desc.png")
+ ImageResource downArrow();
}
/**
- * A widget that displays a message indicating that communication with the
- * server is underway.
- */
- private LoadingIndicator loading;
-
- /**
* The constructor for the top panel.
*
* @param images the supplied images
*/
- public TopPanel(final Images images) {
- loading = new LoadingIndicator(images);
- loading.hide();
+ public TopPanel(Pithos _app, final Images images) {
+ this.app = _app;
HorizontalPanel outer = new HorizontalPanel();
-
outer.setHorizontalAlignment(HasHorizontalAlignment.ALIGN_LEFT);
- MenuBar menu = new MenuBar();
- menu.setWidth("100%");
- menu.setAutoOpen(false);
- menu.setAnimationEnabled(true);
- menu.setStyleName("toolbarmenu");
-
- Command quitCommand = new Command(){
+ outer.setVerticalAlignment(HasVerticalAlignment.ALIGN_MIDDLE);
+ outer.setStyleName("pithos-topPanel");
+
+ HorizontalPanel inner = new HorizontalPanel();
+ inner.setWidth("75%");
+ inner.setVerticalAlignment(HasVerticalAlignment.ALIGN_BOTTOM);
+
+ HTML logos = new HTML("<table><tr><td><a href='/'>" + AbstractImagePrototype.create(images.pithosLogo()).getHTML() + "</a></td></tr></table>");
+ logos.addStyleName("pithos-logo");
+ inner.add(logos);
+
+ MenuBar username = new MenuBar();
+ username.setStyleName("pithos-usernameMenu");
+
+ MenuBar userItemMenu = new MenuBar(true);
+ userItemMenu.addStyleName("pithos-userItemMenu");
+ userItemMenu.addItem(new MenuItem("invite friends...", new Command() {
+
@Override
public void execute() {
- QuitDialog dlg = new QuitDialog();
- dlg.center();
+ GetRequest<Invitations> getInvitations = new GetRequest<Invitations> (Invitations.class, "/im/", "", "invite?format=json") {
+
+ @Override
+ public void onSuccess(Invitations _result) {
+ new InvitationsDialog(app, _result).center();
+ }
+
+ @Override
+ public void onError(Throwable t) {
+ GWT.log("", t);
+ if (t instanceof RestException)
+ app.displayError("Error getting invitations: " + ((RestException) t).getHttpStatusText());
+ else
+ app.displayError("System error getting invitations: " + t.getMessage());
+ }
+
+ @Override
+ protected void onUnauthorized(Response response) {
+ app.sessionExpired();
+ }
+ };
+ getInvitations.setHeader("X-Auth-Token", app.getToken());
+ Scheduler.get().scheduleDeferred(getInvitations);
}
- };
- MenuItem quitItem = new MenuItem("<table style='font-size: 100%'><tr><td>" +
- AbstractImagePrototype.create(images.exit()).getHTML() + "</td><td>Quit</td></tr></table>", true, quitCommand);
-
- MenuItem fileItem = new MenuItem("<table style='font-size: 100%'><tr><td>" +
- AbstractImagePrototype.create(images.folder()).getHTML() + "</td><td>File</td></tr></table>", true, new MenuBar(true)){
+ }));
+ userItemMenu.addItem(new MenuItem("send feedback...", new Command() {
+
@Override
- public MenuBar getSubMenu() {
- return new FileMenu(GSS.get(), images);
+ public void execute() {
+ new FeedbackDialog(app).center();
}
- };
-
- MenuItem editItem = new MenuItem("<table style='font-size: 100%'><tr><td>" +
- AbstractImagePrototype.create(images.edit()).getHTML() + "</td><td>Edit</td></tr></table>", true, new MenuBar(true)){
+ }));
+ userItemMenu.addItem(new MenuItem("API access", new Command() {
+
@Override
- public MenuBar getSubMenu() {
- return new EditMenu(GSS.get(), images);
+ public void execute() {
+ new CredentialsDialog(app, images).center();
}
- };
-
- menu.addItem(quitItem);
- menu.addItem(fileItem);
- menu.addItem(editItem);
-
- outer.setSpacing(2);
- outer.setVerticalAlignment(HasVerticalAlignment.ALIGN_MIDDLE);
- outer.setCellVerticalAlignment(menu, HasVerticalAlignment.ALIGN_MIDDLE);
- outer.add(menu);
- outer.setStyleName("toolbar");
-
- outer.add(loading);
-
- HTML logos = new HTML("<table><tr><td><a href='http://pithos.grnet.gr/pithos' target='pithos'>" + AbstractImagePrototype.create(images.gssLogo()).getHTML() +
- "</a><a href='http://www.grnet.gr/' " + "target='grnet'>" +
- AbstractImagePrototype.create(images.grnetLogo()).getHTML()+"</a></td></tr></table>");
- outer.add(logos);
-
- outer.setCellHorizontalAlignment(logos, HasHorizontalAlignment.ALIGN_RIGHT);
-
+ }));
+ userItemMenu.addItem(new MenuItem("logout", new Command() {
+
+ @Override
+ public void execute() {
+ app.logoff();
+ }
+ }));
+
+ MenuItem userItem = new MenuItem(_app.getUsername(), userItemMenu);
+ userItem.addStyleName("pithos-usernameMenuItem");
+ username.addItem(userItem);
+ username.addSeparator();
+
+ MenuItem langItem = new MenuItem("en", (Command) null);
+ langItem.addStyleName("pithos-langMenuItem");
+ username.addItem(langItem);
+
+ inner.add(username);
+ inner.setCellHorizontalAlignment(username, HasHorizontalAlignment.ALIGN_RIGHT);
+
+ outer.add(inner);
+ outer.setCellHorizontalAlignment(inner, HasHorizontalAlignment.ALIGN_CENTER);
+ outer.setCellVerticalAlignment(inner, HasVerticalAlignment.ALIGN_BOTTOM);
initWidget(outer);
}
-
-
- /**
- * Retrieve the loading.
- *
- * @return the loading
- */
- public LoadingIndicator getLoading() {
- return loading;
- }
}