diff options
author | Artur Signell <artur@vaadin.com> | 2015-05-18 23:40:25 +0300 |
---|---|---|
committer | Mika Murtojarvi <mika@vaadin.com> | 2015-05-28 15:26:19 +0300 |
commit | f47a183b21111bd8496806c789be77224248a059 (patch) | |
tree | 5e4357f6dbe821db14efd5090acf74701cc66b68 | |
parent | 8225f52fc1bfb8c50c7b0a5f8b1503f994ea86b6 (diff) | |
download | vaadin-framework-f47a183b21111bd8496806c789be77224248a059.tar.gz vaadin-framework-f47a183b21111bd8496806c789be77224248a059.zip |
Only sort when enter is pressed on default header (#16732)
Change-Id: I3bae7c341064f26c6be3c9b66b33239716043fec
3 files changed, 47 insertions, 3 deletions
diff --git a/client/src/com/vaadin/client/widgets/Grid.java b/client/src/com/vaadin/client/widgets/Grid.java index 5eabbec621..930c602f56 100644 --- a/client/src/com/vaadin/client/widgets/Grid.java +++ b/client/src/com/vaadin/client/widgets/Grid.java @@ -3936,9 +3936,12 @@ public class Grid<T> extends ResizeComposite implements if (event.getNativeKeyCode() != KeyCodes.KEY_ENTER) { return; } - - sorter.sort(event.getFocusedCell().getColumn(), - event.isShiftKeyDown()); + if (getHeader().getRow(event.getFocusedCell().getRowIndex()) + .isDefault()) { + // Only sort for enter on the default header + sorter.sort(event.getFocusedCell().getColumn(), + event.isShiftKeyDown()); + } } }); diff --git a/uitest/src/com/vaadin/tests/components/grid/basicfeatures/GridBasicFeaturesTest.java b/uitest/src/com/vaadin/tests/components/grid/basicfeatures/GridBasicFeaturesTest.java index 15b0af6792..04f98d1b01 100644 --- a/uitest/src/com/vaadin/tests/components/grid/basicfeatures/GridBasicFeaturesTest.java +++ b/uitest/src/com/vaadin/tests/components/grid/basicfeatures/GridBasicFeaturesTest.java @@ -15,6 +15,8 @@ */ package com.vaadin.tests.components.grid.basicfeatures; +import static org.junit.Assert.assertTrue; + import java.util.ArrayList; import java.util.List; @@ -27,6 +29,7 @@ import org.openqa.selenium.interactions.Actions; import com.vaadin.testbench.TestBenchElement; import com.vaadin.testbench.elements.GridElement; +import com.vaadin.testbench.elements.GridElement.GridCellElement; import com.vaadin.testbench.parallel.TestCategory; import com.vaadin.tests.tb3.MultiBrowserTest; @@ -129,6 +132,17 @@ public abstract class GridBasicFeaturesTest extends MultiBrowserTest { By.xpath("//div[contains(@class, \"v-grid-scroller-vertical\")]")); } + protected void assertColumnIsSorted(int index) { + WebElement columnHeader = getDefaultColumnHeader(index); + assertTrue(columnHeader.getAttribute("class").contains("sort")); + } + + protected GridCellElement getDefaultColumnHeader(int index) { + List<GridCellElement> headerRowCells = getGridElement().getHeaderCells( + 0); + return headerRowCells.get(index); + } + /** * Reloads the page without restartApplication. This occasionally breaks * stuff. diff --git a/uitest/src/com/vaadin/tests/components/grid/basicfeatures/server/GridSortingTest.java b/uitest/src/com/vaadin/tests/components/grid/basicfeatures/server/GridSortingTest.java index b06644f0c8..cff8ade054 100644 --- a/uitest/src/com/vaadin/tests/components/grid/basicfeatures/server/GridSortingTest.java +++ b/uitest/src/com/vaadin/tests/components/grid/basicfeatures/server/GridSortingTest.java @@ -213,6 +213,33 @@ public class GridSortingTest extends GridBasicFeaturesTest { } @Test + public void testKeyboardSortingMultipleHeaders() { + openTestURL(); + selectMenuPath("Component", "Header", "Append row"); + + // Sort according to first column by clicking + getGridElement().getHeaderCell(0, 0).click(); + assertColumnIsSorted(0); + + // Try to sort according to second column by pressing enter on the new + // header + sendKey(Keys.ARROW_RIGHT); + sendKey(Keys.ARROW_DOWN); + sendKey(Keys.ENTER); + + // Should not have sorted + assertColumnIsSorted(0); + + // Sort using default header + sendKey(Keys.ARROW_UP); + sendKey(Keys.ENTER); + + // Should have sorted + assertColumnIsSorted(1); + + } + + @Test public void testKeyboardSorting() { openTestURL(); |