package com.vaadin.tests.components.absolutelayout; import com.vaadin.server.VaadinRequest; import com.vaadin.tests.components.AbstractReindeerTestUI; import com.vaadin.ui.AbsoluteLayout; import com.vaadin.ui.Button; import com.vaadin.ui.Component; import com.vaadin.ui.CssLayout; import com.vaadin.ui.Label; import com.vaadin.ui.Panel; /** * Test UI with different cases for component size changes */ public class AbsoluteLayoutResizeComponents extends AbstractReindeerTestUI { @Override protected void setup(VaadinRequest request) { AbsoluteLayout layout = new AbsoluteLayout(); addStartWithFullWidth(layout); addStartWithDefinedWidth(layout); addStartWithDefinedWidthAbsoluteLayout(layout); setContent(layout); } /** * Build test layout for #8255 */ private void addStartWithFullWidth(AbsoluteLayout layout) { final Panel full = new Panel( new CssLayout(new Label("Start Width 100%"))); full.setWidth("100%"); full.setId("expanding-panel"); layout.addComponent(full, "right:0;top:10px;"); layout.addComponent(expandButton(full), "left: 10x; top: 50px;"); } /** * Build test layout for #8256 */ private void addStartWithDefinedWidth(AbsoluteLayout layout) { final Panel small = new Panel( new CssLayout(new Label("Start Width 250px"))); small.setWidth("250px"); small.setId("small-panel"); layout.addComponent(small, "right:0;top:100px;"); layout.addComponent(expandButton(small), "left: 10x; top: 150px;"); } /** * Build test layout for #8257 */ private void addStartWithDefinedWidthAbsoluteLayout(AbsoluteLayout layout) { AbsoluteLayout layoutExpading = new AbsoluteLayout(); layoutExpading.setWidth("250px"); layoutExpading.addComponent( new Panel(new CssLayout(new Label("Start Width 250px")))); layoutExpading.setId("absolute-expanding"); layout.addComponent(layoutExpading, "right:0;top:200px;"); layout.addComponent(expandButton(layoutExpading), "left: 10x; top: 250px;"); } /** * Create size change button for component * * @param component Component to controll with button * @return Created Expand Button */ private Button expandButton(Component component) { Button button = new Button("Change Size", clickEvent -> resizeComponent(component)); button.setId(component.getId() + "-button"); return button; } private void resizeComponent(Component component) { if (component.getWidthUnits().equals(Unit.PERCENTAGE)) { component.setWidth("250px"); } else { component.setWidth("100%"); } } }