diff options
author | Teemu Suo-Anttila <teemusa@vaadin.com> | 2015-05-21 08:45:20 +0300 |
---|---|---|
committer | Mika Murtojarvi <mika@vaadin.com> | 2015-05-25 15:13:45 +0300 |
commit | eb203af75ade03c3efb05c716a990b244c806f58 (patch) | |
tree | 63219ef9e88ffce8f4aeb571f7fe5f842969fd01 | |
parent | d01cea53bcfd21357aa88415b5d4d57a97ac165e (diff) | |
download | vaadin-framework-eb203af75ade03c3efb05c716a990b244c806f58.tar.gz vaadin-framework-eb203af75ade03c3efb05c716a990b244c806f58.zip |
Fix adding a column to Table and immediately changing its size (#17927)
Change-Id: I64942ce53c8d0d1cfe3fe8b9d91cf2b2f5204ebb
3 files changed, 119 insertions, 9 deletions
diff --git a/client/src/com/vaadin/client/ui/VScrollTable.java b/client/src/com/vaadin/client/ui/VScrollTable.java index 6a8ce67678..d3958a2f00 100644 --- a/client/src/com/vaadin/client/ui/VScrollTable.java +++ b/client/src/com/vaadin/client/ui/VScrollTable.java @@ -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 index 0000000000..40751047b1 --- /dev/null +++ b/uitest/src/com/vaadin/tests/components/table/TableColumnAddAndResize.java @@ -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 index 0000000000..e42f86a975 --- /dev/null +++ b/uitest/src/com/vaadin/tests/components/table/TableColumnAddAndResizeTest.java @@ -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()); + } +} |