]> source.dussan.org Git - vaadin-framework.git/commitdiff
Fix adding a column to Table and immediately changing its size (#17927)
authorTeemu Suo-Anttila <teemusa@vaadin.com>
Thu, 21 May 2015 05:45:20 +0000 (08:45 +0300)
committerHenri Sara <hesara@vaadin.com>
Thu, 21 May 2015 12:53:58 +0000 (12:53 +0000)
Change-Id: I970c771f647b7587aac3985ebeea0f0b20805fec

client/src/com/vaadin/client/ui/VScrollTable.java
uitest/src/com/vaadin/tests/components/table/TableColumnAddAndResize.java [new file with mode: 0644]
uitest/src/com/vaadin/tests/components/table/TableColumnAddAndResizeTest.java [new file with mode: 0644]

index 6a8ce67678316fe1b59ac51fa1f514e57934a824..d3958a2f0099b2febabe3a6b628f1b601d22d038 100644 (file)
@@ -3659,16 +3659,15 @@ public class VScrollTable extends FlowPanel implements HasWidgets,
                         // Do a more thorough update if a column is resized from
                         // the server *after* the header has been properly
                         // initialized
-                        final int colIx = getColIndexByKey(c.cid);
                         final int newWidth = width;
-                        Scheduler.get().scheduleDeferred(
-                                new ScheduledCommand() {
+                        Scheduler.get().scheduleFinally(new ScheduledCommand() {
 
-                                    @Override
-                                    public void execute() {
-                                        setColWidth(colIx, newWidth, true);
-                                    }
-                                });
+                            @Override
+                            public void execute() {
+                                final int colIx = getColIndexByKey(cid);
+                                setColWidth(colIx, newWidth, true);
+                            }
+                        });
                         refreshContentWidths = true;
                     } else {
                         // get min width with no indent or padding
@@ -3710,7 +3709,7 @@ public class VScrollTable extends FlowPanel implements HasWidgets,
 
             if (refreshContentWidths) {
                 // Recalculate the column sizings if any column has changed
-                Scheduler.get().scheduleDeferred(new ScheduledCommand() {
+                Scheduler.get().scheduleFinally(new ScheduledCommand() {
 
                     @Override
                     public void execute() {
diff --git a/uitest/src/com/vaadin/tests/components/table/TableColumnAddAndResize.java b/uitest/src/com/vaadin/tests/components/table/TableColumnAddAndResize.java
new file mode 100644 (file)
index 0000000..4075104
--- /dev/null
@@ -0,0 +1,70 @@
+/*
+ * Copyright 2000-2014 Vaadin Ltd.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
+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.Button.ClickEvent;
+import com.vaadin.ui.Button.ClickListener;
+import com.vaadin.ui.Table;
+import com.vaadin.ui.VerticalLayout;
+
+public class TableColumnAddAndResize extends AbstractTestUI {
+
+    @Override
+    protected void setup(VaadinRequest request) {
+        String people[][] = {
+                { "Galileo", "Liked to go around the Sun" },
+                { "Monnier", "Liked star charts" },
+                { "VÀisÀlÀ", "Liked optics" },
+                { "Oterma", "Liked comets" },
+                {
+                        "Valtaoja",
+                        "Likes cosmology and still "
+                                + "lives unlike the others above" }, };
+
+        VerticalLayout content = new VerticalLayout();
+
+        final Table table = new Table("Awesome Table");
+        table.setSizeFull();
+        table.addContainerProperty("Id1", String.class, "TestString");
+        table.addContainerProperty("Id2", String.class, "TestString2");
+
+        for (String[] p : people) {
+            table.addItem(p);
+        }
+        table.setColumnWidth("Id1", 100);
+
+        table.setColumnWidth("Id2", 100);
+
+        table.setVisibleColumns("Id1");
+        content.addComponent(table);
+        Button button = new Button("Add and Resize");
+        button.addClickListener(new ClickListener() {
+
+            @Override
+            public void buttonClick(ClickEvent event) {
+                table.setVisibleColumns("Id1", "Id2");
+                table.setColumnWidth("Id2", 200);
+
+            }
+        });
+        content.addComponent(button);
+        addComponent(content);
+
+    }
+}
diff --git a/uitest/src/com/vaadin/tests/components/table/TableColumnAddAndResizeTest.java b/uitest/src/com/vaadin/tests/components/table/TableColumnAddAndResizeTest.java
new file mode 100644 (file)
index 0000000..e42f86a
--- /dev/null
@@ -0,0 +1,41 @@
+/*
+ * Copyright 2000-2014 Vaadin Ltd.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
+package com.vaadin.tests.components.table;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+
+import org.junit.Test;
+
+import com.vaadin.testbench.elements.ButtonElement;
+import com.vaadin.testbench.elements.NotificationElement;
+import com.vaadin.testbench.elements.TableElement;
+import com.vaadin.tests.tb3.MultiBrowserTest;
+
+public class TableColumnAddAndResizeTest extends MultiBrowserTest {
+
+    @Test
+    public void testAddAndResizeColumn() {
+        setDebug(true);
+        openTestURL();
+
+        $(ButtonElement.class).caption("Add and Resize").first().click();
+        assertFalse("Error notification present.", $(NotificationElement.class)
+                .exists());
+        assertEquals("Unexpected column width. ", 200, $(TableElement.class)
+                .first().getCell(0, 1).getSize().getWidth());
+    }
+}