diff options
author | Ahmed Ashour <asashour@yahoo.com> | 2017-10-23 09:05:44 +0200 |
---|---|---|
committer | Péter Török <31210544+torok-peter@users.noreply.github.com> | 2017-10-23 10:05:44 +0300 |
commit | 46d1a95f046739a8e158f4fcec4e06fbf3656a11 (patch) | |
tree | b559ab939194baf4a6569f938124c6e17b7d4918 /server | |
parent | b394dec430792e6514992f651d1f512bdf32b914 (diff) | |
download | vaadin-framework-46d1a95f046739a8e158f4fcec4e06fbf3656a11.tar.gz vaadin-framework-46d1a95f046739a8e158f4fcec4e06fbf3656a11.zip |
Grid column to be sortable when implemented/supported (Fixes #8792). (#10190)
* Grid column to be sortable when implemented/supported
* Fix GridDeclarativeTest
* Parameterize to Grid<Person>
* Revert Parameterize to Grid<Person>, JDK with generics.
* Assertions for other columns
* Fix test
Fixes #8792
Diffstat (limited to 'server')
-rw-r--r-- | server/src/main/java/com/vaadin/ui/Grid.java | 17 | ||||
-rw-r--r-- | server/src/test/java/com/vaadin/tests/server/component/grid/GridDeclarativeTest.java | 17 |
2 files changed, 31 insertions, 3 deletions
diff --git a/server/src/main/java/com/vaadin/ui/Grid.java b/server/src/main/java/com/vaadin/ui/Grid.java index 50361528a7..7282afb44c 100644 --- a/server/src/main/java/com/vaadin/ui/Grid.java +++ b/server/src/main/java/com/vaadin/ui/Grid.java @@ -1157,10 +1157,16 @@ public class Grid<T> extends AbstractListing<T> implements HasComponents, } this.userId = id; getGrid().setColumnId(id, this); + updateSortable(); return this; } + private void updateSortable() { + setSortable(getGrid().getDataProvider().isInMemory() + || getSortOrder(SortDirection.ASCENDING).count() != 0); + } + /** * Gets the function used to produce the value for data in this column * based on the row item. @@ -2711,6 +2717,8 @@ public class Grid<T> extends AbstractListing<T> implements HasComponents, if (getDefaultHeaderRow() != null) { getDefaultHeaderRow().getCell(column).setText(column.getCaption()); } + + column.updateSortable(); } /** @@ -4587,4 +4595,13 @@ public class Grid<T> extends AbstractListing<T> implements HasComponents, order -> order.getSorted().getComparator(order.getDirection())) .reduce((x, y) -> 0, operator); } + + @Override + protected void internalSetDataProvider(DataProvider<T, ?> dataProvider) { + super.internalSetDataProvider(dataProvider); + for (Column<T, ?> column : getColumns()) { + column.updateSortable(); + } + } + } diff --git a/server/src/test/java/com/vaadin/tests/server/component/grid/GridDeclarativeTest.java b/server/src/test/java/com/vaadin/tests/server/component/grid/GridDeclarativeTest.java index a4f824d6fa..93966ed01f 100644 --- a/server/src/test/java/com/vaadin/tests/server/component/grid/GridDeclarativeTest.java +++ b/server/src/test/java/com/vaadin/tests/server/component/grid/GridDeclarativeTest.java @@ -200,13 +200,18 @@ public class GridDeclarativeTest extends AbstractListingDeclarativeTest<Grid> { int expandRatio = 83; column2.setExpandRatio(expandRatio); + + String sortableSuffix = ""; + if (sortable) { + sortableSuffix = "='true'"; + } String design = String.format("<%s><table><colgroup>" - + "<col column-id='column0' sortable='%s' editable resizable='%s' hidable hidden>" + + "<col column-id='column0' sortable%s editable resizable='%s' hidable hidden>" + "<col column-id='id' sortable hiding-toggle-caption='%s' width='%s' min-width='%s' max-width='%s' expand='%s'>" + "</colgroup><thead>" + "<tr default><th plain-text column-ids='column0'>%s</th>" + "<th plain-text column-ids='id'>%s</th>" + "</tr></thead>" - + "</table></%s>", getComponentTag(), sortable, resizable, + + "</table></%s>", getComponentTag(), sortableSuffix, resizable, hidingToggleCaption, width, minWidth, maxWidth, expandRatio, caption, "Id", getComponentTag()); @@ -694,8 +699,14 @@ public class GridDeclarativeTest extends AbstractListingDeclarativeTest<Grid> { col2.getMinimumWidth()); assertEquals(baseError + "Expand ratio", col1.getExpandRatio(), col2.getExpandRatio()); - assertEquals(baseError + "Sortable", col1.isSortable(), + + String id1 = col1.getId(); + String id2 = col2.getId(); + // column.getId() affects .isSortable() + if ((id1 != null && id2 != null) || (id1 == null && id2 == null)) { + assertEquals(baseError + "Sortable", col1.isSortable(), col2.isSortable()); + } assertEquals(baseError + "Editable", col1.isEditable(), col2.isEditable()); assertEquals(baseError + "Hidable", col1.isHidable(), |