]> source.dussan.org Git - vaadin-framework.git/commitdiff
Merged fix and test case for #3525 - "Cannot re-enable a disabled upload component...
authorArtur Signell <artur.signell@itmill.com>
Tue, 10 Nov 2009 15:10:01 +0000 (15:10 +0000)
committerArtur Signell <artur.signell@itmill.com>
Tue, 10 Nov 2009 15:10:01 +0000 (15:10 +0000)
svn changeset:9714/svn branch:6.2

src/com/vaadin/terminal/gwt/client/ui/VUpload.java
src/com/vaadin/ui/Upload.java
tests/src/com/vaadin/tests/components/upload/TestUpload.java [new file with mode: 0644]

index 64b86c47b32a4c2b3393b6015c675f38b02f6ba1..aded833138becbee6258427d2ac8566cf6d28f0b 100644 (file)
@@ -122,8 +122,9 @@ public class VUpload extends FormPanel implements Paintable,
 
         if (uidl.hasAttribute("disabled") || uidl.hasAttribute("readonly")) {
             disableUpload();
-        } else if (uidl.getBooleanAttribute("state")) {
-            enableUploaod();
+        } else if (!uidl.getBooleanAttribute("state")) {
+            // Enable the button only if an upload is not in progress
+            enableUpload();
         }
     }
 
@@ -150,13 +151,17 @@ public class VUpload extends FormPanel implements Paintable,
 
     protected void disableUpload() {
         submitButton.setEnabled(false);
-        // fu.getElement().setPropertyBoolean("disabled", true);
+        if (!submitted) {
+            // Cannot disable the fileupload while submitting or the file won't
+            // be submitted at all
+            fu.getElement().setPropertyBoolean("disabled", true);
+        }
         enabled = false;
     }
 
-    protected void enableUploaod() {
+    protected void enableUpload() {
         submitButton.setEnabled(true);
-        // fu.getElement().setPropertyBoolean("disabled", false);
+        fu.getElement().setPropertyBoolean("disabled", false);
         enabled = true;
     }
 
@@ -169,7 +174,7 @@ public class VUpload extends FormPanel implements Paintable,
         panel.remove(fu);
         fu = new MyFileUpload();
         fu.setName(paintableId + "_file");
-        // fu.getElement().setPropertyBoolean("disabled", !enabled);
+        fu.getElement().setPropertyBoolean("disabled", !enabled);
         panel.add(fu);
         panel.add(submitButton);
         if (immediate) {
@@ -189,7 +194,7 @@ public class VUpload extends FormPanel implements Paintable,
         rebuildPanel();
 
         submitted = false;
-        enableUploaod();
+        enableUpload();
     }
 
     public void onSubmit(SubmitEvent event) {
index dfbbbfc103306589b65c5f70def776ba1dacd3ef..e3512a479539270dc21e156b72f6a5564ddaa7a2 100644 (file)
@@ -244,8 +244,6 @@ public class Upload extends AbstractComponent implements Component.Focusable {
 
         target.addAttribute("buttoncaption", buttonCaption);
 
-        target.addVariable(this, "fake", true);
-
         target.addUploadStreamVariable(this, "stream");
     }
 
diff --git a/tests/src/com/vaadin/tests/components/upload/TestUpload.java b/tests/src/com/vaadin/tests/components/upload/TestUpload.java
new file mode 100644 (file)
index 0000000..5b15901
--- /dev/null
@@ -0,0 +1,79 @@
+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.tests.components.ComponentTestCase;\r
+import com.vaadin.ui.Button;\r
+import com.vaadin.ui.CheckBox;\r
+import com.vaadin.ui.Component;\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
+\r
+public class TestUpload extends ComponentTestCase implements Receiver {\r
+\r
+    @Override\r
+    protected String getDescription() {\r
+        // TODO Auto-generated method stub\r
+        return null;\r
+    }\r
+\r
+    @Override\r
+    protected Integer getTicketNumber() {\r
+        return 3525;\r
+    }\r
+\r
+    @Override\r
+    protected void setup() {\r
+        super.setup();\r
+        Upload u;\r
+\r
+        u = new Upload("Undefined wide upload", this);\r
+        u.setSizeUndefined();\r
+        addTestComponent(u);\r
+\r
+        u.addListener(new Upload.FinishedListener() {\r
+            public void uploadFinished(FinishedEvent event) {\r
+                getMainWindow().showNotification("Done");\r
+            }\r
+        });\r
+\r
+        u = new Upload("300px wide upload", this);\r
+        u.setWidth("300px");\r
+        addTestComponent(u);\r
+\r
+        addTestComponent(new Button("blah"));\r
+\r
+    }\r
+\r
+    @Override\r
+    protected List<Component> createActions() {\r
+        List<Component> actions = new ArrayList<Component>();\r
+\r
+        CheckBox enabled = new CheckBox("Enabled", new ClickListener() {\r
+\r
+            public void buttonClick(ClickEvent event) {\r
+                for (Component c : getTestComponents()) {\r
+                    c.setEnabled(event.getButton().booleanValue());\r
+                }\r
+\r
+            }\r
+        });\r
+        enabled.setValue(true);\r
+        enabled.setImmediate(true);\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