private com.google.gwt.dom.client.Element synthesizedFrame;
+ private int nextUploadId;
+
public VUpload() {
super(com.google.gwt.dom.client.Document.get().createFormElement());
if (client.updateComponent(this, uidl, true)) {
return;
}
+ if (uidl.hasAttribute("notStarted")) {
+ t.schedule(400);
+ return;
+ }
setImmediate(uidl.getBooleanAttribute("immediate"));
this.client = client;
paintableId = uidl.getId();
+ nextUploadId = uidl.getIntAttribute("nextid");
element.setAction(client.getAppUri());
submitButton.setText(uidl.getStringAttribute("buttoncaption"));
fu.setName(paintableId + "_file");
.getConsole()
.log(
"Visiting server to see if upload started event changed UI.");
- client.sendPendingVariableChanges();
+ client.updateVariable(paintableId, "pollForStart",
+ nextUploadId, true);
}
};
t.schedule(800);
private boolean interrupted = false;
+ private boolean notStarted;
+
+ private int nextid;
+
/* TODO: Add a default constructor, receive to temp file. */
/**
*/
@Override
public void changeVariables(Object source, Map variables) {
- // NOP
-
+ if (variables.containsKey("pollForStart")) {
+ int id = (Integer) variables.get("pollForStart");
+ if (!isUploading && id == nextid) {
+ notStarted = true;
+ requestRepaint();
+ } else {
+ }
+ }
}
/**
*/
@Override
public void paintContent(PaintTarget target) throws PaintException {
+ if (notStarted) {
+ target.addAttribute("notStarted", true);
+ notStarted = false;
+ return;
+ }
// The field should be focused
if (focus) {
target.addAttribute("focus", true);
target.addAttribute("buttoncaption", buttonCaption);
- target.addUploadStreamVariable(this, "stream");
+ target.addAttribute("nextid", nextid);
+
}
/**
throw new IllegalStateException("uploading already started");
}
isUploading = true;
+ nextid++;
}
/**