]> source.dussan.org Git - vaadin-framework.git/blob
8a813ac6f2f6eeb0efe48b68d8c71b5bb87afa1c
[vaadin-framework.git] /
1 /*
2  * Copyright 2000-2021 Vaadin Ltd.
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License"); you may not
5  * use this file except in compliance with the License. You may obtain a copy of
6  * the License at
7  *
8  * http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
12  * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
13  * License for the specific language governing permissions and limitations under
14  * the License.
15  */
16 package com.vaadin.v7.client.connectors;
17
18 import java.util.Collection;
19
20 import com.vaadin.client.data.DataSource.RowHandle;
21 import com.vaadin.client.extensions.AbstractExtensionConnector;
22 import com.vaadin.v7.client.widget.grid.selection.SelectionModel;
23 import com.vaadin.v7.client.widgets.Grid;
24 import com.vaadin.v7.shared.ui.grid.GridState;
25
26 import elemental.json.JsonObject;
27
28 /**
29  * Base class for all selection model connectors.
30  *
31  * @since 7.6
32  * @author Vaadin Ltd
33  */
34 public abstract class AbstractSelectionModelConnector<T extends SelectionModel<JsonObject>>
35         extends AbstractExtensionConnector {
36
37     @Override
38     public GridConnector getParent() {
39         return (GridConnector) super.getParent();
40     }
41
42     protected Grid<JsonObject> getGrid() {
43         return getParent().getWidget();
44     }
45
46     protected RowHandle<JsonObject> getRowHandle(JsonObject row) {
47         return getGrid().getDataSource().getHandle(row);
48     }
49
50     protected String getRowKey(JsonObject row) {
51         return row != null ? getParent().getRowKey(row) : null;
52     }
53
54     protected abstract T createSelectionModel();
55
56     public abstract static class AbstractSelectionModel
57             implements SelectionModel<JsonObject> {
58
59         @Override
60         public boolean isSelected(JsonObject row) {
61             return row.hasKey(GridState.JSONKEY_SELECTED);
62         }
63
64         @Override
65         public void setGrid(Grid<JsonObject> grid) {
66             // NO-OP
67         }
68
69         @Override
70         public void reset() {
71             // Should not need any actions.
72         }
73
74         @Override
75         public Collection<JsonObject> getSelectedRows() {
76             throw new UnsupportedOperationException(
77                     "This client-side selection model "
78                             + getClass().getSimpleName()
79                             + " does not know selected rows.");
80         }
81     }
82 }