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();
}
}
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;
}
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) {
rebuildPanel();
submitted = false;
- enableUploaod();
+ enableUpload();
}
public void onSubmit(SubmitEvent event) {
--- /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.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