From 26b205d25230b7402e73a0202ed145373eae4bf3 Mon Sep 17 00:00:00 2001 From: Denis Anisimov Date: Sun, 5 Oct 2014 14:48:49 +0300 Subject: [PATCH] Add ".v-required" style for required component (#10201). Change-Id: I889587234acdb79e33e625f993c1918befa6aae3 --- .../vaadin/client/ApplicationConnection.java | 2 + .../client/ui/AbstractFieldConnector.java | 3 + .../textfield/RequiredTextField.java | 57 +++++++++++++++++++ .../textfield/RequiredTextFieldTest.java | 52 +++++++++++++++++ 4 files changed, 114 insertions(+) create mode 100644 uitest/src/com/vaadin/tests/components/textfield/RequiredTextField.java create mode 100644 uitest/src/com/vaadin/tests/components/textfield/RequiredTextFieldTest.java diff --git a/client/src/com/vaadin/client/ApplicationConnection.java b/client/src/com/vaadin/client/ApplicationConnection.java index 3e3ad033a7..d182706780 100644 --- a/client/src/com/vaadin/client/ApplicationConnection.java +++ b/client/src/com/vaadin/client/ApplicationConnection.java @@ -141,6 +141,8 @@ public class ApplicationConnection implements HasHandlers { public static final String DISABLED_CLASSNAME = "v-disabled"; + public static final String REQUIRED_CLASSNAME = "v-required"; + public static final String REQUIRED_CLASSNAME_EXT = "-required"; public static final String ERROR_CLASSNAME_EXT = "-error"; diff --git a/client/src/com/vaadin/client/ui/AbstractFieldConnector.java b/client/src/com/vaadin/client/ui/AbstractFieldConnector.java index a3c3779eb6..965e79b6fd 100644 --- a/client/src/com/vaadin/client/ui/AbstractFieldConnector.java +++ b/client/src/com/vaadin/client/ui/AbstractFieldConnector.java @@ -57,5 +57,8 @@ public abstract class AbstractFieldConnector extends AbstractComponentConnector // add / remove error style name to Fields setWidgetStyleNameWithPrefix(getWidget().getStylePrimaryName(), ApplicationConnection.REQUIRED_CLASSNAME_EXT, isRequired()); + + getWidget().setStyleName(ApplicationConnection.REQUIRED_CLASSNAME, + isRequired()); } } diff --git a/uitest/src/com/vaadin/tests/components/textfield/RequiredTextField.java b/uitest/src/com/vaadin/tests/components/textfield/RequiredTextField.java new file mode 100644 index 0000000000..79f5a7e83b --- /dev/null +++ b/uitest/src/com/vaadin/tests/components/textfield/RequiredTextField.java @@ -0,0 +1,57 @@ +/* + * Copyright 2000-2014 Vaadin Ltd. + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may not + * use this file except in compliance with the License. You may obtain a copy of + * the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations under + * the License. + */ +package com.vaadin.tests.components.textfield; + +import com.vaadin.server.VaadinRequest; +import com.vaadin.tests.components.AbstractTestUI; +import com.vaadin.ui.Button; +import com.vaadin.ui.Button.ClickEvent; +import com.vaadin.ui.Button.ClickListener; +import com.vaadin.ui.TextField; + +/** + * Test for required text field. + * + * @author Vaadin Ltd + */ +public class RequiredTextField extends AbstractTestUI { + + @Override + protected void setup(VaadinRequest request) { + final TextField field = new TextField(); + + addComponent(field); + + Button button = new Button("Set/unset required", new ClickListener() { + + @Override + public void buttonClick(ClickEvent event) { + field.setRequired(!field.isRequired()); + } + }); + addComponent(button); + } + + @Override + protected String getTestDescription() { + return "Add .v-required style when setRequired() is used"; + } + + @Override + protected Integer getTicketNumber() { + return 10201; + } +} diff --git a/uitest/src/com/vaadin/tests/components/textfield/RequiredTextFieldTest.java b/uitest/src/com/vaadin/tests/components/textfield/RequiredTextFieldTest.java new file mode 100644 index 0000000000..c6ed6c1a58 --- /dev/null +++ b/uitest/src/com/vaadin/tests/components/textfield/RequiredTextFieldTest.java @@ -0,0 +1,52 @@ +/* + * Copyright 2000-2014 Vaadin Ltd. + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may not + * use this file except in compliance with the License. You may obtain a copy of + * the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations under + * the License. + */ +package com.vaadin.tests.components.textfield; + +import org.junit.Assert; +import org.junit.Test; + +import com.vaadin.testbench.elements.ButtonElement; +import com.vaadin.testbench.elements.TextFieldElement; +import com.vaadin.tests.tb3.MultiBrowserTest; + +/** + * Test for .v-required style + * + * @author Vaadin Ltd + */ +public class RequiredTextFieldTest extends MultiBrowserTest { + + @Test + public void testRequiredStyleName() { + openTestURL(); + + $(ButtonElement.class).first().click(); + + Assert.assertTrue("Text field doesn't contain .v-required style", + getStyles().contains("v-required")); + + $(ButtonElement.class).first().click(); + + Assert.assertFalse( + "Text field contains .v-required style for non-required field", + getStyles().contains("v-required")); + } + + private String getStyles() { + return $(TextFieldElement.class).first().getAttribute("class"); + } + +} -- 2.39.5