From 06357c0a910db38af3b7d7c371aebd38cd70844b Mon Sep 17 00:00:00 2001 From: Artur Signell Date: Tue, 18 Jun 2013 22:59:01 +0300 Subject: Ensure caption is used when child is set to required (#12077) Change-Id: Id4a9674c1b2e1c41dbba1f6fde11502400591a52 --- client/src/com/vaadin/client/VCaption.java | 6 ++ .../RequiredIndicatorForFieldsWithoutCaption.html | 109 +++++++++++++++++++++ .../RequiredIndicatorForFieldsWithoutCaption.java | 92 +++++++++++++++++ 3 files changed, 207 insertions(+) create mode 100644 uitest/src/com/vaadin/tests/components/abstractfield/RequiredIndicatorForFieldsWithoutCaption.html create mode 100644 uitest/src/com/vaadin/tests/components/abstractfield/RequiredIndicatorForFieldsWithoutCaption.java diff --git a/client/src/com/vaadin/client/VCaption.java b/client/src/com/vaadin/client/VCaption.java index d033c2b4fe..d0338de4a1 100644 --- a/client/src/com/vaadin/client/VCaption.java +++ b/client/src/com/vaadin/client/VCaption.java @@ -437,6 +437,12 @@ public class VCaption extends HTML { return true; } + if (state instanceof AbstractFieldState) { + if (((AbstractFieldState) state).required) { + return true; + } + } + return false; } diff --git a/uitest/src/com/vaadin/tests/components/abstractfield/RequiredIndicatorForFieldsWithoutCaption.html b/uitest/src/com/vaadin/tests/components/abstractfield/RequiredIndicatorForFieldsWithoutCaption.html new file mode 100644 index 0000000000..bc013f42ef --- /dev/null +++ b/uitest/src/com/vaadin/tests/components/abstractfield/RequiredIndicatorForFieldsWithoutCaption.html @@ -0,0 +1,109 @@ + + + + + + +New Test + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
New Test
open/run/com.vaadin.tests.components.abstractfield.RequiredIndicatorForFieldsWithoutCaption?debug&restartApplication
assertCSSClassvaadin=runcomvaadintestscomponentsabstractfieldRequiredIndicatorForFieldsWithoutCaption::/VVerticalLayout[0]/Slot[1]/VVerticalLayout[0]/Slot[1]/VGridLayout[0]/domChild[2]/domChild[0]/domChild[0]v-required-field-indicator
assertCSSClass//div[3]/div/div[2]/div/div/spanv-required-field-indicator
assertCSSClass//div[4]/div/div[2]/div/div/spanv-required-field-indicator
assertCSSClassvaadin=runcomvaadintestscomponentsabstractfieldRequiredIndicatorForFieldsWithoutCaption::/VVerticalLayout[0]/Slot[1]/VVerticalLayout[0]/Slot[4]/VAbsoluteLayout[0]/domChild[0]/domChild[0]/domChild[2]/domChild[0]v-required-field-indicator
assertCSSClassvaadin=runcomvaadintestscomponentsabstractfieldRequiredIndicatorForFieldsWithoutCaption::/VVerticalLayout[0]/Slot[1]/VVerticalLayout[0]/Slot[5]/VCssLayout[0]/domChild[1]/domChild[0]v-required-field-indicator
mouseClickvaadin=runcomvaadintestscomponentsabstractfieldRequiredIndicatorForFieldsWithoutCaption::/VVerticalLayout[0]/Slot[1]/VVerticalLayout[0]/Slot[0]/VCheckBox[0]/domChild[0]9,4
assertElementNotPresentvaadin=runcomvaadintestscomponentsabstractfieldRequiredIndicatorForFieldsWithoutCaption::/VVerticalLayout[0]/Slot[1]/VVerticalLayout[0]/Slot[1]/VGridLayout[0]/domChild[2]/domChild[0]/domChild[0]
assertElementNotPresent//div[3]/div/div[2]/div/div/span
assertElementNotPresent//div[4]/div/div[2]/div/div/span
assertElementNotPresentvaadin=runcomvaadintestscomponentsabstractfieldRequiredIndicatorForFieldsWithoutCaption::/VVerticalLayout[0]/Slot[1]/VVerticalLayout[0]/Slot[4]/VAbsoluteLayout[0]/domChild[0]/domChild[0]/domChild[2]/domChild[0]
assertElementNotPresentvaadin=runcomvaadintestscomponentsabstractfieldRequiredIndicatorForFieldsWithoutCaption::/VVerticalLayout[0]/Slot[1]/VVerticalLayout[0]/Slot[5]/VCssLayout[0]/domChild[1]/domChild[0]
mouseClickvaadin=runcomvaadintestscomponentsabstractfieldRequiredIndicatorForFieldsWithoutCaption::/VVerticalLayout[0]/Slot[1]/VVerticalLayout[0]/Slot[0]/VCheckBox[0]/domChild[0]9,4
assertCSSClassvaadin=runcomvaadintestscomponentsabstractfieldRequiredIndicatorForFieldsWithoutCaption::/VVerticalLayout[0]/Slot[1]/VVerticalLayout[0]/Slot[1]/VGridLayout[0]/domChild[2]/domChild[0]/domChild[0]v-required-field-indicator
assertCSSClass//div[3]/div/div[2]/div/div/spanv-required-field-indicator
assertCSSClass//div[4]/div/div[2]/div/div/spanv-required-field-indicator
assertCSSClassvaadin=runcomvaadintestscomponentsabstractfieldRequiredIndicatorForFieldsWithoutCaption::/VVerticalLayout[0]/Slot[1]/VVerticalLayout[0]/Slot[4]/VAbsoluteLayout[0]/domChild[0]/domChild[0]/domChild[2]/domChild[0]v-required-field-indicator
assertCSSClassvaadin=runcomvaadintestscomponentsabstractfieldRequiredIndicatorForFieldsWithoutCaption::/VVerticalLayout[0]/Slot[1]/VVerticalLayout[0]/Slot[5]/VCssLayout[0]/domChild[1]/domChild[0]v-required-field-indicator
+ + diff --git a/uitest/src/com/vaadin/tests/components/abstractfield/RequiredIndicatorForFieldsWithoutCaption.java b/uitest/src/com/vaadin/tests/components/abstractfield/RequiredIndicatorForFieldsWithoutCaption.java new file mode 100644 index 0000000000..56e593ce0f --- /dev/null +++ b/uitest/src/com/vaadin/tests/components/abstractfield/RequiredIndicatorForFieldsWithoutCaption.java @@ -0,0 +1,92 @@ +package com.vaadin.tests.components.abstractfield; + +import java.util.HashSet; +import java.util.Set; + +import com.vaadin.data.Property.ValueChangeEvent; +import com.vaadin.data.Property.ValueChangeListener; +import com.vaadin.server.VaadinRequest; +import com.vaadin.tests.components.AbstractTestUI; +import com.vaadin.ui.AbsoluteLayout; +import com.vaadin.ui.CheckBox; +import com.vaadin.ui.Component; +import com.vaadin.ui.ComponentContainer; +import com.vaadin.ui.CssLayout; +import com.vaadin.ui.Field; +import com.vaadin.ui.GridLayout; +import com.vaadin.ui.HorizontalLayout; +import com.vaadin.ui.Label; +import com.vaadin.ui.TextField; +import com.vaadin.ui.VerticalLayout; + +public class RequiredIndicatorForFieldsWithoutCaption extends AbstractTestUI { + private Set fields = new HashSet(); + + @Override + protected void setup(VaadinRequest request) { + + CheckBox required = new CheckBox("Fields required", true); + required.setImmediate(true); + required.addValueChangeListener(new ValueChangeListener() { + + @Override + public void valueChange(ValueChangeEvent event) { + boolean required = (Boolean) event.getProperty().getValue(); + for (Field f : fields) { + f.setRequired(required); + } + } + }); + addComponent(required); + addComponent(createWrappedTextField(new GridLayout(2, 1))); + addComponent(createWrappedTextField(new VerticalLayout())); + addComponent(createWrappedTextField(new HorizontalLayout())); + AbsoluteLayout al = new AbsoluteLayout(); + al.setWidth("400px"); + al.setHeight("100px"); + addComponent(createWrappedTextField(al)); + addComponent(createWrappedTextField(new CssLayout())); + } + + /** + * @since + * @param gridLayout + * @return + */ + private Component createWrappedTextField(ComponentContainer container) { + TextField tf = new TextField(); + tf.setRequired(true); + tf.setWidth(200, Unit.PIXELS); + fields.add(tf); + container.addComponent(new Label(container.getClass().getSimpleName())); + container.addComponent(tf); + if (container instanceof AbsoluteLayout) { + ((AbsoluteLayout) container).getPosition(tf).setLeft(100.0f, + Unit.PIXELS); + ((AbsoluteLayout) container).getPosition(tf).setTop(50.0f, + Unit.PIXELS); + } + + return container; + } + + /* + * (non-Javadoc) + * + * @see com.vaadin.tests.components.AbstractTestUI#getTestDescription() + */ + @Override + protected String getTestDescription() { + return "Test for ensuring that the required indicator is visible for fields even when they would not otherwise have a caption"; + } + + /* + * (non-Javadoc) + * + * @see com.vaadin.tests.components.AbstractTestUI#getTicketNumber() + */ + @Override + protected Integer getTicketNumber() { + return 12077; + } +} -- cgit v1.2.3