]> source.dussan.org Git - vaadin-framework.git/commitdiff
Updating table size if set to undefined (#15384)
authorAlexey Fansky <alexey.fansky@effective-soft.com>
Fri, 9 Jan 2015 20:06:00 +0000 (12:06 -0800)
committerVaadin Code Review <review@vaadin.com>
Thu, 15 Jan 2015 14:55:11 +0000 (14:55 +0000)
Change-Id: Ie21f1078cd25b859c5a3dcc4ca6db3d048bbdf42

client/src/com/vaadin/client/ui/table/TableConnector.java
uitest/src/com/vaadin/tests/components/table/TableSetUndefinedSize.java [new file with mode: 0644]
uitest/src/com/vaadin/tests/components/table/TableSetUndefinedSizeTest.java [new file with mode: 0644]

index 7fb4bc108ab48ec830d3b054747df70be3fb0b61..9f1f99bae35b3c75204a76faf0c62cc9ac831d3b 100644 (file)
@@ -425,4 +425,15 @@ public class TableConnector extends AbstractHasComponentsConnector implements
         // TODO Move code from updateFromUIDL to this method
     }
 
+    @Override
+    protected void updateComponentSize(String newWidth, String newHeight) {
+        super.updateComponentSize(newWidth, newHeight);
+
+        if("".equals(newWidth)) {
+            getWidget().updateWidth();
+        }
+        if("".equals(newHeight)) {
+            getWidget().updateHeight();
+        }
+    }
 }
diff --git a/uitest/src/com/vaadin/tests/components/table/TableSetUndefinedSize.java b/uitest/src/com/vaadin/tests/components/table/TableSetUndefinedSize.java
new file mode 100644 (file)
index 0000000..3b5ee87
--- /dev/null
@@ -0,0 +1,115 @@
+package com.vaadin.tests.components.table;
+
+import com.vaadin.server.VaadinRequest;
+import com.vaadin.tests.components.AbstractTestUI;
+import com.vaadin.ui.Button;
+import com.vaadin.ui.HorizontalLayout;
+import com.vaadin.ui.Table;
+
+public class TableSetUndefinedSize extends AbstractTestUI {
+    @Override
+    protected void setup(VaadinRequest request) {
+        getLayout().setSizeFull();
+
+        Table table = createTable();
+        table.setSizeFull();
+        addComponent(table);
+
+        HorizontalLayout widthButtons = createWidthButtons(table);
+        addComponent(widthButtons);
+
+        HorizontalLayout heightButtons = createHeigthButtons(table);
+        addComponent(heightButtons);
+
+        addComponent(createSizeUndefinedButton(table));
+    }
+
+    private Button createSizeUndefinedButton(final Table table) {
+        return new Button("size undefined", new Button.ClickListener() {
+            @Override
+            public void buttonClick(Button.ClickEvent event) {
+                table.setSizeUndefined();
+            }
+        });
+    }
+
+    private HorizontalLayout createWidthButtons(final Table table) {
+        HorizontalLayout layout = new HorizontalLayout();
+
+        layout.addComponent(new Button("width 500px", new Button.ClickListener() {
+            @Override
+            public void buttonClick(Button.ClickEvent event) {
+                table.setWidth("500px");
+            }
+        }));
+        layout.addComponent(new Button("width 100%", new Button.ClickListener() {
+            @Override
+            public void buttonClick(Button.ClickEvent event) {
+                table.setWidth("100%");
+            }
+        }));
+        layout.addComponent(new Button("undefined width", new Button.ClickListener() {
+            @Override
+            public void buttonClick(Button.ClickEvent event) {
+                table.setWidthUndefined();
+            }
+        }));
+
+        return layout;
+    }
+
+    private HorizontalLayout createHeigthButtons(final Table table) {
+        HorizontalLayout layout = new HorizontalLayout();
+
+        layout.addComponent(new Button("height 200px", new Button.ClickListener() {
+            @Override
+            public void buttonClick(Button.ClickEvent event) {
+                table.setHeight("200px");
+            }
+        }));
+        layout.addComponent(new Button("height 300px", new Button.ClickListener() {
+            @Override
+            public void buttonClick(Button.ClickEvent event) {
+                table.setHeight("300px");
+            }
+        }));
+        layout.addComponent(new Button("height 100%", new Button.ClickListener() {
+            @Override
+            public void buttonClick(Button.ClickEvent event) {
+                table.setHeight("100%");
+            }
+        }));
+        layout.addComponent(new Button("undefined height", new Button.ClickListener() {
+            @Override
+            public void buttonClick(Button.ClickEvent event) {
+                table.setHeightUndefined();
+            }
+        }));
+
+        return layout;
+    }
+
+    private Table createTable() {
+        Table table = new Table("");
+
+        table.addContainerProperty("column 1", String.class, "column 1 value");
+        table.addContainerProperty("column 2", String.class, "column 2 value");
+        table.addContainerProperty("column 3", String.class, "column 3 value");
+
+        for(int i=0; i<5; i++) {
+            table.addItem();
+        }
+
+        return table;
+    }
+
+    @Override
+    public String getDescription() {
+        return "Table width and height changing to undefined doesn't update table size";
+    }
+
+    @Override
+    protected Integer getTicketNumber() {
+        return 15384;
+    }
+}
diff --git a/uitest/src/com/vaadin/tests/components/table/TableSetUndefinedSizeTest.java b/uitest/src/com/vaadin/tests/components/table/TableSetUndefinedSizeTest.java
new file mode 100644 (file)
index 0000000..1745c58
--- /dev/null
@@ -0,0 +1,37 @@
+package com.vaadin.tests.components.table;
+
+import org.junit.Test;
+import org.openqa.selenium.WebDriver;
+import org.openqa.selenium.support.ui.ExpectedCondition;
+
+import com.vaadin.testbench.elements.ButtonElement;
+import com.vaadin.testbench.elements.TableElement;
+import com.vaadin.tests.tb3.MultiBrowserTest;
+
+public class TableSetUndefinedSizeTest extends MultiBrowserTest {
+    @Test
+    public void testTableShouldChangeSizeIfWidthSetToUndefined() {
+        openTestURL();
+
+        $(ButtonElement.class).caption("width 500px").first().click();
+
+        final TableElement table = $(TableElement.class).first();
+        final int previousWidth = table.getSize().getWidth();
+
+        $(ButtonElement.class).caption("undefined width").first().click();
+
+        waitUntil(new ExpectedCondition<Boolean>() {
+
+            @Override
+            public Boolean apply(WebDriver input) {
+                return previousWidth != table.getSize().getWidth();
+            }
+
+            @Override
+            public String toString() {
+                // Timed out after 10 seconds waiting for ...
+                return "table to change size (was: " + previousWidth + ")";
+            }
+        });
+    }
+}