aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--server/src/com/vaadin/ui/components/grid/Grid.java11
-rw-r--r--uitest/src/com/vaadin/tests/components/grid/GridGeneratedProperties.java16
-rw-r--r--uitest/src/com/vaadin/tests/components/grid/GridGeneratedPropertiesTest.java37
3 files changed, 52 insertions, 12 deletions
diff --git a/server/src/com/vaadin/ui/components/grid/Grid.java b/server/src/com/vaadin/ui/components/grid/Grid.java
index 03d21816b5..9170b712d0 100644
--- a/server/src/com/vaadin/ui/components/grid/Grid.java
+++ b/server/src/com/vaadin/ui/components/grid/Grid.java
@@ -26,6 +26,7 @@ import java.util.Iterator;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
+import java.util.Map.Entry;
import com.google.gwt.thirdparty.guava.common.collect.Sets;
import com.google.gwt.thirdparty.guava.common.collect.Sets.SetView;
@@ -239,6 +240,16 @@ public class Grid extends AbstractComponent implements SelectionChangeNotifier,
if (!columns.containsKey(frozenPropertyId)) {
setLastFrozenPropertyId(null);
}
+
+ // Update sortable columns
+ if (event.getContainer() instanceof Sortable) {
+ Collection<?> sortableProperties = ((Sortable) event
+ .getContainer()).getSortableContainerPropertyIds();
+ for (Entry<Object, GridColumn> columnEntry : columns.entrySet()) {
+ columnEntry.getValue().setSortable(
+ sortableProperties.contains(columnEntry.getKey()));
+ }
+ }
}
};
diff --git a/uitest/src/com/vaadin/tests/components/grid/GridGeneratedProperties.java b/uitest/src/com/vaadin/tests/components/grid/GridGeneratedProperties.java
index 6f834bddf1..48342647a3 100644
--- a/uitest/src/com/vaadin/tests/components/grid/GridGeneratedProperties.java
+++ b/uitest/src/com/vaadin/tests/components/grid/GridGeneratedProperties.java
@@ -106,6 +106,21 @@ public class GridGeneratedProperties extends AbstractTestUI {
public Class<String> getType() {
return String.class;
}
+ });
+ container.removeContainerProperty("bar");
+ container.addGeneratedProperty("baz",
+ new PropertyValueGenerator<Integer>() {
+
+ @Override
+ public Integer getValue(Item item, Object itemId,
+ Object propertyId) {
+ return (Integer) item.getItemProperty("bar").getValue();
+ }
+
+ @Override
+ public Class<Integer> getType() {
+ return Integer.class;
+ }
@Override
public SortOrder[] getSortProperties(SortOrder order) {
@@ -113,7 +128,6 @@ public class GridGeneratedProperties extends AbstractTestUI {
.toArray(new SortOrder[1]);
}
});
- container.removeContainerProperty("bar");
addComponent(filterButton);
}
diff --git a/uitest/src/com/vaadin/tests/components/grid/GridGeneratedPropertiesTest.java b/uitest/src/com/vaadin/tests/components/grid/GridGeneratedPropertiesTest.java
index 1a46736f9f..de7fa40eab 100644
--- a/uitest/src/com/vaadin/tests/components/grid/GridGeneratedPropertiesTest.java
+++ b/uitest/src/com/vaadin/tests/components/grid/GridGeneratedPropertiesTest.java
@@ -35,20 +35,35 @@ public class GridGeneratedPropertiesTest extends MultiBrowserTest {
}
@Test
- public void testSortingGeneratedPropertyColumns() {
+ public void testUnsortableGeneratedProperty() {
openTestURL();
GridElement grid = $(GridElement.class).first();
+
+ // Overwritten foo property should not be sortable
GridCellElement fooHeader = grid.getHeaderCell(0, 1);
fooHeader.click();
- assertTrue(fooHeader.getAttribute("class").contains("sort-asc"));
- fooHeader.click();
- assertTrue(fooHeader.getAttribute("class").contains("sort-desc"));
- GridCellElement kmHeader = grid.getHeaderCell(0, 2);
- kmHeader.click();
- assertTrue(kmHeader.getAttribute("class").contains("sort-asc"));
- assertFalse(fooHeader.getAttribute("class").contains("sort"));
- grid.getHeaderCell(0, 3).click();
- assertTrue(kmHeader.getAttribute("class").contains("sort-asc"));
- assertFalse(fooHeader.getAttribute("class").contains("sort"));
+ assertFalse("Column foo was unexpectedly sorted.", fooHeader
+ .getAttribute("class").contains("sort"));
+
+ // Generated property miles is not sortable
+ GridCellElement milesHeader = grid.getHeaderCell(0, 3);
+ milesHeader.click();
+ assertFalse("Column miles was unexpectedly sorted.", milesHeader
+ .getAttribute("class").contains("sort"));
+ }
+
+ @Test
+ public void testSortableGeneratedProperty() {
+ openTestURL();
+ GridElement grid = $(GridElement.class).first();
+
+ // Generated property baz is sortable
+ GridCellElement bazHeader = grid.getHeaderCell(0, 4);
+ bazHeader.click();
+ assertTrue("Column baz was not sorted ascending", bazHeader
+ .getAttribute("class").contains("sort-asc"));
+ bazHeader.click();
+ assertTrue("Column baz was not sorted descending", bazHeader
+ .getAttribute("class").contains("sort-desc"));
}
}