diff options
author | Tarek Oraby <42799254+tarekoraby@users.noreply.github.com> | 2020-08-26 17:31:58 +0300 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-08-26 17:31:58 +0300 |
commit | 7babdf719ca5641b8ad7ea1421c342d6cfcc427a (patch) | |
tree | 0c45986aa6d076f893312cfaec983d936e383992 | |
parent | 49f0317b72efe65fa5d585a51750172ea3dca8c7 (diff) | |
download | vaadin-framework-7babdf719ca5641b8ad7ea1421c342d6cfcc427a.tar.gz vaadin-framework-7babdf719ca5641b8ad7ea1421c342d6cfcc427a.zip |
Add API to detect if GridMultiSelect select-all checkbox is checked (#12086)
5 files changed, 106 insertions, 9 deletions
diff --git a/server/src/main/java/com/vaadin/ui/components/grid/GridMultiSelect.java b/server/src/main/java/com/vaadin/ui/components/grid/GridMultiSelect.java index 2e98230a6f..e376f72711 100644 --- a/server/src/main/java/com/vaadin/ui/components/grid/GridMultiSelect.java +++ b/server/src/main/java/com/vaadin/ui/components/grid/GridMultiSelect.java @@ -188,6 +188,20 @@ public class GridMultiSelect<T> implements MultiSelect<T> { } /** + * Returns whether all items are selected or not. + * <p> + * This is only {@code true} if user has selected all rows with the select + * all checkbox on client side, or if {@link #selectAll()} has been used + * from server side. + * + * @return {@code true} if all selected, {@code false} if not + * @since 8.12.0 + */ + public boolean isAllSelected() { + return model.isAllSelected(); + } + + /** * Checks if the user is allowed to change the selection. * <p> * The check is done only for the client side actions. It doesn't affect diff --git a/server/src/main/java/com/vaadin/ui/components/grid/MultiSelectionModel.java b/server/src/main/java/com/vaadin/ui/components/grid/MultiSelectionModel.java index 305a4fbaf9..35f948ca46 100644 --- a/server/src/main/java/com/vaadin/ui/components/grid/MultiSelectionModel.java +++ b/server/src/main/java/com/vaadin/ui/components/grid/MultiSelectionModel.java @@ -135,4 +135,16 @@ public interface MultiSelectionModel<T> * @see #setSelectAllCheckBoxVisibility(SelectAllCheckBoxVisibility) */ public boolean isSelectAllCheckBoxVisible(); + + /** + * Returns whether all items are selected or not. + * <p> + * This is only {@code true} if user has selected all rows with the select + * all checkbox on client side, or if {@link #selectAll()} has been used + * from server side. + * + * @return {@code true} if all selected, {@code false} if not + * @since 8.12.0 + */ + boolean isAllSelected(); } diff --git a/server/src/main/java/com/vaadin/ui/components/grid/MultiSelectionModelImpl.java b/server/src/main/java/com/vaadin/ui/components/grid/MultiSelectionModelImpl.java index 0ef1d1a5f7..7d8c6d7d85 100644 --- a/server/src/main/java/com/vaadin/ui/components/grid/MultiSelectionModelImpl.java +++ b/server/src/main/java/com/vaadin/ui/components/grid/MultiSelectionModelImpl.java @@ -131,15 +131,7 @@ public class MultiSelectionModelImpl<T> extends AbstractSelectionModel<T> return getState(false).selectAllCheckBoxVisible; } - /** - * Returns whether all items are selected or not. - * <p> - * This is only {@code true} if user has selected all rows with the select - * all checkbox on client side, or if {@link #selectAll()} has been used - * from server side. - * - * @return {@code true} if all selected, {@code false} if not - */ + @Override public boolean isAllSelected() { return getState(false).allSelected; } diff --git a/uitest/src/main/java/com/vaadin/tests/components/grid/GridSelectAllStatus.java b/uitest/src/main/java/com/vaadin/tests/components/grid/GridSelectAllStatus.java new file mode 100644 index 0000000000..1f9c555408 --- /dev/null +++ b/uitest/src/main/java/com/vaadin/tests/components/grid/GridSelectAllStatus.java @@ -0,0 +1,42 @@ +package com.vaadin.tests.components.grid; + +import com.vaadin.server.VaadinRequest; +import com.vaadin.tests.components.AbstractTestUI; +import com.vaadin.ui.Grid; +import com.vaadin.ui.Grid.SelectionMode; +import com.vaadin.ui.Label; + +public class GridSelectAllStatus extends AbstractTestUI { + + public Grid<String> grid; + + @Override + protected void setup(VaadinRequest request) { + grid = new Grid<>(); + grid.setSelectionMode(SelectionMode.MULTI); + grid.setItems("Item 1", "Item 2"); + grid.addColumn(item -> item); + + Label label = new Label("Select-all checkbox is checked?"); + Label selectAllStatus = new Label( + String.valueOf(grid.asMultiSelect().isAllSelected())); + selectAllStatus.setId("status"); + + grid.asMultiSelect() + .addMultiSelectionListener(e -> selectAllStatus.setValue( + String.valueOf(grid.asMultiSelect().isAllSelected()))); + + addComponents(grid, label, selectAllStatus); + } + + @Override + protected Integer getTicketNumber() { + return 12081; + } + + @Override + protected String getTestDescription() { + return "The status of the Grid's select-all checkbox should be " + + "accessible through the Java API."; + } +} diff --git a/uitest/src/test/java/com/vaadin/tests/components/grid/GridSelectAllStatusTest.java b/uitest/src/test/java/com/vaadin/tests/components/grid/GridSelectAllStatusTest.java new file mode 100644 index 0000000000..d640959e12 --- /dev/null +++ b/uitest/src/test/java/com/vaadin/tests/components/grid/GridSelectAllStatusTest.java @@ -0,0 +1,37 @@ +package com.vaadin.tests.components.grid; + +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertTrue; + +import org.junit.Test; +import org.openqa.selenium.WebElement; + +import com.vaadin.testbench.By; +import com.vaadin.testbench.elements.GridElement; +import com.vaadin.testbench.elements.LabelElement; +import com.vaadin.tests.tb3.MultiBrowserTest; + +public class GridSelectAllStatusTest extends MultiBrowserTest { + + @Test + public void checkSelectAllStatus() { + openTestURL(); + + GridElement grid = $(GridElement.class).first(); + LabelElement selectAllStatusLabel = $(LabelElement.class).id("status"); + WebElement selectAllCheckbox = grid + .findElement(By.className("v-grid-select-all-checkbox")); + + // select all + selectAllCheckbox.click(); + assertTrue( + "The status of the select-all checkbox is expected to be True.", + Boolean.parseBoolean(selectAllStatusLabel.getText())); + + // De-select all selections + selectAllCheckbox.click(); + assertFalse( + "The status of the select-all checkbox is expected to be False.", + Boolean.parseBoolean(selectAllStatusLabel.getText())); + } +} |