summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSauli Tähkäpää <sauli@vaadin.com>2015-08-29 23:00:21 +0300
committerVaadin Code Review <review@vaadin.com>2015-11-30 12:19:27 +0000
commitb021d6199acd666abc729c6c20eaf68b820d1bdb (patch)
tree10ec789491b08d3d9aeba066634f8a387a222763
parentd337dc824cfcbd8826bc96b90bef1cefc3f964c4 (diff)
downloadvaadin-framework-b021d6199acd666abc729c6c20eaf68b820d1bdb.tar.gz
vaadin-framework-b021d6199acd666abc729c6c20eaf68b820d1bdb.zip
Unify select all behavior with single row selection. (#17742)
Change-Id: I6481bf6f429046166dd0502a62b22aea51f5a0bd
-rw-r--r--client/src/com/vaadin/client/widgets/Grid.java12
-rw-r--r--uitest/src/com/vaadin/tests/components/grid/GridSelectAllCell.java21
-rw-r--r--uitest/src/com/vaadin/tests/components/grid/GridSelectAllCellTest.java34
3 files changed, 67 insertions, 0 deletions
diff --git a/client/src/com/vaadin/client/widgets/Grid.java b/client/src/com/vaadin/client/widgets/Grid.java
index 7086ff86d2..065ba411d8 100644
--- a/client/src/com/vaadin/client/widgets/Grid.java
+++ b/client/src/com/vaadin/client/widgets/Grid.java
@@ -2846,6 +2846,18 @@ public class Grid<T> extends ResizeComposite implements
});
selectAllCheckBox.setValue(selected);
+ addHeaderClickHandler(new HeaderClickHandler() {
+ @Override
+ public void onClick(GridClickEvent event) {
+ CellReference<?> targetCell = event.getTargetCell();
+ int defaultRowIndex = getHeader().getRows().indexOf(getDefaultHeaderRow());
+
+ if(targetCell.getColumnIndex() == 0 && targetCell.getRowIndex() == defaultRowIndex) {
+ selectAllCheckBox.setValue(!selectAllCheckBox.getValue(), true);
+ }
+ }
+ });
+
// Select all with space when "select all" cell is active
addHeaderKeyUpHandler(new HeaderKeyUpHandler() {
@Override
diff --git a/uitest/src/com/vaadin/tests/components/grid/GridSelectAllCell.java b/uitest/src/com/vaadin/tests/components/grid/GridSelectAllCell.java
new file mode 100644
index 0000000000..1b31c38994
--- /dev/null
+++ b/uitest/src/com/vaadin/tests/components/grid/GridSelectAllCell.java
@@ -0,0 +1,21 @@
+package com.vaadin.tests.components.grid;
+
+import com.vaadin.annotations.Theme;
+import com.vaadin.server.VaadinRequest;
+import com.vaadin.tests.components.AbstractTestUI;
+import com.vaadin.ui.Grid;
+
+@Theme("valo")
+public class GridSelectAllCell extends AbstractTestUI {
+ @Override
+ protected void setup(VaadinRequest request) {
+ Grid grid = new Grid();
+
+ grid.addColumn("foo", String.class);
+ grid.addRow("bar");
+
+ grid.setSelectionMode(Grid.SelectionMode.MULTI);
+
+ addComponent(grid);
+ }
+}
diff --git a/uitest/src/com/vaadin/tests/components/grid/GridSelectAllCellTest.java b/uitest/src/com/vaadin/tests/components/grid/GridSelectAllCellTest.java
new file mode 100644
index 0000000000..423a9f419b
--- /dev/null
+++ b/uitest/src/com/vaadin/tests/components/grid/GridSelectAllCellTest.java
@@ -0,0 +1,34 @@
+package com.vaadin.tests.components.grid;
+
+import static org.hamcrest.MatcherAssert.assertThat;
+import static org.hamcrest.core.Is.is;
+
+import java.io.IOException;
+
+import org.junit.Test;
+import org.openqa.selenium.By;
+import org.openqa.selenium.WebElement;
+import org.openqa.selenium.interactions.Actions;
+
+import com.vaadin.testbench.elements.GridElement;
+import com.vaadin.tests.tb3.MultiBrowserTest;
+
+public class GridSelectAllCellTest extends MultiBrowserTest {
+
+ @Override
+ public void setup() throws Exception {
+ super.setup();
+
+ openTestURL();
+ }
+
+ @Test
+ public void selectAllCellCanBeClicked() throws IOException {
+ GridElement.GridCellElement selectAllCell = $(GridElement.class).first().getHeaderCell(0, 0);
+
+ new Actions(getDriver()).moveToElement(selectAllCell, 2, 2).click().perform();
+
+ WebElement selectAllCheckbox = selectAllCell.findElement(By.cssSelector("input"));
+ assertThat(selectAllCheckbox.isSelected(), is(true));
+ }
+} \ No newline at end of file