java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/RemoteServerInstancesManagementPanel.java
... ...
@@ -3,11 +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
-import java.util.Comparator;
9 6
import java.util.HashSet;
10
-import java.util.List;
11 7
import java.util.Set;
12 8
import java.util.function.Consumer;
13 9
import java.util.function.Function;
... ...
@@ -16,10 +12,7 @@ import com.google.gwt.cell.client.SafeHtmlCell;
16 12
import com.google.gwt.event.dom.client.ClickHandler;
17 13
import com.google.gwt.safehtml.shared.SafeHtml;
18 14
import com.google.gwt.safehtml.shared.SafeHtmlBuilder;
19
-import com.google.gwt.user.cellview.client.AbstractCellTable;
20 15
import com.google.gwt.user.cellview.client.Column;
21
-import com.google.gwt.user.cellview.client.ColumnSortEvent.ListHandler;
22
-import com.google.gwt.user.cellview.client.TextColumn;
23 16
import com.google.gwt.user.client.Window;
24 17
import com.google.gwt.user.client.rpc.AsyncCallback;
25 18
import com.google.gwt.user.client.ui.Button;
... ...
@@ -29,7 +22,6 @@ import com.google.gwt.user.client.ui.Label;
29 22
import com.google.gwt.user.client.ui.Panel;
30 23
import com.google.gwt.user.client.ui.SimplePanel;
31 24
import com.google.gwt.user.client.ui.VerticalPanel;
32
-import com.google.gwt.view.client.ListDataProvider;
33 25
import com.google.gwt.view.client.MultiSelectionModel;
34 26
import com.sap.sailing.gwt.ui.adminconsole.places.AdminConsoleView.Presenter;
35 27
import com.sap.sailing.gwt.ui.client.SailingServiceWriteAsync;
... ...
@@ -42,10 +34,8 @@ import com.sap.sse.gwt.client.IconResources;
42 34
import com.sap.sse.gwt.client.Notification;
43 35
import com.sap.sse.gwt.client.Notification.NotificationType;
44 36
import com.sap.sse.gwt.client.celltable.CellTableWithCheckboxResources;
45
-import com.sap.sse.gwt.client.celltable.FlushableCellTable;
46 37
import com.sap.sse.gwt.client.dialog.DataEntryDialog.DialogCallback;
47 38
import com.sap.sse.gwt.client.panels.AbstractFilterablePanel;
48
-import com.sap.sse.gwt.client.panels.LabeledAbstractFilterablePanel;
49 39
import com.sap.sse.security.shared.impl.SecuredSecurityTypes.ServerActions;
50 40
import com.sap.sse.security.ui.client.UserService;
51 41
import com.sap.sse.security.ui.client.component.DefaultActionsImagesBarCell;
... ...
@@ -56,10 +46,8 @@ public class RemoteServerInstancesManagementPanel extends SimplePanel implements
56 46
private final UserService userService;
57 47
private final ErrorReporter errorReporter;
58 48
private final StringMessages stringMessages;
59
- private FlushableCellTable<RemoteSailingServerReferenceDTO> remoteServersTable;
60
- private final ListDataProvider<RemoteSailingServerReferenceDTO> serverDataProvider;
49
+ private RemoteServerInstancesManagementTableWrapper remoteServersTable;
61 50
private MultiSelectionModel<RemoteSailingServerReferenceDTO> refreshableServerSelectionModel;
62
- private LabeledAbstractFilterablePanel<RemoteSailingServerReferenceDTO> filteredServerTablePanel;
63 51
private final CaptionPanel remoteServersPanel;
64 52
65 53
public RemoteServerInstancesManagementPanel(final Presenter presenter, StringMessages stringMessages, CellTableWithCheckboxResources tableResources) {
... ...
@@ -74,42 +62,12 @@ public class RemoteServerInstancesManagementPanel extends SimplePanel implements
74 62
mainPanel.add(remoteServersPanel);
75 63
VerticalPanel remoteServersContentPanel = new VerticalPanel();
76 64
remoteServersPanel.setContentWidget(remoteServersContentPanel);
77
- serverDataProvider = new ListDataProvider<>();
78
- filteredServerTablePanel = createFilteredServerTablePanel();
79
- final ListHandler<RemoteSailingServerReferenceDTO> sortHandler = new ListHandler<>(serverDataProvider.getList());
80
- remoteServersTable = createRemoteServersTable(tableResources, sortHandler);
81
- remoteServersTable.addColumnSortHandler(sortHandler);
82
- serverDataProvider.addDataDisplay(remoteServersTable);
83
- remoteServersContentPanel.add(filteredServerTablePanel);
65
+ remoteServersTable = createRemoteServersTable(tableResources);
84 66
remoteServersContentPanel.add(remoteServersTable);
85 67
remoteServersContentPanel.add(createButtonToolbar());
86 68
refreshSailingServerList();
87 69
}
88 70
89
- private LabeledAbstractFilterablePanel<RemoteSailingServerReferenceDTO> createFilteredServerTablePanel() {
90
- return new LabeledAbstractFilterablePanel<RemoteSailingServerReferenceDTO>(
91
- new Label(stringMessages.filterBy() + ":"), Collections.<RemoteSailingServerReferenceDTO> emptyList(),
92
- serverDataProvider, stringMessages) {
93
- @Override
94
- public List<String> getSearchableStrings(RemoteSailingServerReferenceDTO t) {
95
- List<String> strings = new ArrayList<String>();
96
- strings.add(t.getName());
97
- strings.add(t.getUrl());
98
- if (t.getEvents() != null) {
99
- for (EventBaseDTO e : t.getEvents()) {
100
- strings.add(e.getName());
101
- }
102
- }
103
- return strings;
104
- }
105
-
106
- @Override
107
- public AbstractCellTable<RemoteSailingServerReferenceDTO> getCellTable() {
108
- return remoteServersTable;
109
- }
110
- };
111
- }
112
-
113 71
private Panel createButtonToolbar() {
114 72
HorizontalPanel buttonPanel = new HorizontalPanel();
115 73
buttonPanel.setSpacing(5);
... ...
@@ -125,33 +83,17 @@ public class RemoteServerInstancesManagementPanel extends SimplePanel implements
125 83
(ClickHandler) event -> removeSelectedSailingServers());
126 84
}
127 85
128
- private FlushableCellTable<RemoteSailingServerReferenceDTO> createRemoteServersTable(
129
- CellTableWithCheckboxResources tableResources, ListHandler<RemoteSailingServerReferenceDTO> sortHandler) {
86
+ private RemoteServerInstancesManagementTableWrapper createRemoteServersTable(
87
+ CellTableWithCheckboxResources tableResources) {
130 88
RemoteServerInstancesManagementTableWrapper wrapper = new RemoteServerInstancesManagementTableWrapper(
131
- stringMessages, errorReporter, filteredServerTablePanel.getAllListDataProvider(), tableResources);
132
- final TextColumn<RemoteSailingServerReferenceDTO> nameColumn = createTextColumn(RemoteSailingServerReferenceDTO::getName);
133
- nameColumn.setSortable(true);
134
- sortHandler.setComparator(nameColumn, Comparator.comparing(s -> s.getName() != null ? s.getName() : ""));
135
- wrapper.addColumn(nameColumn, stringMessages.name());
136
- final TextColumn<RemoteSailingServerReferenceDTO> urlColumn = createTextColumn(RemoteSailingServerReferenceDTO::getUrl);
137
- urlColumn.setSortable(true);
138
- sortHandler.setComparator(urlColumn, Comparator.comparing(s -> s.getUrl() != null ? s.getUrl() : ""));
139
- wrapper.addColumn(urlColumn, stringMessages.url());
89
+ stringMessages, errorReporter, tableResources);
90
+ wrapper.addColumn(RemoteSailingServerReferenceDTO::getName, stringMessages.name());
91
+ wrapper.addColumn(RemoteSailingServerReferenceDTO::getUrl, stringMessages.url());
140 92
wrapper.addColumn(createEventsColumn(), stringMessages.events());
141 93
wrapper.addColumn(createActionsColumn(), stringMessages.actions());
142 94
wrapper.setEmptyTableWidget(new Label(stringMessages.noSailingServerInstancesYet()));
143 95
refreshableServerSelectionModel = wrapper.getSelectionModel();
144
- return wrapper.getTable();
145
- }
146
-
147
- private TextColumn<RemoteSailingServerReferenceDTO> createTextColumn(
148
- Function<RemoteSailingServerReferenceDTO, String> getter) {
149
- return new TextColumn<RemoteSailingServerReferenceDTO>() {
150
- @Override
151
- public String getValue(RemoteSailingServerReferenceDTO server) {
152
- return getter.apply(server) != null ? getter.apply(server) : "";
153
- }
154
- };
96
+ return wrapper;
155 97
}
156 98
157 99
private Column<RemoteSailingServerReferenceDTO, SafeHtml> createEventsColumn() {
... ...
@@ -234,7 +176,7 @@ public class RemoteServerInstancesManagementPanel extends SimplePanel implements
234 176
235 177
private void refreshSailingServerList() {
236 178
sailingService.getRemoteSailingServerReferences(createCallback(stringMessages::errorRefreshingSailingServers,
237
- filteredServerTablePanel::updateAll, false));
179
+ remoteServersTable.getFilterPanel()::updateAll, false));
238 180
}
239 181
240 182
private void removeSelectedSailingServers() {
... ...
@@ -251,7 +193,7 @@ public class RemoteServerInstancesManagementPanel extends SimplePanel implements
251 193
}
252 194
253 195
private void addRemoteSailingServerReference() {
254
- new SailingServerCreateOrEditDialog(filteredServerTablePanel.getAll(), stringMessages,
196
+ new SailingServerCreateOrEditDialog(remoteServersTable.getFilterPanel().getAll(), stringMessages,
255 197
new DialogCallback<RemoteSailingServerReferenceDTO>() {
256 198
@Override
257 199
public void cancel() {
... ...
@@ -259,8 +201,9 @@ public class RemoteServerInstancesManagementPanel extends SimplePanel implements
259 201
260 202
@Override
261 203
public void ok(final RemoteSailingServerReferenceDTO server) {
262
- sailingService.addRemoteSailingServerReference(server, createCallback(
263
- stringMessages::errorAddingSailingServer, filteredServerTablePanel::add, true));
204
+ sailingService.addRemoteSailingServerReference(server,
205
+ createCallback(stringMessages::errorAddingSailingServer,
206
+ remoteServersTable.getFilterPanel()::add, true));
264 207
}
265 208
}).show();
266 209
}
... ...
@@ -285,6 +228,6 @@ public class RemoteServerInstancesManagementPanel extends SimplePanel implements
285 228
286 229
@Override
287 230
public AbstractFilterablePanel<RemoteSailingServerReferenceDTO> getFilterablePanel() {
288
- return filteredServerTablePanel;
231
+ return remoteServersTable.getFilterPanel();
289 232
}
290 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>