package com.vaadin.tests.components.gridlayout; import java.util.ArrayList; import java.util.List; import com.vaadin.data.util.ObjectProperty; import com.vaadin.data.util.PropertysetItem; import com.vaadin.tests.components.TestBase; import com.vaadin.ui.Button; import com.vaadin.ui.Button.ClickEvent; import com.vaadin.ui.Form; import com.vaadin.ui.GridLayout; import com.vaadin.ui.Panel; import com.vaadin.ui.VerticalLayout; public class GridLayoutInForm extends TestBase { @Override protected void setup() { final List propertyIds = new ArrayList(); for (int i = 0; i < 50; i++) { propertyIds.add("property " + i); } GridLayout gridLayout = new GridLayout(); gridLayout.setSizeUndefined(); gridLayout.setColumns(2); gridLayout.setSpacing(true); PropertysetItem item = new PropertysetItem(); for (String propertyId : propertyIds) { item.addItemProperty(propertyId, new ObjectProperty( propertyId)); } final Form form = new Form(gridLayout); form.setItemDataSource(item); form.setSizeUndefined(); VerticalLayout panelLayout = new VerticalLayout(); panelLayout.setMargin(true); Panel panel = new Panel(panelLayout); panelLayout.addComponent(form); panel.setHeight("500px"); addComponent(panel); addComponent(new Button("Use 15 first fields", new Button.ClickListener() { @Override public void buttonClick(ClickEvent event) { form.setVisibleItemProperties(propertyIds .subList(0, 15)); } })); addComponent(new Button("Use 15 last fields", new Button.ClickListener() { @Override public void buttonClick(ClickEvent event) { form.setVisibleItemProperties(propertyIds.subList(35, 50)); } })); addComponent(new Button("Use all fields", new Button.ClickListener() { @Override public void buttonClick(ClickEvent event) { form.setVisibleItemProperties(propertyIds); } })); } @Override protected String getDescription() { return "Changing the number of visible fields in a Form using a GridLayout with spacing should not cause additional empty space in the end of the GridLayout"; } @Override protected Integer getTicketNumber() { return Integer.valueOf(8855); } }