a45954cbb18d55c19b6df46bee984208462ec3c1
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> |