diff options
author | Teemu Suo-Anttila <tsuoanttila@users.noreply.github.com> | 2017-08-09 11:27:14 +0300 |
---|---|---|
committer | Henri Sara <henri.sara@gmail.com> | 2017-08-09 11:27:14 +0300 |
commit | 69fb1c9895298da6f45cc00763515944aeb9c22d (patch) | |
tree | b2f6e25aaf411d50dc1d1f02ca9f7cebd53f668d | |
parent | 40547e6914cd62ba6a718c00a2117451bf25c36d (diff) | |
download | vaadin-framework-69fb1c9895298da6f45cc00763515944aeb9c22d.tar.gz vaadin-framework-69fb1c9895298da6f45cc00763515944aeb9c22d.zip |
Implement SimpleManagedLayout for CompositeConnector (#9791)
Fixes #9788
3 files changed, 84 insertions, 4 deletions
diff --git a/client/src/main/java/com/vaadin/client/ui/composite/CompositeConnector.java b/client/src/main/java/com/vaadin/client/ui/composite/CompositeConnector.java index 916363cf23..3322063d51 100644 --- a/client/src/main/java/com/vaadin/client/ui/composite/CompositeConnector.java +++ b/client/src/main/java/com/vaadin/client/ui/composite/CompositeConnector.java @@ -20,8 +20,10 @@ import com.google.gwt.user.client.ui.Label; import com.google.gwt.user.client.ui.Widget; import com.vaadin.client.ComponentConnector; import com.vaadin.client.ConnectorHierarchyChangeEvent; +import com.vaadin.client.DirectionalManagedLayout; import com.vaadin.client.HasComponentsConnector; import com.vaadin.client.ui.AbstractHasComponentsConnector; +import com.vaadin.client.ui.SimpleManagedLayout; import com.vaadin.shared.AbstractComponentState; import com.vaadin.shared.MouseEventDetails; import com.vaadin.shared.ui.Connect; @@ -35,7 +37,8 @@ import com.vaadin.ui.Composite; * @since 8.1 */ @Connect(value = Composite.class, loadStyle = LoadStyle.EAGER) -public class CompositeConnector extends AbstractHasComponentsConnector { +public class CompositeConnector extends AbstractHasComponentsConnector + implements SimpleManagedLayout { private ComponentConnector childConnector; @@ -97,8 +100,20 @@ public class CompositeConnector extends AbstractHasComponentsConnector { } @Override - protected void sendContextClickEvent(MouseEventDetails details, EventTarget eventTarget) { - //Do nothing, because Composite is not an actual component, and the event - //must be handled in inner components. + protected void sendContextClickEvent(MouseEventDetails details, + EventTarget eventTarget) { + // Do nothing, because Composite is not an actual component, and the + // event must be handled in inner components. + } + + @Override + public void layout() { + // Pass on the layout to the appropriate method in child connector + if (childConnector instanceof SimpleManagedLayout) { + ((SimpleManagedLayout) childConnector).layout(); + } else if (childConnector instanceof DirectionalManagedLayout) { + ((DirectionalManagedLayout) childConnector).layoutHorizontally(); + ((DirectionalManagedLayout) childConnector).layoutVertically(); + } } } diff --git a/uitest/src/main/java/com/vaadin/tests/components/tree/TreeOnBrowserResize.java b/uitest/src/main/java/com/vaadin/tests/components/tree/TreeOnBrowserResize.java new file mode 100644 index 0000000000..aa55336d13 --- /dev/null +++ b/uitest/src/main/java/com/vaadin/tests/components/tree/TreeOnBrowserResize.java @@ -0,0 +1,24 @@ +package com.vaadin.tests.components.tree; + +import com.vaadin.annotations.Widgetset; +import com.vaadin.server.VaadinRequest; +import com.vaadin.tests.components.AbstractTestUI; +import com.vaadin.ui.Tree; + +@Widgetset("com.vaadin.DefaultWidgetSet") +public class TreeOnBrowserResize extends AbstractTestUI { + + @Override + protected void setup(VaadinRequest request) { + Tree<String> tree = new Tree<>(); + tree.setItems( + "Lorem ipsum dolor sit amet, consectetur adipiscing elit. " + + "Ut a ante congue, dictum elit vitae, mollis justo. " + + "Nunc porttitor, eros et eleifend accumsan, quam dolor venenatis tortor, " + + "in euismod lorem massa quis nisi. In pretium viverra tincidunt. "); + + tree.setSizeFull(); + addComponent(tree); + } + +} diff --git a/uitest/src/test/java/com/vaadin/tests/components/tree/TreeOnBrowserResizeTest.java b/uitest/src/test/java/com/vaadin/tests/components/tree/TreeOnBrowserResizeTest.java new file mode 100644 index 0000000000..153f389850 --- /dev/null +++ b/uitest/src/test/java/com/vaadin/tests/components/tree/TreeOnBrowserResizeTest.java @@ -0,0 +1,41 @@ +package com.vaadin.tests.components.tree; + +import org.junit.Assert; +import org.junit.Test; +import org.openqa.selenium.Dimension; + +import com.vaadin.testbench.elements.TreeGridElement; +import com.vaadin.tests.tb3.MultiBrowserTest; + +public class TreeOnBrowserResizeTest extends MultiBrowserTest { + + @Test + public void testTreeSizeOnBrowserShrink() { + openTestURL(); + + int originalWidth = $(TreeGridElement.class).first().getTableWrapper() + .getSize().getWidth(); + + getDriver().manage().window().setSize(new Dimension(600, 800)); + + Assert.assertTrue("Tree size should decrease.", + originalWidth > $(TreeGridElement.class).first() + .getTableWrapper().getSize().getWidth()); + } + + @Test + public void testTreeSizeOnBrowserEnlarge() { + getDriver().manage().window().setSize(new Dimension(600, 800)); + openTestURL(); + + int originalWidth = $(TreeGridElement.class).first().getTableWrapper() + .getSize().getWidth(); + + getDriver().manage().window().setSize(new Dimension(800, 800)); + + Assert.assertTrue("Tree size should increase.", + originalWidth < $(TreeGridElement.class).first() + .getTableWrapper().getSize().getWidth()); + } + +} |