diff options
3 files changed, 121 insertions, 0 deletions
diff --git a/client/src/com/vaadin/client/widgets/Grid.java b/client/src/com/vaadin/client/widgets/Grid.java index f0b5e59059..3c2d070fa0 100644 --- a/client/src/com/vaadin/client/widgets/Grid.java +++ b/client/src/com/vaadin/client/widgets/Grid.java @@ -6182,6 +6182,23 @@ public class Grid<T> extends ResizeComposite implements } } + @Override + public void onResize() { + super.onResize(); + /* + * Delay calculation to be deferred so Escalator can do it's magic. + */ + Scheduler.get().scheduleDeferred(new ScheduledCommand() { + + @Override + public void execute() { + if (!autoColumnWidthsRecalculator.isScheduled()) { + autoColumnWidthsRecalculator.schedule(); + } + } + }); + } + /** * Grid does not support adding Widgets this way. * <p> diff --git a/uitest/src/com/vaadin/tests/components/grid/GridWidthIncrease.java b/uitest/src/com/vaadin/tests/components/grid/GridWidthIncrease.java new file mode 100644 index 0000000000..6726400327 --- /dev/null +++ b/uitest/src/com/vaadin/tests/components/grid/GridWidthIncrease.java @@ -0,0 +1,48 @@ +/* + * 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.grid; + +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.Grid; + +public class GridWidthIncrease extends AbstractTestUI { + + public static int COLUMN_COUNT = 5; + + @Override + protected void setup(VaadinRequest request) { + final Grid grid = new Grid(); + Object[] rowData = new String[COLUMN_COUNT]; + for (int i = 0; i < COLUMN_COUNT; ++i) { + grid.addColumn("Column " + i, String.class); + rowData[i] = "Foo (0, " + i + ")"; + } + grid.addRow(rowData); + grid.setWidth(400 + "px"); + addComponent(grid); + addComponent(new Button("Increase Grid Width", + new Button.ClickListener() { + + @Override + public void buttonClick(ClickEvent event) { + grid.setWidth((grid.getWidth() + 50) + "px"); + } + })); + } +} diff --git a/uitest/src/com/vaadin/tests/components/grid/GridWidthIncreaseTest.java b/uitest/src/com/vaadin/tests/components/grid/GridWidthIncreaseTest.java new file mode 100644 index 0000000000..bf9110b01d --- /dev/null +++ b/uitest/src/com/vaadin/tests/components/grid/GridWidthIncreaseTest.java @@ -0,0 +1,56 @@ +/* + * 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.grid; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertTrue; + +import org.junit.Test; + +import com.vaadin.testbench.elements.ButtonElement; +import com.vaadin.testbench.elements.GridElement; +import com.vaadin.tests.tb3.MultiBrowserTest; + +public class GridWidthIncreaseTest extends MultiBrowserTest { + + private static int INCREASE_COUNT = 3; + + @Test + public void testColumnsExpandWithGrid() { + openTestURL(); + + GridElement grid = $(GridElement.class).first(); + + int[] widths = new int[GridWidthIncrease.COLUMN_COUNT]; + for (int i = 0; i < INCREASE_COUNT; ++i) { + int totalWidth = 0; + $(ButtonElement.class).first().click(); + for (int c = 0; c < GridWidthIncrease.COLUMN_COUNT; ++c) { + int width = grid.getCell(0, c).getSize().getWidth(); + totalWidth += width; + widths[c] = width; + if (c > 0) { + // check that columns are roughly the same width. + assertEquals("Difference in column widths", widths[c], + widths[c - 1], 1.0d); + } + } + // Column widths should be the same as table wrapper size + assertTrue(totalWidth == grid.getTableWrapper().getSize() + .getWidth()); + } + } +} |