aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorArtur Signell <artur@vaadin.com>2015-05-18 23:40:25 +0300
committerMika Murtojarvi <mika@vaadin.com>2015-05-28 15:26:19 +0300
commitf47a183b21111bd8496806c789be77224248a059 (patch)
tree5e4357f6dbe821db14efd5090acf74701cc66b68
parent8225f52fc1bfb8c50c7b0a5f8b1503f994ea86b6 (diff)
downloadvaadin-framework-f47a183b21111bd8496806c789be77224248a059.tar.gz
vaadin-framework-f47a183b21111bd8496806c789be77224248a059.zip
Only sort when enter is pressed on default header (#16732)
Change-Id: I3bae7c341064f26c6be3c9b66b33239716043fec
-rw-r--r--client/src/com/vaadin/client/widgets/Grid.java9
-rw-r--r--uitest/src/com/vaadin/tests/components/grid/basicfeatures/GridBasicFeaturesTest.java14
-rw-r--r--uitest/src/com/vaadin/tests/components/grid/basicfeatures/server/GridSortingTest.java27
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();