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
\r
private Map<String, FileResource> toRename;\r
\r
+ private List<HttpRequest> requests = new ArrayList<HttpRequest>();\r
+\r
/**\r
* The widget's constructor.\r
*/\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
/**\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
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
- 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
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