summaryrefslogtreecommitdiffstats
path: root/shared/src
diff options
context:
space:
mode:
authorTeemu Suo-Anttila <teemusa@vaadin.com>2015-07-06 10:01:17 +0300
committerTeemu Suo-Anttila <teemusa@vaadin.com>2015-09-01 11:58:57 +0000
commit53a4b2c77a6af86c157884c62e6193911242a7f9 (patch)
tree033b8b64744abb3a8b63df52a748261b656247cd /shared/src
parent9899aa2009d32e375ccd21e2edf50cb6d2d557bb (diff)
downloadvaadin-framework-53a4b2c77a6af86c157884c62e6193911242a7f9.tar.gz
vaadin-framework-53a4b2c77a6af86c157884c62e6193911242a7f9.zip
Refactor Grid SelectionModels as extensions (#18624)
This patch removes all selection related variables and API from several core parts of Grid. Change-Id: Idb7aa48fda69ded1ef58a69c1f7dbc78b7f52a54
Diffstat (limited to 'shared/src')
-rw-r--r--shared/src/com/vaadin/shared/data/DataProviderRpc.java12
-rw-r--r--shared/src/com/vaadin/shared/ui/grid/GridClientRpc.java11
-rw-r--r--shared/src/com/vaadin/shared/ui/grid/GridServerRpc.java4
-rw-r--r--shared/src/com/vaadin/shared/ui/grid/GridState.java15
-rw-r--r--shared/src/com/vaadin/shared/ui/grid/selection/MultiSelectionModelServerRpc.java55
-rw-r--r--shared/src/com/vaadin/shared/ui/grid/selection/MultiSelectionModelState.java31
-rw-r--r--shared/src/com/vaadin/shared/ui/grid/selection/SingleSelectionModelServerRpc.java35
-rw-r--r--shared/src/com/vaadin/shared/ui/grid/selection/SingleSelectionModelState.java30
8 files changed, 164 insertions, 29 deletions
diff --git a/shared/src/com/vaadin/shared/data/DataProviderRpc.java b/shared/src/com/vaadin/shared/data/DataProviderRpc.java
index 28e50d9747..05965ea56c 100644
--- a/shared/src/com/vaadin/shared/data/DataProviderRpc.java
+++ b/shared/src/com/vaadin/shared/data/DataProviderRpc.java
@@ -20,7 +20,6 @@ import com.vaadin.shared.annotations.NoLayout;
import com.vaadin.shared.communication.ClientRpc;
import elemental.json.JsonArray;
-import elemental.json.JsonObject;
/**
* RPC interface used for pushing container data to the client.
@@ -94,13 +93,14 @@ public interface DataProviderRpc extends ClientRpc {
public void resetDataAndSize(int size);
/**
- * Informs the client that a row has updated. The client-side DataSource
- * will map the given data to correct index if it should be in the cache.
+ * Informs the client that rows have been updated. The client-side
+ * DataSource will map the given data to correct index if it should be in
+ * the cache.
*
* @since 7.6
- * @param row
- * the updated row data
+ * @param rowArray
+ * array of updated rows
*/
@NoLayout
- public void updateRowData(JsonObject row);
+ public void updateRowData(JsonArray rowArray);
}
diff --git a/shared/src/com/vaadin/shared/ui/grid/GridClientRpc.java b/shared/src/com/vaadin/shared/ui/grid/GridClientRpc.java
index 8711a757a1..ac1b1d5a78 100644
--- a/shared/src/com/vaadin/shared/ui/grid/GridClientRpc.java
+++ b/shared/src/com/vaadin/shared/ui/grid/GridClientRpc.java
@@ -55,15 +55,4 @@ public interface GridClientRpc extends ClientRpc {
* Command client Grid to recalculate column widths.
*/
public void recalculateColumnWidths();
-
- /**
- * Informs the Grid that all items have been selected or not selected on the
- * server side.
- *
- * @since 7.5.3
- * @param allSelected
- * <code>true</code> to check the select all checkbox,
- * <code>false</code> to uncheck it.
- */
- public void setSelectAll(boolean allSelected);
}
diff --git a/shared/src/com/vaadin/shared/ui/grid/GridServerRpc.java b/shared/src/com/vaadin/shared/ui/grid/GridServerRpc.java
index a178ff63d0..8d64794b41 100644
--- a/shared/src/com/vaadin/shared/ui/grid/GridServerRpc.java
+++ b/shared/src/com/vaadin/shared/ui/grid/GridServerRpc.java
@@ -29,10 +29,6 @@ import com.vaadin.shared.data.sort.SortDirection;
*/
public interface GridServerRpc extends ServerRpc {
- void select(List<String> newSelection);
-
- void selectAll();
-
void sort(String[] columnIds, SortDirection[] directions,
boolean userOriginated);
diff --git a/shared/src/com/vaadin/shared/ui/grid/GridState.java b/shared/src/com/vaadin/shared/ui/grid/GridState.java
index 0d0a5d3e9f..e51b1a78a7 100644
--- a/shared/src/com/vaadin/shared/ui/grid/GridState.java
+++ b/shared/src/com/vaadin/shared/ui/grid/GridState.java
@@ -129,6 +129,13 @@ public class GridState extends TabIndexState {
public static final String JSONKEY_DETAILS_VISIBLE = "dv";
/**
+ * The key that tells whether row is selected.
+ *
+ * @since
+ */
+ public static final String JSONKEY_SELECTED = "s";
+
+ /**
* Columns in grid.
*/
public List<GridColumnState> columns = new ArrayList<GridColumnState>();
@@ -153,14 +160,6 @@ public class GridState extends TabIndexState {
@DelegateToWidget
public HeightMode heightMode = HeightMode.CSS;
- // instantiated just to avoid NPEs
- public List<String> selectedKeys = new ArrayList<String>();
-
- public SharedSelectionMode selectionMode;
-
- /** Whether single select mode can be cleared through the UI */
- public boolean singleSelectDeselectAllowed = true;
-
/** Keys of the currently sorted columns */
public String[] sortColumns = new String[0];
diff --git a/shared/src/com/vaadin/shared/ui/grid/selection/MultiSelectionModelServerRpc.java b/shared/src/com/vaadin/shared/ui/grid/selection/MultiSelectionModelServerRpc.java
new file mode 100644
index 0000000000..e7324552f4
--- /dev/null
+++ b/shared/src/com/vaadin/shared/ui/grid/selection/MultiSelectionModelServerRpc.java
@@ -0,0 +1,55 @@
+/*
+ * Copyright 2000-2014 Vaadin Ltd.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
+package com.vaadin.shared.ui.grid.selection;
+
+import java.util.List;
+
+import com.vaadin.shared.communication.ServerRpc;
+
+/**
+ * ServerRpc for MultiSelectionModel.
+ *
+ * @since
+ * @author Vaadin Ltd
+ */
+public interface MultiSelectionModelServerRpc extends ServerRpc {
+
+ /**
+ * Select a list of rows based on their row keys on the server-side.
+ *
+ * @param rowKeys
+ * list of row keys to select
+ */
+ public void select(List<String> rowKeys);
+
+ /**
+ * Deselect a list of rows based on their row keys on the server-side.
+ *
+ * @param rowKeys
+ * list of row keys to deselect
+ */
+ public void deselect(List<String> rowKeys);
+
+ /**
+ * Selects all rows on the server-side.
+ */
+ public void selectAll();
+
+ /**
+ * Deselects all rows on the server-side.
+ */
+ public void deselectAll();
+}
diff --git a/shared/src/com/vaadin/shared/ui/grid/selection/MultiSelectionModelState.java b/shared/src/com/vaadin/shared/ui/grid/selection/MultiSelectionModelState.java
new file mode 100644
index 0000000000..3ffd0d0f93
--- /dev/null
+++ b/shared/src/com/vaadin/shared/ui/grid/selection/MultiSelectionModelState.java
@@ -0,0 +1,31 @@
+/*
+ * Copyright 2000-2014 Vaadin Ltd.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
+package com.vaadin.shared.ui.grid.selection;
+
+import com.vaadin.shared.communication.SharedState;
+
+/**
+ * SharedState object for MultiSelectionModel.
+ *
+ * @since
+ * @author Vaadin Ltd
+ */
+public class MultiSelectionModelState extends SharedState {
+
+ /* Select All -checkbox status */
+ public boolean allSelected;
+
+}
diff --git a/shared/src/com/vaadin/shared/ui/grid/selection/SingleSelectionModelServerRpc.java b/shared/src/com/vaadin/shared/ui/grid/selection/SingleSelectionModelServerRpc.java
new file mode 100644
index 0000000000..3e2a8ec847
--- /dev/null
+++ b/shared/src/com/vaadin/shared/ui/grid/selection/SingleSelectionModelServerRpc.java
@@ -0,0 +1,35 @@
+/*
+ * Copyright 2000-2014 Vaadin Ltd.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
+package com.vaadin.shared.ui.grid.selection;
+
+import com.vaadin.shared.communication.ServerRpc;
+
+/**
+ * ServerRpc for SingleSelectionModel.
+ *
+ * @since
+ * @author Vaadin Ltd
+ */
+public interface SingleSelectionModelServerRpc extends ServerRpc {
+
+ /**
+ * Selects a row on server-side.
+ *
+ * @param rowKey
+ * row key of selected row; {@code null} if deselect
+ */
+ public void select(String rowKey);
+}
diff --git a/shared/src/com/vaadin/shared/ui/grid/selection/SingleSelectionModelState.java b/shared/src/com/vaadin/shared/ui/grid/selection/SingleSelectionModelState.java
new file mode 100644
index 0000000000..719b60b2ba
--- /dev/null
+++ b/shared/src/com/vaadin/shared/ui/grid/selection/SingleSelectionModelState.java
@@ -0,0 +1,30 @@
+/*
+ * Copyright 2000-2014 Vaadin Ltd.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
+package com.vaadin.shared.ui.grid.selection;
+
+import com.vaadin.shared.communication.SharedState;
+
+/**
+ * SharedState object for SingleSelectionModel.
+ *
+ * @since
+ * @author Vaadin Ltd
+ */
+public class SingleSelectionModelState extends SharedState {
+
+ /* Allow deselecting rows */
+ public boolean deselectAllowed;
+}