import java.util.ArrayList;\r
import java.util.List;\r
\r
-import com.vaadin.terminal.PaintException;\r
-import com.vaadin.terminal.PaintTarget;\r
import com.vaadin.tests.components.ComponentTestCase;\r
import com.vaadin.ui.Button;\r
import com.vaadin.ui.Component;\r
Receiver {\r
@Override\r
protected String getDescription() {\r
- return "Possible timing issue, when upload is disabled on success.";\r
+ return "If upload is detached and attached during upload, the client side componenent never receives information that the upload has finished. Second update will not be successful.";\r
}\r
\r
@Override\r
@Override\r
protected void setup() {\r
super.setup();\r
- final Upload u;\r
\r
- u = new Upload("Undefined wide upload", this);\r
+ final Label labe = new Label();\r
+\r
+ addComponent(labe);\r
+\r
+ final Upload u;\r
+ u = new Upload(null, this);\r
u.setImmediate(true);\r
addTestComponent(u);\r
\r
l = new Label(getUploadcount());\r
addComponent(l);\r
\r
- // TODO incomplete test, still hard to repeat the issue\r
-\r
u.addListener(new Upload.StartedListener() {\r
\r
public void uploadStarted(StartedEvent event) {\r
- addComponent(new Label("SluggishLabel") {\r
- @Override\r
- public void paintContent(PaintTarget target)\r
- throws PaintException {\r
- try {\r
- Thread.sleep(600);\r
- } catch (InterruptedException e) {\r
- // TODO Auto-generated catch block\r
- e.printStackTrace();\r
- }\r
- super.paintContent(target);\r
- }\r
- });\r
-\r
+ /*\r
+ * Remove component before upload from the same vertical layout.\r
+ * Causes upload to be detached/attached -> upload loses it\r
+ * target iframes onload listener -> puts VUpload inappropriate\r
+ * state.\r
+ */\r
+ getLayout().removeComponent(labe);\r
}\r
});\r
\r
u.addListener(new Upload.FinishedListener() {\r
public void uploadFinished(FinishedEvent event) {\r
getMainWindow().showNotification("Done");\r
- u.setEnabled(false);\r
- Label l2 = new Label(getUploadcount());\r
- getLayout().replaceComponent(l, l2);\r
- l = l2;\r
+ l.setValue(getUploadcount());\r
}\r
});\r
\r
}\r
\r
private String getUploadcount() {\r
- return counter++ + " Downloads";\r
+ return counter++ + " uploads";\r
}\r
\r
@Override\r
protected List<Component> createActions() {\r
List<Component> actions = new ArrayList<Component>();\r
-\r
Button enabled = new Button("Toggle Enabled", new ClickListener() {\r
-\r
public void buttonClick(ClickEvent event) {\r
for (Component c : getTestComponents()) {\r
c.setEnabled(!c.isEnabled());\r
}\r
-\r
}\r
});\r
actions.add(enabled);\r
}\r
\r
public OutputStream receiveUpload(String filename, String MIMEType) {\r
- getMainWindow().showNotification("Receiving upload");\r
+ // sleep to ensure change before upload is complete\r
+ try {\r
+ Thread.sleep(1000);\r
+ } catch (InterruptedException e) {\r
+ e.printStackTrace();\r
+ }\r
return new ByteArrayOutputStream();\r
}\r
\r