package com.vaadin.tests.components.formlayout; import com.vaadin.server.VaadinRequest; import com.vaadin.tests.components.AbstractReindeerTestUI; import com.vaadin.ui.CheckBox; import com.vaadin.ui.FormLayout; import com.vaadin.ui.Label; public class NestedFormLayouts extends AbstractReindeerTestUI { private FormLayout outer; private FormLayout inner1; private FormLayout inner2; private FormLayout inner21; private FormLayout inner3; private FormLayout inner31; private FormLayout inner4; @Override protected void setup(VaadinRequest request) { outer = new FormLayout(); outer.setSizeUndefined(); outer.setWidth("100%"); inner1 = new FormLayout(); inner1.addComponent(new Label("Test")); inner1.addComponent(new Label("Test2")); outer.addComponent(inner1); outer.addComponent(new Label("Test")); outer.addComponent(new Label("Test2")); inner2 = new FormLayout(); inner2.addComponent(new Label("Test")); inner2.addComponent(new Label("Test2")); inner21 = new FormLayout(); inner21.addComponent(new Label("Test")); inner21.addComponent(new Label("Test2")); inner2.addComponent(inner21); outer.addComponent(inner2); inner3 = new FormLayout(); inner3.addComponent(new Label("Test")); inner3.addComponent(new Label("Test2")); // this layout never gets spacing or margin inner31 = new FormLayout(); inner31.addComponent(new Label("Test")); inner31.addComponent(new Label("Test2")); inner31.setSpacing(false); inner31.setMargin(false); inner3.addComponent(inner31); outer.addComponent(inner3); inner4 = new FormLayout(); inner4.addComponent(new Label("Test")); inner4.addComponent(new Label("Test2")); outer.addComponent(inner4); addComponent(outer); final CheckBox spacingCheckBox = new CheckBox("Spacings", false); spacingCheckBox.setId("spacings"); spacingCheckBox.addValueChangeListener( event -> setLayoutSpacing(spacingCheckBox.getValue())); addComponent(spacingCheckBox); final CheckBox marginCheckBox = new CheckBox("Margins", false); marginCheckBox.setId("margins"); marginCheckBox.addValueChangeListener( event -> setLayoutMargin(marginCheckBox.getValue())); addComponent(marginCheckBox); setLayoutSpacing(false); setLayoutMargin(false); } private void setLayoutSpacing(boolean value) { outer.setSpacing(value); inner1.setSpacing(value); inner2.setSpacing(value); inner21.setSpacing(value); inner3.setSpacing(value); inner4.setSpacing(value); } private void setLayoutMargin(boolean value) { outer.setMargin(value); inner1.setMargin(value); inner2.setMargin(value); inner21.setMargin(value); inner3.setMargin(value); inner4.setMargin(value); } @Override protected String getTestDescription() { return "Excess padding applied in FormLayouts nested as first or last rows in a FormLayout"; } @Override protected Integer getTicketNumber() { return 9427; } }