X-Git-Url: https://code.grnet.gr/git/pithos-web-client/blobdiff_plain/b51c628bc1f20edc7454361492a829dbb7195302..904447e47113602d196ffc436f2b068c923aaeba:/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 a1ee721..9b67a53 100644 --- a/src/gr/grnet/pithos/web/client/DeleteFileDialog.java +++ b/src/gr/grnet/pithos/web/client/DeleteFileDialog.java @@ -49,8 +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.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; @@ -64,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) @@ -84,55 +105,40 @@ 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 = f.getUri(); - DeleteRequest deleteFile = new DeleteRequest(Pithos.get().getApiPath(), Pithos.get().getUsername(), path) { + DeleteRequest deleteFile = new DeleteRequest(app.getApiPath(), f.getOwner(), path) { @Override - public void onSuccess(Resource result) { + public void onSuccess(@SuppressWarnings("unused") Resource result) { deleteFile(iter); } @@ -140,17 +146,28 @@ public class DeleteFileDialog extends DialogBox { public void onError(Throwable t) { GWT.log("", t); if (t instanceof RestException) { - Pithos.get().displayError("Unable to delete file: " + ((RestException) t).getHttpStatusText()); + app.displayError("Unable to delete file: " + ((RestException) t).getHttpStatusText()); } else - Pithos.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", Pithos.get().getToken()); + deleteFile.setHeader("X-Auth-Token", app.getToken()); Scheduler.get().scheduleDeferred(deleteFile); } else { - Pithos.get().updateFolder(files.get(0).getParent()); + app.updateFolder(files.get(0).getParent(), true, new Command() { + + @Override + public void execute() { + app.updateStatistics(); + } + }); } }