]> source.dussan.org Git - vaadin-framework.git/commitdiff
Set v-disabled on Button inside Upload when disabled. (#14655)
authorSauli Tähkäpää <sauli@vaadin.com>
Sun, 12 Oct 2014 20:42:28 +0000 (23:42 +0300)
committerAnna Koskinen <anna@vaadin.com>
Thu, 23 Oct 2014 11:37:19 +0000 (14:37 +0300)
Change-Id: Ic28c8e4020eddae32a71b5c7f9da0ad61f2f7af9

client/src/com/vaadin/client/ui/VUpload.java
uitest/src/com/vaadin/tests/components/upload/DisabledUploadButton.java [new file with mode: 0644]
uitest/src/com/vaadin/tests/components/upload/DisabledUploadButtonTest.java [new file with mode: 0644]

index f234ef6d65bd3619878ced9827851ee141b33eeb..42fb08fb3cd69ecba260fe04b5d24d7dff439a6c 100644 (file)
@@ -184,7 +184,7 @@ public class VUpload extends SimplePanel {
 
     /** For internal use only. May be removed or replaced in the future. */
     public void disableUpload() {
-        submitButton.setEnabled(false);
+        setEnabledForSubmitButton(false);
         if (!submitted) {
             // Cannot disable the fileupload while submitting or the file won't
             // be submitted at all
@@ -195,7 +195,7 @@ public class VUpload extends SimplePanel {
 
     /** For internal use only. May be removed or replaced in the future. */
     public void enableUpload() {
-        submitButton.setEnabled(true);
+        setEnabledForSubmitButton(true);
         fu.getElement().setPropertyBoolean("disabled", false);
         enabled = true;
         if (submitted) {
@@ -209,6 +209,12 @@ public class VUpload extends SimplePanel {
         }
     }
 
+    private void setEnabledForSubmitButton(boolean enabled) {
+        submitButton.setEnabled(enabled);
+        submitButton.setStyleName(ApplicationConnection.DISABLED_CLASSNAME,
+                !enabled);
+    }
+
     /**
      * Re-creates file input field and populates panel. This is needed as we
      * want to clear existing values from our current file input field.
diff --git a/uitest/src/com/vaadin/tests/components/upload/DisabledUploadButton.java b/uitest/src/com/vaadin/tests/components/upload/DisabledUploadButton.java
new file mode 100644 (file)
index 0000000..dcf2ac2
--- /dev/null
@@ -0,0 +1,41 @@
+package com.vaadin.tests.components.upload;
+
+import com.vaadin.server.VaadinRequest;
+import com.vaadin.tests.components.AbstractTestUI;
+import com.vaadin.ui.Button;
+import com.vaadin.ui.Upload;
+
+public class DisabledUploadButton extends AbstractTestUI {
+
+    @Override
+    protected void setup(VaadinRequest request) {
+        final Upload upload = new Upload();
+
+        addComponent(upload);
+
+        addButton("Set readonly", new Button.ClickListener() {
+            @Override
+            public void buttonClick(Button.ClickEvent event) {
+                upload.setReadOnly(true);
+            }
+        });
+
+        addButton("Set disabled", new Button.ClickListener() {
+            @Override
+            public void buttonClick(Button.ClickEvent event) {
+                upload.setEnabled(false);
+            }
+        });
+    }
+
+    @Override
+    public String getDescription() {
+        return "Upload button should be disabled when upload "
+                + "is set to readonly and/or disabled";
+    }
+
+    @Override
+    protected Integer getTicketNumber() {
+        return 14655;
+    }
+}
diff --git a/uitest/src/com/vaadin/tests/components/upload/DisabledUploadButtonTest.java b/uitest/src/com/vaadin/tests/components/upload/DisabledUploadButtonTest.java
new file mode 100644 (file)
index 0000000..cc97b4d
--- /dev/null
@@ -0,0 +1,55 @@
+package com.vaadin.tests.components.upload;
+
+import static org.hamcrest.CoreMatchers.containsString;
+import static org.hamcrest.CoreMatchers.not;
+import static org.junit.Assert.assertThat;
+
+import org.junit.Test;
+import org.openqa.selenium.WebElement;
+
+import com.vaadin.testbench.By;
+import com.vaadin.testbench.elements.ButtonElement;
+import com.vaadin.testbench.elements.UploadElement;
+import com.vaadin.tests.tb3.MultiBrowserTest;
+
+public class DisabledUploadButtonTest extends MultiBrowserTest {
+
+    @Override
+    public void setup() throws Exception {
+        super.setup();
+        openTestURL();
+    }
+
+    private String getUploadButtonClass() {
+        WebElement uploadButton = getUploadButton();
+
+        return uploadButton.getAttribute("class");
+    }
+
+    private void clickButton(String caption) {
+        $(ButtonElement.class).caption(caption).first().click();
+    }
+
+    private WebElement getUploadButton() {
+        UploadElement upload = $(UploadElement.class).first();
+        return upload.findElement(By.className("v-button"));
+    }
+
+    @Test
+    public void buttonIsReadonly() {
+        assertThat(getUploadButtonClass(), not(containsString("v-disabled")));
+
+        clickButton("Set readonly");
+
+        assertThat(getUploadButtonClass(), containsString("v-disabled"));
+    }
+
+    @Test
+    public void buttonIsDisabled() {
+        assertThat(getUploadButtonClass(), not(containsString("v-disabled")));
+
+        clickButton("Set disabled");
+
+        assertThat(getUploadButtonClass(), containsString("v-disabled"));
+    }
+}
\ No newline at end of file