--- /dev/null
+package com.vaadin.tests.components.upload;\r
+\r
+import java.io.ByteArrayOutputStream;\r
+import java.io.OutputStream;\r
+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
+import com.vaadin.ui.Label;\r
+import com.vaadin.ui.Upload;\r
+import com.vaadin.ui.Button.ClickEvent;\r
+import com.vaadin.ui.Button.ClickListener;\r
+import com.vaadin.ui.Upload.FinishedEvent;\r
+import com.vaadin.ui.Upload.Receiver;\r
+import com.vaadin.ui.Upload.StartedEvent;\r
+\r
+public class TestUploadAndDisableOnSuccess extends ComponentTestCase implements\r
+ Receiver {\r
+ @Override\r
+ protected String getDescription() {\r
+ return "Possible timing issue, when upload is disabled on success.";\r
+ }\r
+\r
+ @Override\r
+ protected Integer getTicketNumber() {\r
+ return 4605;\r
+ }\r
+\r
+ int counter = 0;\r
+ private Label l;\r
+\r
+ @Override\r
+ protected void setup() {\r
+ super.setup();\r
+ final Upload u;\r
+\r
+ u = new Upload("Undefined wide upload", 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
+ });\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
+ }\r
+ });\r
+\r
+ }\r
+\r
+ private String getUploadcount() {\r
+ return counter++ + " Downloads";\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
+ return actions;\r
+ }\r
+\r
+ public OutputStream receiveUpload(String filename, String MIMEType) {\r
+ getMainWindow().showNotification("Receiving upload");\r
+ return new ByteArrayOutputStream();\r
+ }\r
+\r
+}\r