From 1a0db4f4e007b18707f875e8129e7b418da5f822 Mon Sep 17 00:00:00 2001 From: Christos Stathis Date: Fri, 10 Feb 2012 17:53:53 +0200 Subject: [PATCH] Implemented background multiple upload (issue #1989) --- build.xml | 2 +- .../grnet/pithos/web/client/FileUploadDialog.java | 100 ++++++++++++++------ src/gr/grnet/pithos/web/client/Pithos.java | 20 +++- .../web/client/commands/UploadFileCommand.java | 3 +- .../grnet/pithos/web/public/images/ajax-loader.gif | Bin 0 -> 3208 bytes src/gr/grnet/pithos/web/public/pithos.css | 18 ++-- .../css/jquery.plupload.queue.css | 3 +- 7 files changed, 104 insertions(+), 42 deletions(-) create mode 100644 src/gr/grnet/pithos/web/public/images/ajax-loader.gif diff --git a/build.xml b/build.xml index 12cdddc..c0a240a 100644 --- a/build.xml +++ b/build.xml @@ -84,7 +84,7 @@ - + diff --git a/src/gr/grnet/pithos/web/client/FileUploadDialog.java b/src/gr/grnet/pithos/web/client/FileUploadDialog.java index 1bb069a..4db59b9 100644 --- a/src/gr/grnet/pithos/web/client/FileUploadDialog.java +++ b/src/gr/grnet/pithos/web/client/FileUploadDialog.java @@ -41,6 +41,8 @@ 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.event.logical.shared.CloseEvent; +import com.google.gwt.event.logical.shared.CloseHandler; import com.google.gwt.user.client.Command; import com.google.gwt.user.client.Event.NativePreviewEvent; import com.google.gwt.user.client.ui.Anchor; @@ -54,6 +56,7 @@ import com.google.gwt.user.client.ui.HasHorizontalAlignment; import com.google.gwt.user.client.ui.Hidden; import com.google.gwt.user.client.ui.HorizontalPanel; import com.google.gwt.user.client.ui.Label; +import com.google.gwt.user.client.ui.PopupPanel; import com.google.gwt.user.client.ui.VerticalPanel; /** @@ -83,17 +86,15 @@ public class FileUploadDialog extends DialogBox { /** * The widget's constructor. */ - public FileUploadDialog(Pithos _app, Folder _folder) { + public FileUploadDialog(Pithos _app) { app = _app; - folder = _folder; - foldernameLabel.setText(folder.getName()); Anchor close = new Anchor(); close.addStyleName("close"); close.addClickHandler(new ClickHandler() { @Override public void onClick(ClickEvent event) { - hide(); + close(); } }); // Set the dialog's caption. @@ -101,6 +102,8 @@ public class FileUploadDialog extends DialogBox { setAnimationEnabled(true); setGlassEnabled(true); setStyleName("pithos-DialogBox"); + setVisible(false); + // Since we're going to add a FileUpload widget, we'll need to set the // form to use the POST method, and multipart MIME encoding. form.setEncoding(FormPanel.ENCODING_MULTIPART); @@ -144,15 +147,6 @@ public class FileUploadDialog extends DialogBox { panel.add(inner); panel.setCellHorizontalAlignment(inner, HasHorizontalAlignment.ALIGN_CENTER); - - Scheduler.get().scheduleDeferred(new Command() { - - @Override - public void execute() { - String path = app.getApiPath() + folder.getOwner() + folder.getUri(); - setupUpload(FileUploadDialog.this, path, app.getToken()); - } - }); setWidget(form); } @@ -190,22 +184,19 @@ public class FileUploadDialog extends DialogBox { Init: function(up, info) { $wnd.console.log("Init fired"); up.settings.file_data_name = "X-Object-Data"; - dlg.@gr.grnet.pithos.web.client.FileUploadDialog::center()(); -// up.refresh(); - return true; } }, init: { - PostInit: function(up) { - $wnd.console.log("PostInit fired"); - //dlg.@gr.grnet.pithos.web.client.FileUploadDialog::center()(); + FilesAdded: function(up, files) { + for (var j=0; j 0) { + uploader.removeFile(files[0]); + } + $wnd.console.log(uploader); + } } + uploader.path = path; + }-*/; + + native boolean isUploading()/*-{ + var uploader = $wnd.$("#uploader").pluploadQueue(); + var files = uploader.files; + for (var i=0; ipJdFE7h`I{IF)0|5<6L}(j=N}5%L009EB2nYfyF)E0PvIqo$u!IC; z4PgyY5|S9AEh38G)(9eq4TbH7_UHg@yWrlIJ$6smIADL7s^P;_O;ykRc9soXl`UC*LwQJXkii*0rx|*7rI2=x7WaRkx_~XZqFJ8R3c=2Kg zf@aSAv8+BJ8+^hyay>(QR@t*blbKzsf0}bscEqRc5Hd3o(-N5RyW=zWB*zQw6Zh>* z2CROCDAbu#D`)S|J_o(lL9Yn3l*+8RdiRD_>iNz$#_IAzCna&Wl5 zSF_(rRCDD!wi#i8oAm&jYtn2_@VB%2-H*G%bN#|(6R6N?wM)3u`PiGzwuX7qmTgyF zpE)h0kuoxQ9?=kW7Y!=R@DmhU9)vwT*EZWzJ zrt+=2tqFts72yIp?|gvdLhs8Hfku^Z(){gmN%Y=K#P|%fkvgUj~HfIp3CuXqCtYGtJ#me+n+-LmP( z*XNuk%!aH8bIE@_Bj46>M*dSro|7<6vZ7WUHh5YQzN$>IJFqCb|CT!wj~R2C2%=q{ zpt8rzY$aw?W?=Ustv{jo?Ow@ZRkLe<)NItY>Cyhle*wR59dTdF6(@{5^ zAQBOB*hNtc3bkY-8{Cm$nFS@elbTtSqrt7MB{h_4y+~`!mVa}?c&N>&?P}GqdMuhQ z&@TD5Czd((DcG_Su~dKKV)Pj$-qi1WHM8_vc^O4?^!oY|tmK~i!{fjd&@_1E(T~r7 z_REZy&hMT^ySJB3W7l$4YhR`M(J7S5S~+4Q&3HPa)z%zPpisOp$^ zTEe99ig2$5_qFr!$;7A6CJ}PJmRhli>w?LC}Y`#HLGy6 zMU4EhL~dKCN5Ut;U2jd*83ShBNiu zcJB0l9>1Modc?-oM<R4?}3g}UJ%@K);kriq>)e*rh%hdqM)5Q)*+O8 zXm;SEbs@koiYS!9YXIclSg+5m_s~yrW#kKMdiRszg(gCP5HPmP7L)vCf8@fxUh6qY z@Z#TmkjzAZX{rwE+q|K~F2v5{_@vt%>yT_a#fF03SFt{0RXvDAiaY~K9CgS1O>frXgAjBCS}mEd4mIWZ$=ovd5| zR?GRdU}d6+Q`+JRW)|=v7$)XNkn3yE`!nAiSCvOB1jKT zG<1aK3s<0b0m==egTD#8i(Of=1pGDTOCho0XpIOMQ&P87cVKY1W=C6kIg z9cH=@a&zbm2+`|{(_?YC9fdm?1TY~-pwlBn?>=(~1pDKbco6jloP;0-cqRiwV1A_S zEyV0Dj8Pwy!nekzaN>{)7rgZ&_QLxK{~1yRe865^yx>}+a!ECd>#MMwddow z@CU{l+Rt$xuXuf}?ga{3IAr?Raql^c@a%sI0U5m}HvJ5O1#I%_MMPt#BH>OqUZ{-k zt>4Xzz=%jT*FVW(uYkWyx}9Gw$HdN*qU?Bit#ji(Wi7p-u|_8?h^%szIS^s^fNM}b zgGy>|=cbEufpguY5_6w~&ZLv=Bo06UF9EYIY;Er-1VK)SyF&!|J{axiE1z^(hXwVq zsFS=K-#zC}CcOs^8W{KAt+kK)jYDgDYbCXv{{rwsgqtIU3<910$CJi)s?? z_t8k{>7*0~4l~LLF7$WXT5OSq5QCTbP_l!SN|{R}3D&eWA8~0ltWh1IL+ZBX4rRSt zWF6Om3WDMu4xK^1(BF`2cL}rUCzhHAB`@j5&R-yk_l*t;mPGY|u2^o|myvcOdrg0W z%=lX;f^Vkqfp?u7*4qQq%A3Mpf!xspWBSKS@O%r*TSM}?dl(@*%{0Jm_8;(h{R__M Bt