java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/RemoteServerInstancesManagementPanel.java
... ...
@@ -3,10 +3,7 @@ package com.sap.sailing.gwt.ui.adminconsole;
3 3
import static com.sap.sse.security.ui.client.component.DefaultActionsImagesBarCell.ACTION_DELETE;
4 4
import static com.sap.sse.security.ui.client.component.DefaultActionsImagesBarCell.ACTION_UPDATE;
5 5
6
-import java.util.ArrayList;
7
-import java.util.Collections;
8 6
import java.util.HashSet;
9
-import java.util.List;
10 7
import java.util.Set;
11 8
import java.util.function.Consumer;
12 9
import java.util.function.Function;
... ...
@@ -15,9 +12,7 @@ import com.google.gwt.cell.client.SafeHtmlCell;
15 12
import com.google.gwt.event.dom.client.ClickHandler;
16 13
import com.google.gwt.safehtml.shared.SafeHtml;
17 14
import com.google.gwt.safehtml.shared.SafeHtmlBuilder;
18
-import com.google.gwt.user.cellview.client.AbstractCellTable;
19 15
import com.google.gwt.user.cellview.client.Column;
20
-import com.google.gwt.user.cellview.client.TextColumn;
21 16
import com.google.gwt.user.client.Window;
22 17
import com.google.gwt.user.client.rpc.AsyncCallback;
23 18
import com.google.gwt.user.client.ui.Button;
... ...
@@ -27,7 +22,6 @@ import com.google.gwt.user.client.ui.Label;
27 22
import com.google.gwt.user.client.ui.Panel;
28 23
import com.google.gwt.user.client.ui.SimplePanel;
29 24
import com.google.gwt.user.client.ui.VerticalPanel;
30
-import com.google.gwt.view.client.ListDataProvider;
31 25
import com.google.gwt.view.client.MultiSelectionModel;
32 26
import com.sap.sailing.gwt.ui.adminconsole.places.AdminConsoleView.Presenter;
33 27
import com.sap.sailing.gwt.ui.client.SailingServiceWriteAsync;
... ...
@@ -40,10 +34,8 @@ import com.sap.sse.gwt.client.IconResources;
40 34
import com.sap.sse.gwt.client.Notification;
41 35
import com.sap.sse.gwt.client.Notification.NotificationType;
42 36
import com.sap.sse.gwt.client.celltable.CellTableWithCheckboxResources;
43
-import com.sap.sse.gwt.client.celltable.FlushableCellTable;
44 37
import com.sap.sse.gwt.client.dialog.DataEntryDialog.DialogCallback;
45 38
import com.sap.sse.gwt.client.panels.AbstractFilterablePanel;
46
-import com.sap.sse.gwt.client.panels.LabeledAbstractFilterablePanel;
47 39
import com.sap.sse.security.shared.impl.SecuredSecurityTypes.ServerActions;
48 40
import com.sap.sse.security.ui.client.UserService;
49 41
import com.sap.sse.security.ui.client.component.DefaultActionsImagesBarCell;
... ...
@@ -54,10 +46,8 @@ public class RemoteServerInstancesManagementPanel extends SimplePanel implements
54 46
private final UserService userService;
55 47
private final ErrorReporter errorReporter;
56 48
private final StringMessages stringMessages;
57
- private FlushableCellTable<RemoteSailingServerReferenceDTO> remoteServersTable;
58
- private final ListDataProvider<RemoteSailingServerReferenceDTO> serverDataProvider;
49
+ private RemoteServerInstancesManagementTableWrapper remoteServersTable;
59 50
private MultiSelectionModel<RemoteSailingServerReferenceDTO> refreshableServerSelectionModel;
60
- private LabeledAbstractFilterablePanel<RemoteSailingServerReferenceDTO> filteredServerTablePanel;
61 51
private final CaptionPanel remoteServersPanel;
62 52
63 53
public RemoteServerInstancesManagementPanel(final Presenter presenter, StringMessages stringMessages, CellTableWithCheckboxResources tableResources) {
... ...
@@ -72,40 +62,12 @@ public class RemoteServerInstancesManagementPanel extends SimplePanel implements
72 62
mainPanel.add(remoteServersPanel);
73 63
VerticalPanel remoteServersContentPanel = new VerticalPanel();
74 64
remoteServersPanel.setContentWidget(remoteServersContentPanel);
75
- serverDataProvider = new ListDataProvider<>();
76
- filteredServerTablePanel = createFilteredServerTablePanel();
77 65
remoteServersTable = createRemoteServersTable(tableResources);
78
- serverDataProvider.addDataDisplay(remoteServersTable);
79
- remoteServersContentPanel.add(filteredServerTablePanel);
80 66
remoteServersContentPanel.add(remoteServersTable);
81 67
remoteServersContentPanel.add(createButtonToolbar());
82 68
refreshSailingServerList();
83 69
}
84 70
85
- private LabeledAbstractFilterablePanel<RemoteSailingServerReferenceDTO> createFilteredServerTablePanel() {
86
- return new LabeledAbstractFilterablePanel<RemoteSailingServerReferenceDTO>(
87
- new Label(stringMessages.filterBy() + ":"), Collections.<RemoteSailingServerReferenceDTO> emptyList(),
88
- serverDataProvider, stringMessages) {
89
- @Override
90
- public List<String> getSearchableStrings(RemoteSailingServerReferenceDTO t) {
91
- List<String> strings = new ArrayList<String>();
92
- strings.add(t.getName());
93
- strings.add(t.getUrl());
94
- if (t.getEvents() != null) {
95
- for (EventBaseDTO e : t.getEvents()) {
96
- strings.add(e.getName());
97
- }
98
- }
99
- return strings;
100
- }
101
-
102
- @Override
103
- public AbstractCellTable<RemoteSailingServerReferenceDTO> getCellTable() {
104
- return remoteServersTable;
105
- }
106
- };
107
- }
108
-
109 71
private Panel createButtonToolbar() {
110 72
HorizontalPanel buttonPanel = new HorizontalPanel();
111 73
buttonPanel.setSpacing(5);
... ...
@@ -121,27 +83,17 @@ public class RemoteServerInstancesManagementPanel extends SimplePanel implements
121 83
(ClickHandler) event -> removeSelectedSailingServers());
122 84
}
123 85
124
- private FlushableCellTable<RemoteSailingServerReferenceDTO> createRemoteServersTable(
86
+ private RemoteServerInstancesManagementTableWrapper createRemoteServersTable(
125 87
CellTableWithCheckboxResources tableResources) {
126 88
RemoteServerInstancesManagementTableWrapper wrapper = new RemoteServerInstancesManagementTableWrapper(
127
- stringMessages, errorReporter, filteredServerTablePanel.getAllListDataProvider(), tableResources);
128
- wrapper.addColumn(createTextColumn(RemoteSailingServerReferenceDTO::getName), stringMessages.name());
129
- wrapper.addColumn(createTextColumn(RemoteSailingServerReferenceDTO::getUrl), stringMessages.url());
89
+ stringMessages, errorReporter, tableResources);
90
+ wrapper.addColumn(RemoteSailingServerReferenceDTO::getName, stringMessages.name());
91
+ wrapper.addColumn(RemoteSailingServerReferenceDTO::getUrl, stringMessages.url());
130 92
wrapper.addColumn(createEventsColumn(), stringMessages.events());
131 93
wrapper.addColumn(createActionsColumn(), stringMessages.actions());
132 94
wrapper.setEmptyTableWidget(new Label(stringMessages.noSailingServerInstancesYet()));
133 95
refreshableServerSelectionModel = wrapper.getSelectionModel();
134
- return wrapper.getTable();
135
- }
136
-
137
- private TextColumn<RemoteSailingServerReferenceDTO> createTextColumn(
138
- Function<RemoteSailingServerReferenceDTO, String> getter) {
139
- return new TextColumn<RemoteSailingServerReferenceDTO>() {
140
- @Override
141
- public String getValue(RemoteSailingServerReferenceDTO server) {
142
- return getter.apply(server) != null ? getter.apply(server) : "";
143
- }
144
- };
96
+ return wrapper;
145 97
}
146 98
147 99
private Column<RemoteSailingServerReferenceDTO, SafeHtml> createEventsColumn() {
... ...
@@ -224,7 +176,7 @@ public class RemoteServerInstancesManagementPanel extends SimplePanel implements
224 176
225 177
private void refreshSailingServerList() {
226 178
sailingService.getRemoteSailingServerReferences(createCallback(stringMessages::errorRefreshingSailingServers,
227
- filteredServerTablePanel::updateAll, false));
179
+ remoteServersTable.getFilterPanel()::updateAll, false));
228 180
}
229 181
230 182
private void removeSelectedSailingServers() {
... ...
@@ -241,7 +193,7 @@ public class RemoteServerInstancesManagementPanel extends SimplePanel implements
241 193
}
242 194
243 195
private void addRemoteSailingServerReference() {
244
- new SailingServerCreateOrEditDialog(filteredServerTablePanel.getAll(), stringMessages,
196
+ new SailingServerCreateOrEditDialog(remoteServersTable.getFilterPanel().getAll(), stringMessages,
245 197
new DialogCallback<RemoteSailingServerReferenceDTO>() {
246 198
@Override
247 199
public void cancel() {
... ...
@@ -249,8 +201,9 @@ public class RemoteServerInstancesManagementPanel extends SimplePanel implements
249 201
250 202
@Override
251 203
public void ok(final RemoteSailingServerReferenceDTO server) {
252
- sailingService.addRemoteSailingServerReference(server, createCallback(
253
- stringMessages::errorAddingSailingServer, filteredServerTablePanel::add, true));
204
+ sailingService.addRemoteSailingServerReference(server,
205
+ createCallback(stringMessages::errorAddingSailingServer,
206
+ remoteServersTable.getFilterPanel()::add, true));
254 207
}
255 208
}).show();
256 209
}
... ...
@@ -275,6 +228,6 @@ public class RemoteServerInstancesManagementPanel extends SimplePanel implements
275 228
276 229
@Override
277 230
public AbstractFilterablePanel<RemoteSailingServerReferenceDTO> getFilterablePanel() {
278
- return filteredServerTablePanel;
231
+ return remoteServersTable.getFilterPanel();
279 232
}
280 233
}
java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/RemoteServerInstancesManagementTableWrapper.java
... ...
@@ -1,20 +1,23 @@
1 1
package com.sap.sailing.gwt.ui.adminconsole;
2 2
3
-import com.google.gwt.view.client.ListDataProvider;
3
+import java.util.ArrayList;
4
+import java.util.List;
5
+import java.util.Optional;
6
+
7
+import com.sap.sailing.gwt.ui.shared.EventBaseDTO;
4 8
import com.sap.sailing.gwt.ui.shared.RemoteSailingServerReferenceDTO;
5 9
import com.sap.sse.gwt.client.ErrorReporter;
6 10
import com.sap.sse.gwt.client.celltable.CellTableWithCheckboxResources;
7 11
import com.sap.sse.gwt.client.celltable.EntityIdentityComparator;
8
-import com.sap.sse.gwt.client.celltable.RefreshableMultiSelectionModel;
9
-import com.sap.sse.gwt.client.celltable.TableWrapper;
12
+import com.sap.sse.gwt.client.celltable.TableWrapperWithMultiSelectionAndFilter;
10 13
import com.sap.sse.security.ui.client.i18n.StringMessages;
11 14
12 15
public class RemoteServerInstancesManagementTableWrapper extends
13
- TableWrapper<RemoteSailingServerReferenceDTO, RefreshableMultiSelectionModel<RemoteSailingServerReferenceDTO>, StringMessages, CellTableWithCheckboxResources> {
16
+ TableWrapperWithMultiSelectionAndFilter<RemoteSailingServerReferenceDTO, StringMessages, CellTableWithCheckboxResources> {
14 17
public RemoteServerInstancesManagementTableWrapper(StringMessages stringMessages, ErrorReporter errorReporter,
15
- ListDataProvider<RemoteSailingServerReferenceDTO> dataProvider, CellTableWithCheckboxResources tableResources) {
16
- super(stringMessages, errorReporter, /* multiSelection */ true, /* pager */ true,
17
- new EntityIdentityComparator<RemoteSailingServerReferenceDTO>() {
18
+ CellTableWithCheckboxResources tableResources) {
19
+ super(stringMessages, errorReporter, /* enablePager */ true,
20
+ Optional.of(new EntityIdentityComparator<RemoteSailingServerReferenceDTO>() {
18 21
@Override
19 22
public boolean representSameEntity(RemoteSailingServerReferenceDTO dto1,
20 23
RemoteSailingServerReferenceDTO dto2) {
... ...
@@ -25,7 +28,21 @@ public class RemoteServerInstancesManagementTableWrapper extends
25 28
public int hashCode(RemoteSailingServerReferenceDTO t) {
26 29
return t.getUrl().hashCode();
27 30
}
28
- }, tableResources);
29
- registerSelectionModelOnNewDataProvider(dataProvider);
31
+ }), tableResources, /* updatePermissionFilterForCheckbox */ Optional.empty(),
32
+ /* use default filter-by text */ Optional.empty(),
33
+ /* filterCheckboxLabel */ null);
34
+ }
35
+
36
+ @Override
37
+ public List<String> getSearchableStrings(RemoteSailingServerReferenceDTO t) {
38
+ List<String> strings = new ArrayList<String>();
39
+ strings.add(t.getName());
40
+ strings.add(t.getUrl());
41
+ if (t.getEvents() != null) {
42
+ for (EventBaseDTO e : t.getEvents()) {
43
+ strings.add(e.getName());
44
+ }
45
+ }
46
+ return strings;
30 47
}
31 48
}
java/com.sap.sse.gwt/src/com/sap/sse/gwt/client/celltable/FlushableCellTable.java
... ...
@@ -6,7 +6,7 @@ import com.google.gwt.view.client.ProvidesKey;
6 6
/**
7 7
* This {@link FlushableCellTable} provides the {@link FlushableCellTable#flush()}-method for the
8 8
* {@link SelectionCheckboxColumn}. So the {@link SelectionCheckboxColumn} can ensure that the selection state is
9
- * displayed correct.
9
+ * displayed correctly.
10 10
*
11 11
* @author D064976
12 12
* @param <T>