Fixes: #12153tags/7.7.23
} else if (childConnector instanceof DirectionalManagedLayout) { | } else if (childConnector instanceof DirectionalManagedLayout) { | ||||
((DirectionalManagedLayout) childConnector).layoutHorizontally(); | ((DirectionalManagedLayout) childConnector).layoutHorizontally(); | ||||
((DirectionalManagedLayout) childConnector).layoutVertically(); | ((DirectionalManagedLayout) childConnector).layoutVertically(); | ||||
} else { | |||||
getLayoutManager().setNeedsMeasureRecursively(childConnector); | |||||
} | } | ||||
} | } | ||||
package com.vaadin.tests.components.composite; | |||||
import java.util.ArrayList; | |||||
import java.util.List; | |||||
import com.vaadin.server.VaadinRequest; | |||||
import com.vaadin.tests.components.AbstractTestUI; | |||||
import com.vaadin.ui.Component; | |||||
import com.vaadin.ui.Composite; | |||||
import com.vaadin.ui.Grid; | |||||
import com.vaadin.ui.VerticalLayout; | |||||
public class CompositeVerticalLayoutGridResize extends AbstractTestUI { | |||||
@Override | |||||
protected void setup(VaadinRequest request) { | |||||
addComponent(new CompositeGrid()); | |||||
getLayout().setSizeFull(); | |||||
getLayout().getParent().setSizeFull(); | |||||
} | |||||
public class CompositeGrid extends Composite { | |||||
public CompositeGrid() { | |||||
VerticalLayout root = new VerticalLayout(); | |||||
root.setId("root"); | |||||
root.setMargin(false); | |||||
root.addComponentsAndExpand(buildGrid()); | |||||
setCompositionRoot(root); | |||||
setSizeFull(); | |||||
} | |||||
private Component buildGrid() { | |||||
List<Person> persons = new ArrayList<>(); | |||||
for (int i = 0; i < 100; i++) { | |||||
persons.add(new Person("Firstname" + i, "Lastname" + i)); | |||||
} | |||||
Grid<Person> grid = new Grid<Person>(Person.class); | |||||
grid.setItems(persons); | |||||
grid.setSizeFull(); | |||||
return grid; | |||||
} | |||||
} | |||||
public class Person { | |||||
private String firstName, lastName; | |||||
public Person(String firstName, String lastName) { | |||||
this.firstName = firstName; | |||||
this.lastName = lastName; | |||||
} | |||||
public String getLastName() { | |||||
return lastName; | |||||
} | |||||
public void setLastName(String lastName) { | |||||
this.lastName = lastName; | |||||
} | |||||
public String getFirstName() { | |||||
return firstName; | |||||
} | |||||
public void setFirstName(String firstName) { | |||||
this.firstName = firstName; | |||||
} | |||||
} | |||||
@Override | |||||
protected String getTestDescription() { | |||||
return "Composite contents should resize without a delay when the" | |||||
+ " browser is resized, not only when interacted with."; | |||||
} | |||||
@Override | |||||
protected Integer getTicketNumber() { | |||||
return 12153; | |||||
} | |||||
} |
package com.vaadin.tests.components.composite; | |||||
import com.vaadin.server.VaadinRequest; | |||||
import com.vaadin.tests.components.AbstractTestUI; | |||||
import com.vaadin.ui.Composite; | |||||
import com.vaadin.ui.HorizontalSplitPanel; | |||||
import com.vaadin.ui.VerticalLayout; | |||||
import com.vaadin.ui.VerticalSplitPanel; | |||||
public class CompositeVerticalLayoutSplitPanelResize extends AbstractTestUI { | |||||
@Override | |||||
protected void setup(VaadinRequest request) { | |||||
addComponent(new CompositeVSP()); | |||||
getLayout().setSizeFull(); | |||||
getLayout().getParent().setSizeFull(); | |||||
} | |||||
public class CompositeVSP extends Composite { | |||||
public CompositeVSP() { | |||||
VerticalSplitPanel verticalSplitPanel = new VerticalSplitPanel(); | |||||
verticalSplitPanel.setSecondComponent(new CompositeHSP()); | |||||
VerticalLayout root = new VerticalLayout(); | |||||
root.setId("root"); | |||||
root.setMargin(false); | |||||
root.addComponent(verticalSplitPanel); | |||||
setCompositionRoot(root); | |||||
setSizeFull(); | |||||
} | |||||
} | |||||
public class CompositeHSP extends Composite { | |||||
public CompositeHSP() { | |||||
HorizontalSplitPanel horizontalSplitPanel = new HorizontalSplitPanel(); | |||||
VerticalLayout root = new VerticalLayout(); | |||||
root.setSizeFull(); | |||||
root.setMargin(false); | |||||
root.addComponent(horizontalSplitPanel); | |||||
setCompositionRoot(root); | |||||
setSizeFull(); | |||||
} | |||||
} | |||||
@Override | |||||
protected String getTestDescription() { | |||||
return "Composite contents should resize without a delay when the" | |||||
+ " browser is resized, not only when interacted with."; | |||||
} | |||||
@Override | |||||
protected Integer getTicketNumber() { | |||||
return 12153; | |||||
} | |||||
} |
package com.vaadin.tests.components.composite; | |||||
import org.junit.Test; | |||||
import org.openqa.selenium.By; | |||||
import org.openqa.selenium.Dimension; | |||||
import org.openqa.selenium.WebElement; | |||||
import com.vaadin.testbench.elements.GridElement; | |||||
import com.vaadin.testbench.elements.GridElement.GridCellElement; | |||||
import com.vaadin.tests.tb3.MultiBrowserTest; | |||||
public class CompositeVerticalLayoutGridResizeTest extends MultiBrowserTest { | |||||
@Test | |||||
public void testResize() { | |||||
getDriver().manage().window().setSize(new Dimension(600, 400)); | |||||
openTestURL(); | |||||
WebElement root = findElement(By.id("root")); | |||||
Dimension oldRootSize = root.getSize(); | |||||
GridElement grid = $(GridElement.class).first(); | |||||
// inner level element that is expected to resize | |||||
GridCellElement content = grid.getHeaderCell(0, 0); | |||||
Dimension oldContentSize = content.getSize(); | |||||
// resize | |||||
getDriver().manage().window().setSize(new Dimension(500, 500)); | |||||
waitUntilLoadingIndicatorNotVisible(); | |||||
Dimension newRootSize = root.getSize(); | |||||
Dimension newContentSize = content.getSize(); | |||||
assertGreater("Unexpected vertical root size.", newRootSize.getHeight(), | |||||
oldRootSize.getHeight()); | |||||
assertGreater("Unexpected horizontal root size.", | |||||
oldRootSize.getWidth(), newRootSize.getWidth()); | |||||
// header height is not expected to change, only test width | |||||
assertGreater("Unexpected horizontal content size.", | |||||
oldContentSize.getWidth(), newContentSize.getWidth()); | |||||
} | |||||
} |
package com.vaadin.tests.components.composite; | |||||
import org.junit.Test; | |||||
import org.openqa.selenium.By; | |||||
import org.openqa.selenium.Dimension; | |||||
import org.openqa.selenium.WebElement; | |||||
import com.vaadin.testbench.elements.HorizontalSplitPanelElement; | |||||
import com.vaadin.tests.tb3.MultiBrowserTest; | |||||
public class CompositeVerticalLayoutSplitPanelResizeTest | |||||
extends MultiBrowserTest { | |||||
@Test | |||||
public void testResize() { | |||||
getDriver().manage().window().setSize(new Dimension(600, 400)); | |||||
openTestURL(); | |||||
WebElement root = findElement(By.id("root")); | |||||
Dimension oldRootSize = root.getSize(); | |||||
// inner level element that is expected to resize | |||||
HorizontalSplitPanelElement content = $( | |||||
HorizontalSplitPanelElement.class).first(); | |||||
Dimension oldContentSize = content.getSize(); | |||||
// resize | |||||
getDriver().manage().window().setSize(new Dimension(500, 500)); | |||||
waitUntilLoadingIndicatorNotVisible(); | |||||
Dimension newRootSize = root.getSize(); | |||||
Dimension newContentSize = content.getSize(); | |||||
assertGreater("Unexpected vertical root size.", newRootSize.getHeight(), | |||||
oldRootSize.getHeight()); | |||||
assertGreater("Unexpected horizontal root size.", | |||||
oldRootSize.getWidth(), newRootSize.getWidth()); | |||||
assertGreater("Unexpected vertical content size.", | |||||
newContentSize.getHeight(), oldContentSize.getHeight()); | |||||
assertGreater("Unexpected horizontal content size.", | |||||
oldContentSize.getWidth(), newContentSize.getWidth()); | |||||
} | |||||
} |