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;
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()));
+ }
+ }
}
};
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) {
.toArray(new SortOrder[1]);
}
});
- container.removeContainerProperty("bar");
addComponent(filterButton);
}
}
@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"));
}
}