X-Git-Url: https://code.grnet.gr/git/pithos-web-client/blobdiff_plain/d4374639c6dd2aa890bd59c969076cefb90cc211..9b055abaca2e3fb848a98484bdf4ed642e3320aa:/src/gr/grnet/pithos/web/client/DeleteFileDialog.java diff --git a/src/gr/grnet/pithos/web/client/DeleteFileDialog.java b/src/gr/grnet/pithos/web/client/DeleteFileDialog.java index 48087e3..aee2d28 100644 --- a/src/gr/grnet/pithos/web/client/DeleteFileDialog.java +++ b/src/gr/grnet/pithos/web/client/DeleteFileDialog.java @@ -38,13 +38,9 @@ import com.google.gwt.core.client.Scheduler; import gr.grnet.pithos.web.client.MessagePanel.Images; import gr.grnet.pithos.web.client.foldertree.File; 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.MultipleDeleteCommand; import gr.grnet.pithos.web.client.rest.RestException; -import gr.grnet.pithos.web.client.rest.resource.FileResource; -import java.util.ArrayList; import java.util.Iterator; import java.util.List; @@ -53,9 +49,11 @@ 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.http.client.Response; +import com.google.gwt.user.client.Command; 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; @@ -69,19 +67,37 @@ import com.google.gwt.user.client.ui.VerticalPanel; public class DeleteFileDialog extends DialogBox { private List files; + + protected Pithos app; + /** * The widget's constructor. * * @param images the supplied images */ - public DeleteFileDialog(Images images, List _files) { + public DeleteFileDialog(Pithos _app, Images images, List _files) { + app = _app; files = _files; + Anchor close = new Anchor(); + 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 label and the buttons. VerticalPanel outer = new VerticalPanel(); - HorizontalPanel buttons = new HorizontalPanel(); + outer.add(close); + + VerticalPanel inner = new VerticalPanel(); + inner.addStyleName("inner"); HTML text; if (files.size() == 1) @@ -89,73 +105,70 @@ public class DeleteFileDialog extends DialogBox { else text = new HTML("
" + AbstractImagePrototype.create(images.warn()).getHTML() + "" + "Are you sure you want to permanently delete the selected files?
"); text.setStyleName("pithos-warnMessage"); - outer.add(text); + inner.add(text); // Create the 'Delete' button, along with a listener that hides the dialog // when the button is clicked and deletes the file. Button ok = new Button("Delete", new ClickHandler() { @Override - public void onClick(ClickEvent event) { + public void onClick(@SuppressWarnings("unused") ClickEvent event) { deleteFiles(); hide(); } }); - ok.getElement().setId("confirmation.ok"); - 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(); - } - }); - cancel.getElement().setId("confirmation.cancel"); - 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); + inner.setCellHorizontalAlignment(text, HasHorizontalAlignment.ALIGN_CENTER); + outer.add(inner); + outer.setCellHorizontalAlignment(inner, HasHorizontalAlignment.ALIGN_CENTER); setWidget(outer); } /** * Generate an RPC request to delete a file. */ - private void deleteFiles() { + protected void deleteFiles() { Iterator iter = files.iterator(); deleteFile(iter); } - private void deleteFile(final Iterator iter) { + protected void deleteFile(final Iterator iter) { if (iter.hasNext()) { File f = iter.next(); - String path = GSS.get().getApiPath() + GSS.get().getUsername() + f.getUri(); - DeleteRequest deleteFile = new DeleteRequest(path) { + String path = f.getUri(); + DeleteRequest deleteFile = new DeleteRequest(app.getApiPath(), f.getOwner(), path) { @Override - public void onSuccess(Resource result) { + public void onSuccess(@SuppressWarnings("unused") Resource result) { deleteFile(iter); } @Override public void onError(Throwable t) { GWT.log("", t); + app.setError(t); if (t instanceof RestException) { - GSS.get().displayError("Unable to delete file: " + ((RestException) t).getHttpStatusText()); + app.displayError("Unable to delete file: " + ((RestException) t).getHttpStatusText()); } else - GSS.get().displayError("System error unable to delete file: "+t.getMessage()); + app.displayError("System error unable to delete file: "+t.getMessage()); } + + @Override + protected void onUnauthorized(Response response) { + app.sessionExpired(); + } }; - deleteFile.setHeader("X-Auth-Token", GSS.get().getToken()); + deleteFile.setHeader("X-Auth-Token", app.getToken()); Scheduler.get().scheduleDeferred(deleteFile); } else { - GSS.get().updateFolder(files.get(0).getParent()); + app.updateFolder(files.get(0).getParent(), true, new Command() { + + @Override + public void execute() { + app.updateStatistics(); + } + }); } }