Use Lytebox (a Lightbox clone) for quick viewing images.
[pithos] / src / gr / ebs / gss / client / FileUploadGearsDialog.java
index 027e317..25203a8 100644 (file)
@@ -39,6 +39,7 @@ import com.google.gwt.gears.client.httprequest.HttpRequest;
 import com.google.gwt.gears.client.httprequest.ProgressEvent;\r
 import com.google.gwt.gears.client.httprequest.ProgressHandler;\r
 import com.google.gwt.gears.client.httprequest.RequestCallback;\r
 import com.google.gwt.gears.client.httprequest.ProgressEvent;\r
 import com.google.gwt.gears.client.httprequest.ProgressHandler;\r
 import com.google.gwt.gears.client.httprequest.RequestCallback;\r
+import com.google.gwt.http.client.URL;\r
 import com.google.gwt.json.client.JSONObject;\r
 import com.google.gwt.json.client.JSONString;\r
 import com.google.gwt.user.client.Command;\r
 import com.google.gwt.json.client.JSONObject;\r
 import com.google.gwt.json.client.JSONString;\r
 import com.google.gwt.user.client.Command;\r
@@ -83,6 +84,8 @@ public class FileUploadGearsDialog extends FileUploadDialog implements Updateabl
 \r
        private Map<String, FileResource> toRename;\r
 \r
 \r
        private Map<String, FileResource> toRename;\r
 \r
+       private List<HttpRequest> requests = new ArrayList<HttpRequest>();\r
+\r
        /**\r
         * The widget's constructor.\r
         */\r
        /**\r
         * The widget's constructor.\r
         */\r
@@ -135,7 +138,7 @@ public class FileUploadGearsDialog extends FileUploadDialog implements Updateabl
                Button cancel = new Button("Cancel", new ClickListener() {\r
 \r
                        public void onClick(Widget sender) {\r
                Button cancel = new Button("Cancel", new ClickListener() {\r
 \r
                        public void onClick(Widget sender) {\r
-                               hide();\r
+                               cancelUpload();\r
                        }\r
                });\r
                buttons.add(cancel);\r
                        }\r
                });\r
                buttons.add(cancel);\r
@@ -174,6 +177,15 @@ public class FileUploadGearsDialog extends FileUploadDialog implements Updateabl
        }\r
 \r
        /**\r
        }\r
 \r
        /**\r
+        * Cancels the file upload.\r
+        */\r
+       private void cancelUpload() {\r
+               for (HttpRequest request: requests)\r
+                       request.abort();\r
+               hide();\r
+       }\r
+\r
+       /**\r
         * Check whether the specified file name exists in the selected folder.\r
         */\r
        private boolean canContinue(File file) {\r
         * Check whether the specified file name exists in the selected folder.\r
         */\r
        private boolean canContinue(File file) {\r
@@ -338,19 +350,15 @@ public class FileUploadGearsDialog extends FileUploadDialog implements Updateabl
        protected void doPut(final File file, final int index) {\r
                final GSS app = GSS.get();\r
                HttpRequest request = factory.createHttpRequest();\r
        protected void doPut(final File file, final int index) {\r
                final GSS app = GSS.get();\r
                HttpRequest request = factory.createHttpRequest();\r
+               requests.add(request);\r
                String method = "PUT";\r
 \r
                String path;\r
                final String filename = getFilename(file.getName());\r
                String method = "PUT";\r
 \r
                String path;\r
                final String filename = getFilename(file.getName());\r
-               FileResource selectedResource = getFileForName(filename);\r
-               if (selectedResource == null ) {\r
-                       // We are going to create a file.\r
-                       path = folder.getUri();\r
-                       if (!path.endsWith("/"))\r
-                               path = path + "/";\r
-                       path = path + encodeComponent(filename);\r
-               } else\r
-                       path = selectedResource.getUri();\r
+               path = folder.getUri();\r
+               if (!path.endsWith("/"))\r
+                       path = path + "/";\r
+               path = path + encode(filename);\r
 \r
                String token = app.getToken();\r
                String resource = path.substring(app.getApiPath().length()-1, path.length());\r
 \r
                String token = app.getToken();\r
                String resource = path.substring(app.getApiPath().length()-1, path.length());\r
@@ -409,4 +417,15 @@ public class FileUploadGearsDialog extends FileUploadDialog implements Updateabl
                GSS.get().showFileList(true);\r
                GSS.get().getStatusPanel().updateStats();\r
        }\r
                GSS.get().showFileList(true);\r
                GSS.get().getStatusPanel().updateStats();\r
        }\r
+\r
+       /**\r
+        * Same as URL.encode, but also encode apostrophe since browsers aren't\r
+        * consistent about it (FF encodes, IE does not).\r
+        */\r
+       private String encode(String decodedURL) {\r
+               String retv = URL.encode(decodedURL);\r
+               retv = retv.replaceAll("'", "%27");\r
+               return retv;\r
+       }\r
+\r
 }\r
 }\r