summaryrefslogtreecommitdiffstats
path: root/server
diff options
context:
space:
mode:
authorAhmed Ashour <asashour@yahoo.com>2017-10-23 09:05:44 +0200
committerPéter Török <31210544+torok-peter@users.noreply.github.com>2017-10-23 10:05:44 +0300
commit46d1a95f046739a8e158f4fcec4e06fbf3656a11 (patch)
treeb559ab939194baf4a6569f938124c6e17b7d4918 /server
parentb394dec430792e6514992f651d1f512bdf32b914 (diff)
downloadvaadin-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.java17
-rw-r--r--server/src/test/java/com/vaadin/tests/server/component/grid/GridDeclarativeTest.java17
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(),