aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTeemu Suo-Anttila <teemusa@vaadin.com>2015-05-21 08:45:20 +0300
committerMika Murtojarvi <mika@vaadin.com>2015-05-25 15:13:45 +0300
commiteb203af75ade03c3efb05c716a990b244c806f58 (patch)
tree63219ef9e88ffce8f4aeb571f7fe5f842969fd01
parentd01cea53bcfd21357aa88415b5d4d57a97ac165e (diff)
downloadvaadin-framework-eb203af75ade03c3efb05c716a990b244c806f58.tar.gz
vaadin-framework-eb203af75ade03c3efb05c716a990b244c806f58.zip
Fix adding a column to Table and immediately changing its size (#17927)
Change-Id: I64942ce53c8d0d1cfe3fe8b9d91cf2b2f5204ebb
-rw-r--r--client/src/com/vaadin/client/ui/VScrollTable.java17
-rw-r--r--uitest/src/com/vaadin/tests/components/table/TableColumnAddAndResize.java70
-rw-r--r--uitest/src/com/vaadin/tests/components/table/TableColumnAddAndResizeTest.java41
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());
+ }
+}