X-Git-Url: https://code.grnet.gr/git/pithos-web-client/blobdiff_plain/f1aabd8999c734bfa6c43df49518bf7156ed4161..e6a68fc4d96a02c7330e0152ae356f7985acf1df:/src/gr/grnet/pithos/web/client/DeleteFolderDialog.java diff --git a/src/gr/grnet/pithos/web/client/DeleteFolderDialog.java b/src/gr/grnet/pithos/web/client/DeleteFolderDialog.java index d930bbe..9194ea9 100644 --- a/src/gr/grnet/pithos/web/client/DeleteFolderDialog.java +++ b/src/gr/grnet/pithos/web/client/DeleteFolderDialog.java @@ -1,5 +1,5 @@ /* - * Copyright 2011 GRNET S.A. All rights reserved. + * Copyright 2011-2013 GRNET S.A. All rights reserved. * * Redistribution and use in source and binary forms, with or * without modification, are permitted provided that the following @@ -34,33 +34,22 @@ */ package gr.grnet.pithos.web.client; -import com.google.gwt.core.client.Scheduler; -import com.google.gwt.event.dom.client.KeyDownEvent; -import com.google.gwt.user.client.Event; +import com.google.gwt.safehtml.shared.SafeHtmlUtils; import gr.grnet.pithos.web.client.MessagePanel.Images; import gr.grnet.pithos.web.client.foldertree.Folder; -import gr.grnet.pithos.web.client.foldertree.Resource; -import gr.grnet.pithos.web.client.rest.DeleteCommand; -import gr.grnet.pithos.web.client.rest.DeleteRequest; -import gr.grnet.pithos.web.client.rest.RestException; -import gr.grnet.pithos.web.client.rest.resource.FolderResource; -import gr.grnet.pithos.web.client.rest.resource.RestResource; -import gr.grnet.pithos.web.client.rest.resource.RestResourceWrapper; -import gr.grnet.pithos.web.client.rest.resource.TrashFolderResource; -import com.google.gwt.core.client.GWT; import com.google.gwt.dom.client.NativeEvent; import com.google.gwt.event.dom.client.ClickEvent; import com.google.gwt.event.dom.client.ClickHandler; import com.google.gwt.event.dom.client.KeyCodes; -import com.google.gwt.user.client.DeferredCommand; +import com.google.gwt.event.dom.client.KeyDownEvent; import com.google.gwt.user.client.Event.NativePreviewEvent; import com.google.gwt.user.client.ui.AbstractImagePrototype; +import com.google.gwt.user.client.ui.Anchor; import com.google.gwt.user.client.ui.Button; import com.google.gwt.user.client.ui.DialogBox; import com.google.gwt.user.client.ui.HTML; import com.google.gwt.user.client.ui.HasHorizontalAlignment; -import com.google.gwt.user.client.ui.HorizontalPanel; import com.google.gwt.user.client.ui.VerticalPanel; /** @@ -68,87 +57,64 @@ import com.google.gwt.user.client.ui.VerticalPanel; */ public class DeleteFolderDialog extends DialogBox { - private GSS app; - private Folder folder; + protected Pithos app; + protected Folder folder; /** * The widget's constructor. * @param images the supplied images */ - public DeleteFolderDialog(GSS app, Images images, Folder folder) { - this.app = app; - this.folder = folder; + public DeleteFolderDialog(Pithos _app, Images images, Folder _folder) { + this.app = _app; + this.folder = _folder; + + Anchor close = new Anchor("close"); + close.addStyleName("close"); + close.addClickHandler(new ClickHandler() { + + @Override + public void onClick(ClickEvent event) { + hide(); + } + }); + // Set the dialog's caption. setText("Confirmation"); - setAnimationEnabled(true); + setGlassEnabled(true); + setStyleName("pithos-DialogBox"); // Create a VerticalPanel to contain the HTML label and the buttons. VerticalPanel outer = new VerticalPanel(); - HorizontalPanel buttons = new HorizontalPanel(); + outer.add(close); + + VerticalPanel inner = new VerticalPanel(); + inner.addStyleName("inner"); + + final String folderName = folder.getName(); + final String safeFolderName = SafeHtmlUtils.htmlEscape(folderName); HTML text = new HTML("
" + AbstractImagePrototype.create(images.warn()).getHTML() + - "" + "Are you sure you want to permanently delete folder '" + folder.getName() + + "" + "Are you sure you want to permanently delete folder '" + safeFolderName + "'?
"); text.setStyleName("pithos-warnMessage"); - outer.add(text); + inner.add(text); + inner.setCellHorizontalAlignment(text, HasHorizontalAlignment.ALIGN_CENTER); // Create the 'Delete' button, along with a listener that hides the dialog // when the button is clicked and deletes the folder. Button ok = new Button("Delete", new ClickHandler() { @Override public void onClick(ClickEvent event) { - deleteFolder(); + app.deleteFolder(folder, null); hide(); } }); - buttons.add(ok); - buttons.setCellHorizontalAlignment(ok, HasHorizontalAlignment.ALIGN_CENTER); - // Create the 'Cancel' button, along with a listener that hides the - // dialog when the button is clicked. - Button cancel = new Button("Cancel", new ClickHandler() { - @Override - public void onClick(ClickEvent event) { - hide(); - } - }); - buttons.add(cancel); - buttons.setCellHorizontalAlignment(cancel, HasHorizontalAlignment.ALIGN_CENTER); - buttons.setSpacing(8); - buttons.setStyleName("pithos-warnMessage"); - outer.setStyleName("pithos-warnMessage"); - outer.add(buttons); - outer.setCellHorizontalAlignment(text, HasHorizontalAlignment.ALIGN_CENTER); - outer.setCellHorizontalAlignment(buttons, HasHorizontalAlignment.ALIGN_CENTER); + ok.addStyleName("button"); + inner.add(ok); + outer.add(inner); + outer.setCellHorizontalAlignment(inner, HasHorizontalAlignment.ALIGN_CENTER); setWidget(outer); } - /** - * Generate an RPC request to delete a folder. - * - */ - private void deleteFolder() { - String prefix = folder.getPrefix(); - String path = app.getApiPath() + app.getUsername() + "/" + folder.getContainer() + (prefix.length() == 0 ? "" : "/" + prefix); - DeleteRequest deleteFolder = new DeleteRequest(path) { - @Override - public void onSuccess(Resource result) { - - } - - @Override - public void onError(Throwable t) { - GWT.log("", t); - if (t instanceof RestException) { - int statusCode = ((RestException)t).getHttpStatusCode(); - app.displayError("Unable to delete folder: "+((RestException) t).getHttpStatusText()); - } - else - GSS.get().displayError("System error unable to delete folder: " + t.getMessage()); - } - }; - deleteFolder.setHeader("X-Auth-Token", app.getToken()); - Scheduler.get().scheduleDeferred(deleteFolder); - } - @Override protected void onPreviewNativeEvent(NativePreviewEvent preview) { super.onPreviewNativeEvent(preview); @@ -160,7 +126,7 @@ public class DeleteFolderDialog extends DialogBox { switch (evt.getKeyCode()) { case KeyCodes.KEY_ENTER: hide(); - deleteFolder(); + app.deleteFolder(folder, null); break; case KeyCodes.KEY_ESCAPE: hide();