bug5288: fixed StructureImportManagementPanel regarding Events list update after merge

This commit is contained in:
Axel Uhl committed 2020-12-22 14:16:51 +01:00
1 parent 86cff65bfb
commit 9e61db6d08
3 files changed
+24 -29

No files matched your search

@@ -33,7 +33,6 @@ import com.sap.sailing.domain.common.dto.CourseAreaDTO;
import com.sap.sailing.domain.common.racelog.AuthorPriority;
import com.sap.sailing.domain.common.security.SecuredDomainType;
import com.sap.sailing.gwt.ui.adminconsole.places.AdminConsoleView.Presenter;
import com.sap.sailing.gwt.ui.client.Displayer;
import com.sap.sailing.gwt.ui.client.SailingServiceWriteAsync;
import com.sap.sailing.gwt.ui.client.StringMessages;
import com.sap.sailing.gwt.ui.shared.DeviceConfigurationDTO;
@@ -52,7 +51,7 @@ import com.sap.sse.security.shared.HasPermissions.DefaultActions;
import com.sap.sse.security.shared.dto.UserDTO;
import com.sap.sse.security.ui.client.UserService;
public class DeviceConfigurationDetailComposite extends Composite implements Displayer<EventDTO> {
public class DeviceConfigurationDetailComposite extends Composite {
private final AdminConsoleResources resources = GWT.create(AdminConsoleResources.class);
protected final SailingServiceWriteAsync sailingServiceWrite;
@@ -143,7 +142,7 @@ public class DeviceConfigurationDetailComposite extends Composite implements Dis
initWidget(captionPanel);
setConfiguration(/* configuration to display */ null);
this.userService = presenter.getUserService();
presenter.getEventsRefresher().addDisplayerAndCallFillOnInit(this);
presenter.getEventsRefresher().addDisplayerAndCallFillOnInit(eventDTOs->fillEvents(eventDTOs));
}
private ListBox createPriorityListBox() {
@@ -155,8 +154,7 @@ public class DeviceConfigurationDetailComposite extends Composite implements Dis
return result;
}
@Override
public void fill(Iterable<EventDTO> events) {
private void fillEvents(Iterable<EventDTO> events) {
eventListBox.clear();
eventsById.clear();
eventListBox.addItem(stringMessages.selectSailingEvent(), "");
@@ -71,6 +71,8 @@ public class StructureImportManagementPanel extends SimplePanel implements Regat
private List<EventDTO> existingEvents;
private ListBox sailingEventsListBox;
private final Displayer<EventDTO> eventsDisplayer;
/**
* Holds one {@link RegattaDTO} for each distinct regatta structure. The user can work with this panel
* to adjust the defaults for each structure recognized, working with the table selection to show/hide
@@ -105,6 +107,7 @@ public class StructureImportManagementPanel extends SimplePanel implements Regat
this.stringMessages = stringMessages;
this.presenter = presenter;
this.regattaListComposite = new StructureImportListComposite(presenter, this, errorReporter, stringMessages);
this.eventsDisplayer = result->fillEvents(result);
regattaListComposite.ensureDebugId("RegattaListComposite");
VerticalPanel mainPanel = new VerticalPanel();
setWidget(mainPanel);
@@ -189,7 +192,7 @@ public class StructureImportManagementPanel extends SimplePanel implements Regat
* Adds an event selector and a "create new event" button to the {@link #editSeriesPanel} in its first row
*/
private Widget createEventSelectionAndCreateEventButtonUI() {
Grid grid = new Grid(1, 2);
final Grid grid = new Grid(1, 2);
sailingEventsListBox = new ListBox();
sailingEventsListBox.setMultipleSelect(false);
sailingEventsListBox.addChangeHandler(new ChangeHandler() {
@@ -198,9 +201,10 @@ public class StructureImportManagementPanel extends SimplePanel implements Regat
updateImportRegattasButtonEnabledness();
}
});
presenter.getEventsRefresher().callFillAndReloadInitially(getEventsDisplayer());
sailingEventsListBox.ensureDebugId("EventListBox");
grid.setWidget(0, 0, sailingEventsListBox);
Button newEventBtn = new Button(stringMessages.createNewEvent());
final Button newEventBtn = new Button(stringMessages.createNewEvent());
newEventBtn.addClickHandler(new ClickHandler() {
@Override
public void onClick(ClickEvent event) {
@@ -419,7 +423,6 @@ public class StructureImportManagementPanel extends SimplePanel implements Regat
}
private void createRegattas(final Iterable<RegattaDTO> selectedOriginalRegattasFromXRR, EventDTO newEvent) {
final List<RegattaDTO> regattaConfigurationsToCreate = new ArrayList<>();
for (RegattaDTO originalRegattaFromXRR : selectedOriginalRegattasFromXRR) {
RegattaDTO cloneFromDefaults = new RegattaDTO(regattaDefaultsPerStructure.get(regattaStructures.get(originalRegattaFromXRR)));
@@ -455,30 +458,26 @@ public class StructureImportManagementPanel extends SimplePanel implements Regat
return regattaStructures.get(regatta);
}
private final Displayer<EventDTO> eventsDisplayer = new Displayer<EventDTO>() {
@Override
public void fill(Iterable<EventDTO> result) {
fillEvents(result);
}
};
public Displayer<EventDTO> getEventsDisplayer() {
return eventsDisplayer;
}
private void fillEvents(Iterable<EventDTO> result) {
existingEvents = new ArrayList<EventDTO>();
result.forEach(existingEvents::add);
Collections.sort(existingEvents, new Comparator<EventDTO>() {
private final NaturalComparator comp = new NaturalComparator();
@Override
public int compare(EventDTO o1, EventDTO o2) {
return comp.compare(o1.getName(), o2.getName());
if (sailingEventsListBox != null) { // is initialized only one a regatta structure has been loaded
sailingEventsListBox.clear();
existingEvents = new ArrayList<EventDTO>();
result.forEach(existingEvents::add);
Collections.sort(existingEvents, new Comparator<EventDTO>() {
private final NaturalComparator comp = new NaturalComparator();
@Override
public int compare(EventDTO o1, EventDTO o2) {
return comp.compare(o1.getName(), o2.getName());
}
});
sailingEventsListBox.addItem(stringMessages.selectSailingEvent());
for (EventDTO event : existingEvents) {
sailingEventsListBox.addItem(event.getName());
}
});
sailingEventsListBox.addItem(stringMessages.selectSailingEvent());
for (EventDTO event : existingEvents) {
sailingEventsListBox.addItem(event.getName());
}
}
}
@@ -20,8 +20,7 @@ public class StructureImportManagementPanelSupplier extends AdminConsolePanelSup
@Override
public StructureImportManagementPanel init() {
logger.info("Create StructureImportManagementPanel");
StructureImportManagementPanel structureImportUrlsManagementPanel = new StructureImportManagementPanel(
presenter, stringMessages);
StructureImportManagementPanel structureImportUrlsManagementPanel = new StructureImportManagementPanel(presenter, stringMessages);
structureImportUrlsManagementPanel.ensureDebugId("structureImportUrlsManagementPanel");
presenter.getEventsRefresher().addDisplayerAndCallFillOnInit(structureImportUrlsManagementPanel.getEventsDisplayer());
return structureImportUrlsManagementPanel;
@@ -42,5 +41,4 @@ public class StructureImportManagementPanelSupplier extends AdminConsolePanelSup
}
});
}
}