/** 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
/** 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) {
}
}
+ 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.
--- /dev/null
+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;
+ }
+}
--- /dev/null
+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