Change-Id: Ic28c8e4020eddae32a71b5c7f9da0ad61f2f7af9tags/7.4.0.beta1
@@ -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. |
@@ -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; | |||
} | |||
} |
@@ -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")); | |||
} | |||
} |