bug6275: ui changes and new class

This commit is contained in:
Masha Kashirina
2026-08-04 23:47:11 +02:00
parent e2c1339ce0
commit 20950509a4
8 changed files with 210 additions and 202 deletions
@@ -3,12 +3,11 @@ package com.sap.sailing.gwt.ui.adminconsole;
import java.util.ArrayList;
import java.util.List;
import com.google.gwt.dom.client.Style.FontWeight;
import com.google.gwt.event.dom.client.ClickEvent;
import com.google.gwt.event.dom.client.ClickHandler;
import com.google.gwt.user.client.ui.Button;
import com.google.gwt.user.client.ui.CheckBox;
import com.google.gwt.user.client.ui.Grid;
import com.google.gwt.user.client.ui.HorizontalPanel;
import com.google.gwt.user.client.ui.Label;
import com.google.gwt.user.client.ui.VerticalPanel;
import com.google.gwt.user.client.ui.Widget;
@@ -23,7 +22,7 @@ public class CourseAreaSelectionDialog extends DataEntryDialog<List<CourseAreaDT
public CourseAreaSelectionDialog(final List<CourseAreaDTO> courseAreas, final StringMessages stringMessages,
final DialogCallback<List<CourseAreaDTO>> callback) {
super(stringMessages.selectCourseAreas(), null, stringMessages.ok(), stringMessages.cancel(), null, callback);
super(stringMessages.selectCourseAreas(), null, stringMessages.appendCourseAreasConfirm(), stringMessages.cancel(), null, callback);
this.courseAreas = courseAreas;
this.stringMessages = stringMessages;
}
@@ -32,7 +31,7 @@ public class CourseAreaSelectionDialog extends DataEntryDialog<List<CourseAreaDT
protected List<CourseAreaDTO> getResult() {
final List<CourseAreaDTO> selected = new ArrayList<>();
for (int i = 0; i < courseAreas.size(); i++) {
final CheckBox checkBox = (CheckBox) selectionGrid.getWidget(i, 1);
final CheckBox checkBox = (CheckBox) selectionGrid.getWidget(i + 1, 1);
if (checkBox.getValue()) {
selected.add(courseAreas.get(i));
}
@@ -44,33 +43,27 @@ public class CourseAreaSelectionDialog extends DataEntryDialog<List<CourseAreaDT
protected Widget getAdditionalWidget() {
final VerticalPanel mainPanel = new VerticalPanel();
mainPanel.setSpacing(5);
final HorizontalPanel multiSelectPanel = new HorizontalPanel();
multiSelectPanel.setSpacing(3);
final Button selectAllButton = new Button(stringMessages.selectAll());
selectAllButton.addClickHandler(createMultiSelectionHandler(true));
final Button deselectAllButton = new Button(stringMessages.deselectAll());
deselectAllButton.addClickHandler(createMultiSelectionHandler(false));
multiSelectPanel.add(selectAllButton);
multiSelectPanel.add(deselectAllButton);
mainPanel.add(multiSelectPanel);
selectionGrid = new Grid(courseAreas.size(), 2);
selectionGrid = new Grid(courseAreas.size() + 1, 2);
selectionGrid.setCellSpacing(5);
final Label selectAllLabel = new Label(stringMessages.selectAll());
selectAllLabel.getElement().getStyle().setFontWeight(FontWeight.BOLD);
final CheckBox selectAllCheckBox = new CheckBox();
selectionGrid.setWidget(0, 0, selectAllLabel);
selectionGrid.setWidget(0, 1, selectAllCheckBox);
for (int i = 0; i < courseAreas.size(); i++) {
selectionGrid.setWidget(i, 0, new Label(courseAreas.get(i).getName()));
selectionGrid.setWidget(i, 1, new CheckBox());
selectionGrid.setWidget(i + 1, 0, new Label(courseAreas.get(i).getName()));
selectionGrid.setWidget(i + 1, 1, new CheckBox());
}
mainPanel.add(selectionGrid);
return mainPanel;
}
private ClickHandler createMultiSelectionHandler(final boolean checked) {
return new ClickHandler() {
selectAllCheckBox.addClickHandler(new ClickHandler() {
@Override
public void onClick(final ClickEvent event) {
for (int i = 0; i < selectionGrid.getRowCount(); i++) {
final boolean checked = selectAllCheckBox.getValue();
for (int i = 1; i < selectionGrid.getRowCount(); i++) {
((CheckBox) selectionGrid.getWidget(i, 1)).setValue(checked);
}
}
};
});
mainPanel.add(selectionGrid);
return mainPanel;
}
}
@@ -0,0 +1,172 @@
package com.sap.sailing.gwt.ui.adminconsole;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.Comparator;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.UUID;
import com.google.gwt.event.logical.shared.ValueChangeHandler;
import com.google.gwt.user.client.rpc.AsyncCallback;
import com.google.gwt.user.client.ui.Button;
import com.google.gwt.user.client.ui.Composite;
import com.google.gwt.user.client.ui.Grid;
import com.google.gwt.user.client.ui.HorizontalPanel;
import com.google.gwt.user.client.ui.Label;
import com.google.gwt.user.client.ui.ListBox;
import com.google.gwt.user.client.ui.TextBox;
import com.google.gwt.user.client.ui.VerticalPanel;
import com.sap.sailing.domain.common.dto.CourseAreaDTO;
import com.sap.sailing.gwt.ui.client.SailingServiceWriteAsync;
import com.sap.sailing.gwt.ui.client.StringMessages;
import com.sap.sailing.gwt.ui.shared.EventDTO;
import com.sap.sailing.landscape.common.SharedLandscapeConstants;
import com.sap.sse.gwt.client.IconResources;
import com.sap.sse.gwt.client.controls.busyindicator.BusyIndicator;
import com.sap.sse.gwt.client.controls.busyindicator.SimpleBusyIndicator;
import com.sap.sse.gwt.client.dialog.DataEntryDialog;
public class CourseAreaTabComposite extends Composite {
private final CourseAreaListInlineEditorComposite courseAreaList;
public CourseAreaTabComposite(final Collection<EventDTO> existingEvents,
final SailingServiceWriteAsync sailingServiceWrite, final StringMessages stringMessages) {
courseAreaList = new CourseAreaListInlineEditorComposite(Collections.<CourseAreaDTO> emptyList(),
new CourseAreaListInlineEditorComposite.ExpandedUi(stringMessages, IconResources.INSTANCE.removeIcon(),
SuggestedCourseAreaNames.suggestedCourseAreaNames, stringMessages.enterCourseAreaName(), 30));
final VerticalPanel courseAreasPanel = new VerticalPanel();
courseAreasPanel.setSpacing(5);
final Map<String, EventDTO> eventsCache = new HashMap<>();
for (final EventDTO event : existingEvents) {
eventsCache.put(event.getId().toString(), event);
}
final ListBox eventDropDown = new ListBox();
eventDropDown.addItem(stringMessages.pleaseSelectAnEvent());
final List<EventDTO> sortedExistingEvents = new ArrayList<>(existingEvents);
sortedExistingEvents.sort(Comparator.comparing(EventDTO::getName));
for (final EventDTO event : sortedExistingEvents) {
eventDropDown.addItem(event.getName(), event.getId().toString());
}
final Button appendButton = new Button(stringMessages.appendCourseAreas());
appendButton.setEnabled(false);
appendButton.addStyleName("btn-secondary");
final Button clearAllButton = new Button(stringMessages.clearAllCourseAreas());
clearAllButton.setEnabled(false);
clearAllButton.addStyleName("btn-secondary");
eventDropDown.addChangeHandler(e -> {
final boolean hasSelection = eventDropDown.getSelectedIndex() > 0;
appendButton.setEnabled(hasSelection);
clearAllButton.setEnabled(hasSelection);
});
appendButton.addClickHandler(e -> {
final EventDTO selected = eventsCache.get(eventDropDown.getValue(eventDropDown.getSelectedIndex()));
if (selected != null) {
new CourseAreaSelectionDialog(selected.getVenue().getCourseAreas(), stringMessages,
new DataEntryDialog.DialogCallback<List<CourseAreaDTO>>() {
@Override
public void ok(final List<CourseAreaDTO> result) {
final List<CourseAreaDTO> updated = new ArrayList<>(courseAreaList.getValue());
for (final CourseAreaDTO area : result) {
updated.add(new CourseAreaDTO(UUID.randomUUID(), area.getName(), area.getCenterPosition(), area.getRadius()));
}
courseAreaList.setValue(updated);
}
@Override
public void cancel() {}
}).show();
}
});
clearAllButton.addClickHandler(e -> courseAreaList.setValue(new ArrayList<>()));
final TextBox remoteBaseUrlBox = new TextBox();
remoteBaseUrlBox.setValue(SharedLandscapeConstants.DEFAULT_SAILING_SERVER_URL);
remoteBaseUrlBox.setWidth("300px");
remoteBaseUrlBox.getElement().setPropertyString("placeholder", stringMessages.remoteServerUrlPlaceholder());
final TextBox bearerTokenOrNullBox = new TextBox();
bearerTokenOrNullBox.setWidth("200px");
bearerTokenOrNullBox.getElement().setPropertyString("placeholder", stringMessages.bearerTokenPlaceholder());
final BusyIndicator remoteLoadBusyIndicator = new SimpleBusyIndicator();
final Button loadRemoteEventsButton = new Button(stringMessages.loadRemoteEvents());
loadRemoteEventsButton.addClickHandler(e -> {
eventDropDown.clear();
eventDropDown.addItem(stringMessages.pleaseSelectAnEvent());
eventsCache.clear();
final String baseUrl = remoteBaseUrlBox.getValue().trim();
if (baseUrl.isEmpty()) {
final List<EventDTO> sorted = new ArrayList<>(existingEvents);
sorted.sort(Comparator.comparing(EventDTO::getName));
for (final EventDTO event : sorted) {
eventsCache.put(event.getId().toString(), event);
eventDropDown.addItem(event.getName(), event.getId().toString());
}
eventDropDown.setEnabled(true);
} else {
remoteLoadBusyIndicator.setBusy(true);
eventDropDown.setEnabled(false);
final String bearerTokenOrNull = bearerTokenOrNullBox.getValue().trim().isEmpty() ? null : bearerTokenOrNullBox.getValue().trim();
sailingServiceWrite.getRemoteEvents(baseUrl, bearerTokenOrNull,
new AsyncCallback<List<EventDTO>>() {
@Override
public void onSuccess(final List<EventDTO> result) {
remoteLoadBusyIndicator.setBusy(false);
result.sort(Comparator.comparing(EventDTO::getName));
for (final EventDTO event : result) {
eventsCache.put(event.getId().toString(), event);
eventDropDown.addItem(event.getName(), event.getId().toString());
}
eventDropDown.setEnabled(true);
}
@Override
public void onFailure(final Throwable caught) {
remoteLoadBusyIndicator.setBusy(false);
eventDropDown.clear();
eventDropDown.addItem(caught.getMessage());
}
});
}
});
final VerticalPanel copyPanel = new VerticalPanel();
copyPanel.setWidth("100%");
copyPanel.setSpacing(3);
final Grid remoteInputGrid = new Grid(2, 3);
remoteInputGrid.setWidget(0, 0, new Label(stringMessages.copyCourseAreasFromAnotherUrl()));
remoteInputGrid.setWidget(0, 1, remoteBaseUrlBox);
final HorizontalPanel loadRow = new HorizontalPanel();
loadRow.setSpacing(3);
loadRow.add(loadRemoteEventsButton);
loadRow.add(remoteLoadBusyIndicator);
remoteInputGrid.setWidget(0, 2, loadRow);
remoteInputGrid.setWidget(1, 0, new Label(stringMessages.bearerTokenOrNullForRemoteEvents()));
remoteInputGrid.setWidget(1, 1, bearerTokenOrNullBox);
eventDropDown.setWidth("100%");
final HorizontalPanel actionButtons = new HorizontalPanel();
actionButtons.setSpacing(3);
actionButtons.add(appendButton);
actionButtons.add(clearAllButton);
final HorizontalPanel eventDropDownRow = new HorizontalPanel();
eventDropDownRow.setSpacing(3);
eventDropDownRow.setWidth("100%");
eventDropDownRow.add(new Label(stringMessages.event() + ":"));
eventDropDownRow.add(eventDropDown);
eventDropDownRow.add(actionButtons);
copyPanel.add(remoteInputGrid);
copyPanel.add(eventDropDownRow);
courseAreasPanel.add(copyPanel);
courseAreasPanel.add(courseAreaList);
initWidget(courseAreasPanel);
}
public List<CourseAreaDTO> getValue() {
return courseAreaList.getValue();
}
public void setValue(final List<CourseAreaDTO> value) {
courseAreaList.setValue(value);
}
public void addValueChangeHandler(final ValueChangeHandler<Iterable<CourseAreaDTO>> handler) {
courseAreaList.addValueChangeHandler(handler);
}
}
@@ -45,6 +45,6 @@ public class EventCreateDialog extends EventDialog {
imagesListComposite.fillImages(Collections.<ImageDTO>emptyList());
videosListComposite.fillVideos(Collections.<VideoDTO>emptyList());
// add default course area
courseAreaNameList.setValue(Collections.singletonList(new CourseAreaDTO(UUID.randomUUID(), "Default")));
courseAreaList.setValue(Collections.singletonList(new CourseAreaDTO(UUID.randomUUID(), "Default")));
}
}
@@ -3,7 +3,6 @@ package com.sap.sailing.gwt.ui.adminconsole;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.Comparator;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
@@ -13,14 +12,11 @@ import java.util.UUID;
import com.google.gwt.dom.client.Style.Unit;
import com.google.gwt.event.logical.shared.ValueChangeEvent;
import com.google.gwt.event.logical.shared.ValueChangeHandler;
import com.google.gwt.user.client.rpc.AsyncCallback;
import com.google.gwt.user.client.ui.Button;
import com.google.gwt.user.client.ui.CheckBox;
import com.google.gwt.user.client.ui.FocusWidget;
import com.google.gwt.user.client.ui.Grid;
import com.google.gwt.user.client.ui.HorizontalPanel;
import com.google.gwt.user.client.ui.Label;
import com.google.gwt.user.client.ui.ListBox;
import com.google.gwt.user.client.ui.ScrollPanel;
import com.google.gwt.user.client.ui.TabLayoutPanel;
import com.google.gwt.user.client.ui.TextArea;
@@ -30,7 +26,6 @@ import com.google.gwt.user.client.ui.Widget;
import com.sap.sailing.domain.common.dto.CourseAreaDTO;
import com.sap.sailing.domain.common.windfinder.AvailableWindFinderSpotCollections;
import com.sap.sailing.gwt.ui.client.DataEntryDialogWithDateTimeBox;
import com.sap.sse.gwt.client.dialog.DataEntryDialog;
import com.sap.sailing.gwt.ui.client.SailingServiceWriteAsync;
import com.sap.sailing.gwt.ui.client.StringMessages;
import com.sap.sailing.gwt.ui.shared.EventDTO;
@@ -38,8 +33,6 @@ import com.sap.sailing.gwt.ui.shared.LeaderboardGroupDTO;
import com.sap.sailing.gwt.ui.shared.VenueDTO;
import com.sap.sse.gwt.client.DateAndTimeFormatterUtil;
import com.sap.sse.gwt.client.IconResources;
import com.sap.sse.gwt.client.controls.busyindicator.BusyIndicator;
import com.sap.sse.gwt.client.controls.busyindicator.SimpleBusyIndicator;
import com.sap.sse.gwt.client.controls.datetime.DateAndTimeInput;
import com.sap.sse.gwt.client.controls.listedit.GenericStringListEditorComposite;
import com.sap.sse.gwt.client.controls.listedit.StringConstantsListEditorComposite;
@@ -57,7 +50,7 @@ public abstract class EventDialog extends DataEntryDialogWithDateTimeBox<EventDT
protected CheckBox isPublicCheckBox;
protected UUID id;
protected TextBox baseURLEntryField;
protected CourseAreaListInlineEditorComposite courseAreaNameList;
protected CourseAreaTabComposite courseAreaList;
protected StringConstantsListEditorComposite leaderboardGroupList;
protected StringListInlineEditorComposite windFinderSpotCollectionIdsComposite;
protected Map<String, LeaderboardGroupDTO> availableLeaderboardGroupsByName;
@@ -158,10 +151,8 @@ public abstract class EventDialog extends DataEntryDialogWithDateTimeBox<EventDT
validateAndUpdate();
}
};
courseAreaNameList = new CourseAreaListInlineEditorComposite(Collections.<CourseAreaDTO> emptyList(),
new CourseAreaListInlineEditorComposite.ExpandedUi(stringMessages, IconResources.INSTANCE.removeIcon(), /* suggestValues */
SuggestedCourseAreaNames.suggestedCourseAreaNames, stringMessages.enterCourseAreaName(), 30));
courseAreaNameList.addValueChangeHandler(courseAreaValueChangeHandler);
courseAreaList = new CourseAreaTabComposite(existingEvents, sailingServiceWrite, stringMessages);
courseAreaList.addValueChangeHandler(courseAreaValueChangeHandler);
List<String> leaderboardGroupNames = new ArrayList<>();
for (LeaderboardGroupDTO leaderboardGroupDTO: availableLeaderboardGroups) {
leaderboardGroupNames.add(leaderboardGroupDTO.getName());
@@ -202,7 +193,7 @@ public abstract class EventDialog extends DataEntryDialogWithDateTimeBox<EventDT
result.endDate = endDateBox.getValue();
result.isPublic = isPublicCheckBox.getValue();
result.id = id;
final List<CourseAreaDTO> courseAreas = courseAreaNameList.getValue();
final List<CourseAreaDTO> courseAreas = courseAreaList.getValue();
for (ImageDTO image : imagesListComposite.getAllImages()) {
result.addImage(image);
}
@@ -253,159 +244,7 @@ public abstract class EventDialog extends DataEntryDialogWithDateTimeBox<EventDT
final ScrollPanel leaderboardGroupTab = new ScrollPanel(leaderboardGroupList);
leaderboardGroupTab.ensureDebugId("LeaderboardGroupsTab");
tabPanel.add(leaderboardGroupTab, stringMessages.leaderboardGroups());
final VerticalPanel courseAreasPanel = new VerticalPanel();
courseAreasPanel.setSpacing(5);
final Map<String, EventDTO> eventsCache = new HashMap<>();
for (final EventDTO event : existingEvents) {
eventsCache.put(event.getId().toString(), event);
}
final ListBox eventDropDown = createListBox(false);
eventDropDown.addItem(stringMessages.pleaseSelect());
final List<EventDTO> sortedExistingEvents = new ArrayList<>(existingEvents);
sortedExistingEvents.sort(Comparator.comparing(EventDTO::getName));
for (final EventDTO event : sortedExistingEvents) {
eventDropDown.addItem(event.getName(), event.getId().toString());
}
final Button appendButton = new Button(stringMessages.appendCourseAreas());
appendButton.setEnabled(false);
appendButton.addStyleName("btn-secondary");
final Button replaceAllButton = new Button(stringMessages.replaceAllCourseAreas());
replaceAllButton.setEnabled(false);
replaceAllButton.addStyleName("btn-secondary");
final Button clearAndPickButton = new Button(stringMessages.clearAndPickCourseAreas());
clearAndPickButton.setEnabled(false);
clearAndPickButton.addStyleName("btn-secondary");
final List<CourseAreaDTO> initialCourseAreas = new ArrayList<>(courseAreaNameList.getValue());
final Button resetButton = new Button(stringMessages.resetCourseAreas());
resetButton.addClickHandler(e -> courseAreaNameList.setValue(new ArrayList<>(initialCourseAreas)));
eventDropDown.addChangeHandler(e -> {
final boolean hasSelection = eventDropDown.getSelectedIndex() > 0;
appendButton.setEnabled(hasSelection);
replaceAllButton.setEnabled(hasSelection);
clearAndPickButton.setEnabled(hasSelection);
});
appendButton.addClickHandler(e -> {
final EventDTO selected = eventsCache.get(eventDropDown.getValue(eventDropDown.getSelectedIndex()));
if (selected != null) {
new CourseAreaSelectionDialog(selected.getVenue().getCourseAreas(), stringMessages,
new DataEntryDialog.DialogCallback<List<CourseAreaDTO>>() {
@Override
public void ok(final List<CourseAreaDTO> result) {
final List<CourseAreaDTO> updated = new ArrayList<>(courseAreaNameList.getValue());
for (final CourseAreaDTO area : result) {
updated.add(new CourseAreaDTO(UUID.randomUUID(), area.getName(), area.getCenterPosition(), area.getRadius()));
}
courseAreaNameList.setValue(updated);
}
@Override
public void cancel() {}
}).show();
}
});
replaceAllButton.addClickHandler(e -> {
final EventDTO selected = eventsCache.get(eventDropDown.getValue(eventDropDown.getSelectedIndex()));
if (selected != null) {
final List<CourseAreaDTO> copies = new ArrayList<>();
for (final CourseAreaDTO area : selected.getVenue().getCourseAreas()) {
copies.add(new CourseAreaDTO(UUID.randomUUID(), area.getName(), area.getCenterPosition(), area.getRadius()));
}
courseAreaNameList.setValue(copies);
}
});
clearAndPickButton.addClickHandler(e -> {
final EventDTO selected = eventsCache.get(eventDropDown.getValue(eventDropDown.getSelectedIndex()));
if (selected != null) {
new CourseAreaSelectionDialog(selected.getVenue().getCourseAreas(), stringMessages,
new DataEntryDialog.DialogCallback<List<CourseAreaDTO>>() {
@Override
public void ok(final List<CourseAreaDTO> result) {
final List<CourseAreaDTO> copies = new ArrayList<>();
for (final CourseAreaDTO area : result) {
copies.add(new CourseAreaDTO(UUID.randomUUID(), area.getName(), area.getCenterPosition(), area.getRadius()));
}
courseAreaNameList.setValue(copies);
}
@Override
public void cancel() {}
}).show();
}
});
final TextBox remoteBaseUrlBox = new TextBox();
remoteBaseUrlBox.setWidth("300px");
remoteBaseUrlBox.getElement().setPropertyString("placeholder", stringMessages.remoteServerUrlPlaceholder());
final TextBox bearerTokenOrNullBox = new TextBox();
bearerTokenOrNullBox.setWidth("200px");
bearerTokenOrNullBox.getElement().setPropertyString("placeholder", stringMessages.bearerTokenPlaceholder());
final BusyIndicator remoteLoadBusyIndicator = new SimpleBusyIndicator();
final Button loadRemoteEventsButton = new Button(stringMessages.loadRemoteEvents());
loadRemoteEventsButton.addClickHandler(e -> {
eventDropDown.clear();
eventDropDown.addItem(stringMessages.pleaseSelect());
eventsCache.clear();
final String baseUrl = remoteBaseUrlBox.getValue().trim();
if (baseUrl.isEmpty()) {
final List<EventDTO> sorted = new ArrayList<>(existingEvents);
sorted.sort(Comparator.comparing(EventDTO::getName));
for (final EventDTO event : sorted) {
eventsCache.put(event.getId().toString(), event);
eventDropDown.addItem(event.getName(), event.getId().toString());
}
eventDropDown.setEnabled(true);
} else {
remoteLoadBusyIndicator.setBusy(true);
eventDropDown.setEnabled(false);
final String bearerTokenOrNull = bearerTokenOrNullBox.getValue().trim().isEmpty() ? null : bearerTokenOrNullBox.getValue().trim();
sailingServiceWrite.getRemoteEvents(baseUrl, bearerTokenOrNull,
new AsyncCallback<List<EventDTO>>() {
@Override
public void onSuccess(final List<EventDTO> result) {
remoteLoadBusyIndicator.setBusy(false);
result.sort(Comparator.comparing(EventDTO::getName));
for (final EventDTO event : result) {
eventsCache.put(event.getId().toString(), event);
eventDropDown.addItem(event.getName(), event.getId().toString());
}
eventDropDown.setEnabled(true);
}
@Override
public void onFailure(final Throwable caught) {
remoteLoadBusyIndicator.setBusy(false);
eventDropDown.clear();
eventDropDown.addItem(caught.getMessage());
}
});
}
});
final VerticalPanel copyPanel = new VerticalPanel();
copyPanel.setWidth("100%");
copyPanel.setSpacing(3);
final Grid remoteInputGrid = new Grid(2, 3);
remoteInputGrid.setWidget(0, 0, new Label(stringMessages.copyCourseAreasFromEvent()));
remoteInputGrid.setWidget(0, 1, remoteBaseUrlBox);
final HorizontalPanel loadRow = new HorizontalPanel();
loadRow.setSpacing(3);
loadRow.add(loadRemoteEventsButton);
loadRow.add(remoteLoadBusyIndicator);
remoteInputGrid.setWidget(0, 2, loadRow);
remoteInputGrid.setWidget(1, 0, new Label(stringMessages.bearerTokenOrNullForRemoteEvents()));
remoteInputGrid.setWidget(1, 1, bearerTokenOrNullBox);
eventDropDown.setWidth("100%");
final HorizontalPanel actionButtons = new HorizontalPanel();
actionButtons.setSpacing(3);
actionButtons.add(appendButton);
actionButtons.add(replaceAllButton);
actionButtons.add(clearAndPickButton);
final HorizontalPanel eventDropDownRow = new HorizontalPanel();
eventDropDownRow.setSpacing(3);
eventDropDownRow.setWidth("100%");
eventDropDownRow.add(eventDropDown);
eventDropDownRow.add(actionButtons);
copyPanel.add(remoteInputGrid);
copyPanel.add(eventDropDownRow);
courseAreasPanel.add(copyPanel);
courseAreasPanel.add(courseAreaNameList);
courseAreasPanel.add(resetButton);
final ScrollPanel courseAreasTab = new ScrollPanel(courseAreasPanel);
final ScrollPanel courseAreasTab = new ScrollPanel(courseAreaList);
courseAreasTab.ensureDebugId("CourseAreasTab");
tabPanel.add(courseAreasTab, stringMessages.courseAreas());
final ScrollPanel imagesTab = new ScrollPanel(imagesListComposite);
@@ -30,7 +30,7 @@ public class EventEditDialog extends EventDialog {
baseURLEntryField = createTextBox(event.getBaseURL());
baseURLEntryField.setVisibleLength(50);
id = event.id;
courseAreaNameList.setValue(new ArrayList<>(event.getVenue().getCourseAreas()));
courseAreaList.setValue(new ArrayList<>(event.getVenue().getCourseAreas()));
List<String> leaderboardGroupNames = new ArrayList<>();
for(LeaderboardGroupDTO leaderboardGroupDTO: event.getLeaderboardGroups()) {
leaderboardGroupNames.add(leaderboardGroupDTO.getName());
@@ -1470,13 +1470,14 @@ public interface StringMessages extends com.sap.sse.gwt.client.StringMessages,
String copyCourse();
String copyCourseAreasFromEvent();
String copyCourseAreasFromRemoteServer();
String copyCourseAreasFromAnotherUrl();
String loadRemoteEvents();
String bearerTokenOrNullForRemoteEvents();
String remoteServerUrlPlaceholder();
String bearerTokenPlaceholder();
String appendCourseAreas();
String replaceAllCourseAreas();
String clearAndPickCourseAreas();
String appendCourseAreasConfirm();
String clearAllCourseAreas();
String selectCourseAreas();
String resetCourseAreas();
String copyCompetitors();
@@ -1497,13 +1497,14 @@ doYouWantToCreateADefaultRegattaLeaderboard=Do you want to create a default Rega
copyCourse=Copy Course
copyCourseAreasFromEvent=Copy course areas from event
copyCourseAreasFromRemoteServer=Copy course areas from remote server
copyCourseAreasFromAnotherUrl=Copy course areas from another URL:
loadRemoteEvents=Load
bearerTokenOrNullForRemoteEvents=Bearer token for remote server
bearerTokenOrNullForRemoteEvents=Bearer token for remote server:
remoteServerUrlPlaceholder=Paste server URL (leave empty for local)
bearerTokenPlaceholder=Leave empty for current user
appendCourseAreas=Append
replaceAllCourseAreas=Replace all
clearAndPickCourseAreas=Clear and pick
appendCourseAreas=Pick...
appendCourseAreasConfirm=Append
clearAllCourseAreas=Clear all
selectCourseAreas=Select course areas
resetCourseAreas=Reset
copyCompetitors=Copy Competitors
@@ -1467,14 +1467,16 @@ doYouWantToCreateADefaultRegattaLeaderboard=Möchten Sie eine Standardrangliste
copyCourse=Kurs kopieren
copyCourseAreasFromEvent=Regattabahnen von Veranstaltung kopieren
copyCourseAreasFromRemoteServer=Regattabahnen von externem Server kopieren
copyCourseAreasFromAnotherUrl=Regattabahnen von anderer URL kopieren:
loadRemoteEvents=Laden
bearerTokenOrNullForRemoteEvents=Bearer-Token für externen Server
bearerTokenOrNullForRemoteEvents=Bearer-Token für externen Server:
remoteServerUrlPlaceholder=Server-URL einfügen (leer für lokal)
bearerTokenPlaceholder=Leer lassen für aktuellen Benutzer
appendCourseAreas=Anhängen
replaceAllCourseAreas=Alle ersetzen
clearAndPickCourseAreas=Leeren und auswählen
appendCourseAreas=Auswählen...
appendCourseAreasConfirm=Anhängen
clearAllCourseAreas=Alle leeren
selectCourseAreas=Regattabahnen auswählen
resetCourseAreas=Zurücksetzen
copyCompetitors=Teilnehmer kopieren
smartphoneTracking=Smartphone Tracking
titelOfChooseNameDialog= Wählen sie einen Namen