diff options
author | Johannes Dahlström <johannesd@vaadin.com> | 2015-10-13 16:49:32 +0300 |
---|---|---|
committer | Markus Koivisto <markus@vaadin.com> | 2015-10-21 12:53:08 +0000 |
commit | 883fa51bc9cddef014b790b8fa38db8dbc3e7bec (patch) | |
tree | 9143878aca09a27816c001a8870653f1c0b8202d | |
parent | 6b41e810b5c356b9840b4659d9127a09e266c921 (diff) | |
download | vaadin-framework-883fa51bc9cddef014b790b8fa38db8dbc3e7bec.tar.gz vaadin-framework-883fa51bc9cddef014b790b8fa38db8dbc3e7bec.zip |
Set pixel sizes to Grid columns when user starts drag resize (#16838)
This makes column resizes smoother and more intuitive.
Change-Id: I6e4e92e0391d8f95f74ec89cfc3ffbbb133c7ecc
4 files changed, 40 insertions, 17 deletions
diff --git a/client/src/com/vaadin/client/widgets/Grid.java b/client/src/com/vaadin/client/widgets/Grid.java index e10da5494a..ccc909465f 100644 --- a/client/src/com/vaadin/client/widgets/Grid.java +++ b/client/src/com/vaadin/client/widgets/Grid.java @@ -5582,6 +5582,14 @@ public class Grid<T> extends ResizeComposite implements @Override public void onStart() { initialWidth = col.getWidthActual(); + + for (Column<?, T> c : getColumns()) { + if (c.getWidth() < 0) { + c.setWidth(c.getWidthActual()); + fireEvent(new ColumnResizeEvent<T>( + c)); + } + } } @Override diff --git a/server/src/com/vaadin/ui/Grid.java b/server/src/com/vaadin/ui/Grid.java index 65d7d8e2d2..e80f703c16 100644 --- a/server/src/com/vaadin/ui/Grid.java +++ b/server/src/com/vaadin/ui/Grid.java @@ -4705,6 +4705,7 @@ public class Grid extends AbstractFocusable implements SelectionNotifier, if (column != null && column.isResizable()) { column.getState().width = pixels; fireColumnResizeEvent(column, true); + markAsDirty(); } } }); diff --git a/uitest/src/com/vaadin/tests/components/grid/basicfeatures/GridBasicFeatures.java b/uitest/src/com/vaadin/tests/components/grid/basicfeatures/GridBasicFeatures.java index 2e4869cab0..94ee3ef348 100644 --- a/uitest/src/com/vaadin/tests/components/grid/basicfeatures/GridBasicFeatures.java +++ b/uitest/src/com/vaadin/tests/components/grid/basicfeatures/GridBasicFeatures.java @@ -363,10 +363,9 @@ public class GridBasicFeatures extends AbstractComponentTest<Grid> { }); grid.addColumnResizeListener(new ColumnResizeListener() { - @Override public void columnResize(ColumnResizeEvent event) { - log("ColumnResizeEvent : isUserOriginated? " + log("ColumnResizeEvent: isUserOriginated? " + event.isUserOriginated()); } }); @@ -1189,17 +1188,17 @@ public class GridBasicFeatures extends AbstractComponentTest<Grid> { }, c); } - createBooleanAction("All columns resizable", "Columns", false, + createClickAction("All columns auto width", "Columns", new Command<Grid, Boolean>() { @Override public void execute(Grid c, Boolean value, Object data) { for (Column col : grid.getColumns()) { - col.setResizable(value); + col.setWidthUndefined(); } } - }); + }, null); createBooleanAction("All columns hidable", "Columns", false, new Command<Grid, Boolean>() { diff --git a/uitest/src/com/vaadin/tests/components/grid/basicfeatures/server/GridColumnResizeTest.java b/uitest/src/com/vaadin/tests/components/grid/basicfeatures/server/GridColumnResizeTest.java index 7c62571cb1..4345cc6f07 100644 --- a/uitest/src/com/vaadin/tests/components/grid/basicfeatures/server/GridColumnResizeTest.java +++ b/uitest/src/com/vaadin/tests/components/grid/basicfeatures/server/GridColumnResizeTest.java @@ -77,6 +77,33 @@ public class GridColumnResizeTest extends GridBasicFeaturesTest { } } + @Test + public void testResizeFirstColumn() { + dragResizeColumn(0, -10); + assertTrue("Log should contain a resize event", + logContainsText("ColumnResizeEvent: isUserOriginated? true")); + } + + @Test + public void testColumnPixelSizesSetOnResize() { + selectMenuPath("Component", "Columns", "All columns auto width"); + dragResizeColumn(0, -10); + for (String msg : getLogs()) { + assertTrue("Log should contain a resize event", + msg.contains("ColumnResizeEvent: isUserOriginated? true")); + } + } + + private void dragResizeColumn(int columnIndex, int offset) { + GridCellElement headerCell = getGridElement().getHeaderCell(0, + columnIndex); + Dimension size = headerCell.getSize(); + new Actions(getDriver()) + .moveToElement(headerCell, size.getWidth() - 1, + size.getHeight() / 2).clickAndHold() + .moveByOffset(offset, 0).release().perform(); + } + private void assertResizable(int columnIndex, boolean resizable) { assertResizable(getGridElement().getHeaderCell(0, columnIndex), resizable); @@ -87,16 +114,4 @@ public class GridColumnResizeTest extends GridBasicFeaturesTest { cell.isElementPresent(By .cssSelector("div.v-grid-column-resize-handle"))); } - - @Test - public void testResizeFirstColumn() { - GridCellElement headerCell = getGridElement().getHeaderCell(0, 0); - Dimension size = headerCell.getSize(); - new Actions(getDriver()) - .moveToElement(headerCell, size.getWidth() - 1, - size.getHeight() / 2).clickAndHold() - .moveByOffset(-10, 0).release().perform(); - assertTrue("Log did not contain a resize event.", - logContainsText("ColumnResizeEvent : isUserOriginated? true")); - } } |