diff options
author | Sauli Tähkäpää <sauli@vaadin.com> | 2015-08-29 23:00:21 +0300 |
---|---|---|
committer | Vaadin Code Review <review@vaadin.com> | 2015-11-30 12:19:27 +0000 |
commit | b021d6199acd666abc729c6c20eaf68b820d1bdb (patch) | |
tree | 10ec789491b08d3d9aeba066634f8a387a222763 | |
parent | d337dc824cfcbd8826bc96b90bef1cefc3f964c4 (diff) | |
download | vaadin-framework-b021d6199acd666abc729c6c20eaf68b820d1bdb.tar.gz vaadin-framework-b021d6199acd666abc729c6c20eaf68b820d1bdb.zip |
Unify select all behavior with single row selection. (#17742)
Change-Id: I6481bf6f429046166dd0502a62b22aea51f5a0bd
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 |