Revision 1a0db4f4 src/gr/grnet/pithos/web/client/FileUploadDialog.java

b/src/gr/grnet/pithos/web/client/FileUploadDialog.java
41 41
import com.google.gwt.event.dom.client.ClickEvent;
42 42
import com.google.gwt.event.dom.client.ClickHandler;
43 43
import com.google.gwt.event.dom.client.KeyCodes;
44
import com.google.gwt.event.logical.shared.CloseEvent;
45
import com.google.gwt.event.logical.shared.CloseHandler;
44 46
import com.google.gwt.user.client.Command;
45 47
import com.google.gwt.user.client.Event.NativePreviewEvent;
46 48
import com.google.gwt.user.client.ui.Anchor;
......
54 56
import com.google.gwt.user.client.ui.Hidden;
55 57
import com.google.gwt.user.client.ui.HorizontalPanel;
56 58
import com.google.gwt.user.client.ui.Label;
59
import com.google.gwt.user.client.ui.PopupPanel;
57 60
import com.google.gwt.user.client.ui.VerticalPanel;
58 61

  
59 62
/**
......
83 86
	/**
84 87
	 * The widget's constructor.
85 88
	 */
86
	public FileUploadDialog(Pithos _app, Folder _folder) {
89
	public FileUploadDialog(Pithos _app) {
87 90
		app = _app;
88
		folder = _folder;
89
		foldernameLabel.setText(folder.getName());
90 91
		Anchor close = new Anchor();
91 92
		close.addStyleName("close");
92 93
		close.addClickHandler(new ClickHandler() {
93 94
			
94 95
			@Override
95 96
			public void onClick(ClickEvent event) {
96
				hide();
97
				close();
97 98
			}
98 99
		});
99 100
		// Set the dialog's caption.
......
101 102
		setAnimationEnabled(true);
102 103
		setGlassEnabled(true);
103 104
		setStyleName("pithos-DialogBox");
105
		setVisible(false);
106
		
104 107
		// Since we're going to add a FileUpload widget, we'll need to set the
105 108
		// form to use the POST method, and multipart MIME encoding.
106 109
		form.setEncoding(FormPanel.ENCODING_MULTIPART);
......
144 147
		panel.add(inner);
145 148
		panel.setCellHorizontalAlignment(inner, HasHorizontalAlignment.ALIGN_CENTER);
146 149
		
147
		
148
		Scheduler.get().scheduleDeferred(new Command() {
149
			
150
			@Override
151
			public void execute() {
152
				String path = app.getApiPath() + folder.getOwner() + folder.getUri();
153
				setupUpload(FileUploadDialog.this, path, app.getToken());
154
			}
155
		});
156 150
		setWidget(form);
157 151
	}
158 152

  
......
190 184
					Init: function(up, info) {
191 185
						$wnd.console.log("Init fired");
192 186
						up.settings.file_data_name = "X-Object-Data";				
193
						dlg.@gr.grnet.pithos.web.client.FileUploadDialog::center()();
194
//						up.refresh();
195
						return true;
196 187
					}
197 188
					
198 189
				},
199 190
				
200 191
				init: {
201
					PostInit: function(up) {
202
						$wnd.console.log("PostInit fired");
203
						//dlg.@gr.grnet.pithos.web.client.FileUploadDialog::center()();
192
					FilesAdded: function(up, files) {
193
						for (var j=0; j<files.length; j++)
194
							files[j].url = up.path + "/" + files[j].name + "?X-Auth-Token=" + token;
204 195
					},
205 196
					
206 197
					BeforeUpload: function(up, file) {
207
						$wnd.console.log('About to upload ' + file.name);
208
						up.settings.url = path + "/" + file.name + "?X-Auth-Token=" + token;
198
						$wnd.console.log('About to upload ' + file.url);
199
						up.settings.url = file.url;
209 200
					},
210 201
					
211 202
					FileUploaded: function(up, file, response) {
......
215 206
					
216 207
					UploadComplete: function(up, files) {
217 208
						$wnd.console.log('All files finished');
209
						dlg.@gr.grnet.pithos.web.client.FileUploadDialog::hideUploadIndicator()();
218 210
						dlg.@gr.grnet.pithos.web.client.FileUploadDialog::refreshFolder()();
219 211
					}
220 212
				}
221 213
			});
214
			uploader = $wnd.$("#uploader").pluploadQueue();
222 215
		}
223 216
		else {
224
			var previousSettings = uploader.settings;
225
			var previousFiles = uploader.files;
226
			$wnd.$("#uploader").pluploadQueue(previousSettings);
227
			uploader = $wnd.$("#uploader").pluploadQueue();
228
			uploader.trigger('FilesAdded', previousFiles);
229
			for (var i=0; i<previousFiles.length; i++) {
230
				var f = previousFiles[i];
231
				if (f.status == $wnd.plupload.UPLOADING) {
232
					uploader.trigger('UploadProgress', f);
217
			var removeAll = true;
218
			var files = uploader.files;
219
			$wnd.console.log('About to check ' + files.length + ' files');
220
			for (var i=0; i<files.length; i++) {
221
				var f = files[i];
222
				if (f.status != $wnd.plupload.DONE && f.status != $wnd.plupload.FAILED) {
223
					removeAll = false;
233 224
					break;
234 225
				}
235 226
			}
227
			if (removeAll) {
228
				$wnd.console.log('About to remove ' + files.length + ' files');
229
				while (files.length > 0) {
230
					uploader.removeFile(files[0]);
231
				}
232
				$wnd.console.log(uploader);
233
			}
236 234
		}
235
		uploader.path = path;
236
	}-*/;
237
	
238
	native boolean isUploading()/*-{
239
		var uploader = $wnd.$("#uploader").pluploadQueue();
240
		var files = uploader.files;
241
		for (var i=0; i<files.length; i++) {
242
			var f = files[i];
243
			if (f.status == $wnd.plupload.UPLOADING) {
244
				return true;
245
			}
246
		}
247
		return false;
237 248
	}-*/;
238 249
	
239 250
	@Override
......
246 257
			// escape is pressed.
247 258
			switch (evt.getKeyCode()) {
248 259
				case KeyCodes.KEY_ESCAPE:
249
					hide();
260
					close();
250 261
					break;
251 262
			}
252 263
	}
264

  
265
	public void setFolder(Folder folder) {
266
		this.folder = folder;
267
		foldernameLabel.setText(folder.getName());
268
	}
269

  
270
	@Override
271
	public void center() {
272
		app.hideUploadIndicator();
273
		setVisible(true);
274
		setModal(true);
275
		super.center();
276
		String path = app.getApiPath() + folder.getOwner() + folder.getUri();
277
		setupUpload(this, path, app.getToken());
278
		super.center();
279
	}
280
	
281
	private void hideUploadIndicator() {
282
		app.hideUploadIndicator();
283
	}
284
	
285
	void close() {
286
		setVisible(false);
287
		setModal(false);
288
		if (isUploading())
289
			app.showUploadIndicator();
290
	}
253 291
}

Also available in: Unified diff