import com.google.gwt.core.client.GWT;
import com.google.gwt.core.client.Scheduler;
+import com.google.gwt.core.client.Scheduler.ScheduledCommand;
import com.google.gwt.dom.client.DivElement;
import com.google.gwt.dom.client.Document;
import com.google.gwt.dom.client.FormElement;
});
}
+ ScheduledCommand startUploadCmd = new ScheduledCommand() {
+
+ @Override
+ public void execute() {
+ element.submit();
+ submitted = true;
+
+ disableUpload();
+
+ /*
+ * Visit server a moment after upload has started to see possible
+ * changes from UploadStarted event. Will be cleared on complete.
+ */
+ t = new Timer() {
+ @Override
+ public void run() {
+ VConsole.log("Visiting server to see if upload started event changed UI.");
+ client.updateVariable(paintableId, "pollForStart",
+ nextUploadId, true);
+ }
+ };
+ t.schedule(800);
+ }
+
+ };
+
/** For internal use only. May be removed or replaced in the future. */
public void submit() {
if (fu.getFilename().length() == 0 || submitted || !enabled) {
// before upload
client.sendPendingVariableChanges();
- element.submit();
- submitted = true;
- VConsole.log("Submitted form");
-
- disableUpload();
-
- /*
- * Visit server a moment after upload has started to see possible
- * changes from UploadStarted event. Will be cleared on complete.
- */
- t = new Timer() {
- @Override
- public void run() {
- VConsole.log("Visiting server to see if upload started event changed UI.");
- client.updateVariable(paintableId, "pollForStart",
- nextUploadId, true);
- }
- };
- t.schedule(800);
+ // This is done as deferred because sendPendingVariableChanges is also
+ // deferred and we want to start the upload only after the changes have
+ // been sent to the server
+ Scheduler.get().scheduleDeferred(startUploadCmd);
}
@Override
import com.vaadin.tests.components.TestBase;
import com.vaadin.tests.util.Log;
import com.vaadin.ui.Upload;
-import com.vaadin.ui.Upload.FinishedEvent;
+import com.vaadin.ui.Upload.FailedEvent;
+import com.vaadin.ui.Upload.FailedListener;
import com.vaadin.ui.Upload.Receiver;
+import com.vaadin.ui.Upload.SucceededEvent;
+import com.vaadin.ui.Upload.SucceededListener;
public class TestFileUpload extends TestBase implements Receiver {
}
});
u.setId("UPL");
- u.addListener(new Upload.FinishedListener() {
+ u.addFailedListener(new FailedListener() {
@Override
- public void uploadFinished(FinishedEvent event) {
+ public void uploadFailed(FailedEvent event) {
+ String hash = DigestUtils.md5Hex(baos.toByteArray());
+
+ log.log("<span style=\"color: red;\">Upload failed. Name: "
+ + event.getFilename() + ", Size: " + baos.size()
+ + ", md5: " + hash + "</span>");
+ baos.reset();
+ }
+ });
+ u.addSucceededListener(new SucceededListener() {
+
+ @Override
+ public void uploadSucceeded(SucceededEvent event) {
String hash = DigestUtils.md5Hex(baos.toByteArray());
log.log("Upload finished. Name: " + event.getFilename()
+ ", Size: " + baos.size() + ", md5: " + hash);