summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTarek Oraby <42799254+tarekoraby@users.noreply.github.com>2020-08-26 17:31:58 +0300
committerGitHub <noreply@github.com>2020-08-26 17:31:58 +0300
commit7babdf719ca5641b8ad7ea1421c342d6cfcc427a (patch)
tree0c45986aa6d076f893312cfaec983d936e383992
parent49f0317b72efe65fa5d585a51750172ea3dca8c7 (diff)
downloadvaadin-framework-7babdf719ca5641b8ad7ea1421c342d6cfcc427a.tar.gz
vaadin-framework-7babdf719ca5641b8ad7ea1421c342d6cfcc427a.zip
Add API to detect if GridMultiSelect select-all checkbox is checked (#12086)
-rw-r--r--server/src/main/java/com/vaadin/ui/components/grid/GridMultiSelect.java14
-rw-r--r--server/src/main/java/com/vaadin/ui/components/grid/MultiSelectionModel.java12
-rw-r--r--server/src/main/java/com/vaadin/ui/components/grid/MultiSelectionModelImpl.java10
-rw-r--r--uitest/src/main/java/com/vaadin/tests/components/grid/GridSelectAllStatus.java42
-rw-r--r--uitest/src/test/java/com/vaadin/tests/components/grid/GridSelectAllStatusTest.java37
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()));
+ }
+}