From 0b13b3a8ce21e0a37ae1b6857dd2f13d05f2c185 Mon Sep 17 00:00:00 2001 From: Artur Signell Date: Wed, 7 Nov 2012 12:15:27 +0200 Subject: [PATCH] Test for #10098 Change-Id: I50fd7fc998ca394bfd1139b26a19bd5bb48cc354 --- .../VerticalLayoutWithEmptyLabel.java | 214 ++++++++++++++++++ 1 file changed, 214 insertions(+) create mode 100644 uitest/src/com/vaadin/tests/components/orderedlayout/VerticalLayoutWithEmptyLabel.java diff --git a/uitest/src/com/vaadin/tests/components/orderedlayout/VerticalLayoutWithEmptyLabel.java b/uitest/src/com/vaadin/tests/components/orderedlayout/VerticalLayoutWithEmptyLabel.java new file mode 100644 index 0000000000..6f094dc150 --- /dev/null +++ b/uitest/src/com/vaadin/tests/components/orderedlayout/VerticalLayoutWithEmptyLabel.java @@ -0,0 +1,214 @@ +package com.vaadin.tests.components.orderedlayout; + +import com.vaadin.server.Sizeable; +import com.vaadin.server.VaadinRequest; +import com.vaadin.shared.ui.MarginInfo; +import com.vaadin.tests.components.AbstractTestUI; +import com.vaadin.ui.Alignment; +import com.vaadin.ui.Button; +import com.vaadin.ui.CheckBox; +import com.vaadin.ui.Component; +import com.vaadin.ui.HorizontalLayout; +import com.vaadin.ui.Label; +import com.vaadin.ui.Panel; +import com.vaadin.ui.Table; +import com.vaadin.ui.TextArea; +import com.vaadin.ui.TextField; +import com.vaadin.ui.VerticalLayout; + +public class VerticalLayoutWithEmptyLabel extends AbstractTestUI { + + private static final float UPPER_BAR_HEIGHT = 42; + + private final VerticalLayout rootLayout = new VerticalLayout(); + private final Label subtitleLabel = new Label(); + private final String rootTitle; + + private Component lowerPanel; + + public VerticalLayoutWithEmptyLabel() { + rootTitle = "Vaadin Layout Bug"; + getPage().setTitle(rootTitle); + } + + @Override + public void setup(VaadinRequest request) { + buildRootLayout(); + setContent(rootLayout); + } + + @Override + public void attach() { + super.attach(); + rebuildLowerPanel(); + } + + protected void rebuildLowerPanel() { + updateLowerPanel(null); + } + + private void updateLowerPanel(Object user) { + + // Remove previous content + if (lowerPanel != null) { + rootLayout.removeComponent(lowerPanel); + } + + // If not logged in, present login form, otherwise check user's rights + // and build lower panel + lowerPanel = new MyPanel(); + + // Update layout + rootLayout.addComponent(lowerPanel); + rootLayout.setExpandRatio(lowerPanel, 1.0f); + rootLayout.setComponentAlignment(lowerPanel, Alignment.MIDDLE_CENTER); + } + + protected Component getRootLowerPanel() { + return lowerPanel; + } + + protected void buildRootLayout() { + rootLayout.setSpacing(true); + rootLayout.setSizeFull(); + rootLayout.setMargin(new MarginInfo(false, true, true, true)); + rootLayout.addComponent(buildRootUpperBar()); + rootLayout.addComponent(buildRootSeparator()); + rebuildLowerPanel(); + } + + protected Component buildRootUpperBar() { + + // Title + Label titleLabel = new Label(rootTitle); + titleLabel.addStyleName("pexp-application-title"); + titleLabel.setSizeUndefined(); + titleLabel.setHeight(18, Sizeable.Unit.PIXELS); + subtitleLabel.setSizeUndefined(); + VerticalLayout titleLayout = new VerticalLayout(); + titleLayout.setSizeUndefined(); + titleLayout.addComponent(titleLabel); + titleLayout.setComponentAlignment(titleLabel, Alignment.BOTTOM_CENTER); + titleLayout.addComponent(subtitleLabel); + titleLayout.setComponentAlignment(subtitleLabel, + Alignment.BOTTOM_CENTER); + + // Sequence parts + HorizontalLayout layout = new HorizontalLayout(); + layout.addStyleName("pexp-main-upper-bar"); + layout.setSpacing(true); + layout.setWidth("100%"); + layout.setHeight(UPPER_BAR_HEIGHT, Sizeable.Unit.PIXELS); + layout.addComponent(titleLayout); + layout.setExpandRatio(titleLayout, 1.0f); + layout.setComponentAlignment(titleLayout, Alignment.BOTTOM_CENTER); + return layout; + } + + protected Component buildRootSeparator() { + Panel panel = new Panel(); + panel.addStyleName("pexp-separator"); + panel.setWidth("100%"); + panel.setHeight(3.0f, Sizeable.Unit.PIXELS); + return panel; + } + + class MyPanel extends VerticalLayout { + + private final Table table; + private final Label myLabel = new Label(""); + private final TextField filterPhoneField = new TextField( + "Foobar Number"); + private final TextField filterFoobarField = new TextField("Foobar ID"); + private final CheckBox incomingOnlyField = new CheckBox( + "Incoming foobar only"); + + public MyPanel() { + + // Setup layout + this.setMargin(true); + setSpacing(true); + this.setHeight("100%"); + + // Setup top layout with controls and fields + HorizontalLayout topLayout = new HorizontalLayout(); + topLayout.setSpacing(true); + + // Foobar Content + final TextArea smsContent = new TextArea("Foobar Content"); + topLayout.addComponent(smsContent); + topLayout.setExpandRatio(smsContent, 1); + smsContent.setRows(3); + smsContent.setColumns(40); + // topLayout.setWidth("100%"); + this.addComponent(topLayout); + + // Foobar phone # + final TextField smsNumber = new TextField("Foobar Phone #"); + smsNumber.setSizeUndefined(); + smsNumber.setColumns(12); + smsNumber.setMaxLength(16); + // smsNumber.setStyleName("pexp-fixed-width"); + + // Phone number and button layout + VerticalLayout buttonNumberLayout = new VerticalLayout(); + buttonNumberLayout.setSizeUndefined(); + buttonNumberLayout.setHeight("100%"); + buttonNumberLayout.addComponent(smsNumber); + buttonNumberLayout.addComponent(myLabel); + Button button = new Button("Receive Foobar"); + buttonNumberLayout.addComponent(button); + buttonNumberLayout.setExpandRatio(button, 1); + buttonNumberLayout.setComponentAlignment(button, + Alignment.BOTTOM_LEFT); + topLayout.addComponent(buttonNumberLayout); + + // Add message table + table = new Table(); + table.setWidth("100%"); + table.setHeight("100%"); + this.addComponent(table); + setExpandRatio(table, 1); + + // Message table controls + VerticalLayout tableControlsLayout = new VerticalLayout(); + tableControlsLayout.setSizeUndefined(); + tableControlsLayout.setSpacing(true); + + // Configure filter for phone # + filterPhoneField.setSizeUndefined(); + filterPhoneField.setImmediate(true); + filterPhoneField.setColumns(12); + filterPhoneField.setMaxLength(16); + // this.filterPhoneField.setStyleName("pexp-fixed-width"); + + // Configure filter for foobar ID + filterFoobarField.setSizeUndefined(); + filterFoobarField.setImmediate(true); + filterFoobarField.setColumns(16); + filterFoobarField.setMaxLength(16); + // this.filterFoobarField.setStyleName("pexp-fixed-width"); + + // Configure incoming checkbox + incomingOnlyField.setImmediate(true); + + // Add filter inputs for phone # and foobar ID + tableControlsLayout.addComponent(filterPhoneField); + tableControlsLayout.addComponent(filterFoobarField); + topLayout.addComponent(tableControlsLayout); + topLayout.addComponent(incomingOnlyField); + topLayout.setComponentAlignment(incomingOnlyField, + Alignment.BOTTOM_LEFT); + } + } + + @Override + protected String getTestDescription() { + return "foobar"; + } + + @Override + protected Integer getTicketNumber() { + return 10098; + } +} -- 2.39.5