From cb0191dbe1e53b141e6f77952ee4bd77c2ec7b94 Mon Sep 17 00:00:00 2001 From: Steffen Jacobs Date: Wed, 21 Aug 2019 18:51:58 +0200 Subject: [PATCH] Bug 5085: initial version of template creation dialogs --- .../ControlPointEditDialog.java | 129 ++++++++++++++++++ .../CourseTemplateEditDialog.java | 81 ++++++++++- .../coursecreation/CourseTemplatePanel.java | 3 +- .../MarkTemplateSuggestOracle.java | 90 ++++++++++++ .../PassingInstructionSuggestOracle.java | 61 +++++++++ .../sailing/gwt/ui/client/StringMessages.java | 8 +- .../gwt/ui/client/StringMessages.properties | 6 +- .../ui/client/StringMessages_de.properties | 14 +- .../courseCreation/WaypointTemplateDTO.java | 4 + .../ui/client/i18n/StringMessages.java | 1 + .../ui/client/i18n/StringMessages.properties | 3 +- .../client/i18n/StringMessages_de.properties | 3 +- 12 files changed, 389 insertions(+), 14 deletions(-) create mode 100644 java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/coursecreation/ControlPointEditDialog.java create mode 100644 java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/coursecreation/MarkTemplateSuggestOracle.java create mode 100644 java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/coursecreation/PassingInstructionSuggestOracle.java diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/coursecreation/ControlPointEditDialog.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/coursecreation/ControlPointEditDialog.java new file mode 100644 index 00000000000..d032a44ca7a --- /dev/null +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/coursecreation/ControlPointEditDialog.java @@ -0,0 +1,129 @@ +package com.sap.sailing.gwt.ui.adminconsole.coursecreation; + +import java.util.Optional; + +import com.google.gwt.user.client.ui.FocusWidget; +import com.google.gwt.user.client.ui.Grid; +import com.google.gwt.user.client.ui.Label; +import com.google.gwt.user.client.ui.SuggestBox; +import com.google.gwt.user.client.ui.Widget; +import com.sap.sailing.domain.common.PassingInstruction; +import com.sap.sailing.gwt.ui.adminconsole.coursecreation.ControlPointEditDialog.ControlPointEditDTO; +import com.sap.sailing.gwt.ui.client.SailingServiceAsync; +import com.sap.sailing.gwt.ui.client.StringMessages; +import com.sap.sailing.gwt.ui.shared.courseCreation.MarkTemplateDTO; +import com.sap.sse.gwt.client.dialog.DataEntryDialog; + +public class ControlPointEditDialog extends DataEntryDialog { + private final StringMessages stringMessages; + + private final SuggestBox suggestMarkTemplate1; + private final SuggestBox suggestMarkTemplate2Optional; + private final SuggestBox suggestPassingInstruction; + + private MarkTemplateSuggestOracle markTemplateOracle; + + public ControlPointEditDialog(final SailingServiceAsync sailingServiceAsync, final StringMessages stringMessages, + ControlPointEditDTO courseTemplateToEdit, DialogCallback callback) { + super(stringMessages.edit() + " " + stringMessages.waypoints(), null, stringMessages.ok(), + stringMessages.cancel(), new Validator() { + @Override + public String getErrorMessage(ControlPointEditDTO valueToValidate) { + String result = null; + + if (valueToValidate.getPassingInstruction() == null) { + result = stringMessages.pleaseSelectAValidPassingInstruction(); + } else { + if (valueToValidate.getMarkTemplate1() == null) { + result = stringMessages.pleaseSelectAValidMarkTemplate(); + } + if (valueToValidate.getPassingInstruction().applicability[0] == 2 + && !valueToValidate.getMarkTemplate2().isPresent()) { + result = stringMessages.pleaseSelectAValidMarkTemplate() + " (2)"; + } + } + return result; + } + }, /* animationEnabled */true, callback); + this.ensureDebugId("CourseTemplateToEditEditDialog"); + this.stringMessages = stringMessages; + + markTemplateOracle = new MarkTemplateSuggestOracle(sailingServiceAsync, stringMessages); + suggestMarkTemplate1 = new SuggestBox(markTemplateOracle); + suggestMarkTemplate2Optional = new SuggestBox(markTemplateOracle); + + suggestPassingInstruction = new SuggestBox(new PassingInstructionSuggestOracle()); + + suggestPassingInstruction.getValueBox().addChangeHandler(e -> validateAndUpdate()); + suggestPassingInstruction.getValueBox().addKeyUpHandler(e -> validateAndUpdate()); + suggestPassingInstruction.getValueBox().addBlurHandler(e -> validateAndUpdate()); + suggestMarkTemplate2Optional.getValueBox().addChangeHandler(e -> validateAndUpdate()); + suggestMarkTemplate2Optional.getValueBox().addKeyUpHandler(e -> validateAndUpdate()); + suggestMarkTemplate2Optional.getValueBox().addBlurHandler(e -> validateAndUpdate()); + suggestMarkTemplate1.getValueBox().addChangeHandler(e -> validateAndUpdate()); + suggestMarkTemplate1.getValueBox().addKeyUpHandler(e -> validateAndUpdate()); + suggestMarkTemplate1.getValueBox().addBlurHandler(e -> validateAndUpdate()); + } + + @Override + protected FocusWidget getInitialFocusWidget() { + return suggestMarkTemplate1.getValueBox(); + } + + @Override + protected ControlPointEditDTO getResult() { + PassingInstruction passingInstruction = null; + try { + passingInstruction = PassingInstruction.valueOfIgnoringCase(suggestPassingInstruction.getValue()); + } catch (IllegalArgumentException e) { + // use null -> fail during validation + } + + final MarkTemplateDTO markTemplate1 = markTemplateOracle.fromString(suggestMarkTemplate1.getValue()); + final MarkTemplateDTO markTemplate2 = markTemplateOracle.fromString(suggestMarkTemplate2Optional.getValue()); + return new ControlPointEditDTO(markTemplate1, markTemplate2, passingInstruction); + } + + @Override + protected Widget getAdditionalWidget() { + final Grid result = new Grid(3, 2); + result.setWidget(0, 0, new Label(stringMessages.markTemplate())); + result.setWidget(0, 1, suggestMarkTemplate1); + result.setWidget(1, 0, new Label(stringMessages.markTemplate2Optional())); + result.setWidget(1, 1, suggestMarkTemplate2Optional); + result.setWidget(2, 0, new Label(stringMessages.passingInstructions())); + result.setWidget(2, 1, suggestPassingInstruction); + return result; + } + + public static class ControlPointEditDTO { + private MarkTemplateDTO markTemplate1; + private Optional markTemplate2; + private PassingInstruction passingInstruction; + + public ControlPointEditDTO() { + + } + + public ControlPointEditDTO(MarkTemplateDTO markTemplate1, MarkTemplateDTO markTemplate2, + PassingInstruction passingInstruction) { + super(); + this.markTemplate1 = markTemplate1; + this.markTemplate2 = Optional.ofNullable(markTemplate2); + this.passingInstruction = passingInstruction; + } + + public MarkTemplateDTO getMarkTemplate1() { + return markTemplate1; + } + + public Optional getMarkTemplate2() { + return markTemplate2; + } + + public PassingInstruction getPassingInstruction() { + return passingInstruction; + } + } + +} diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/coursecreation/CourseTemplateEditDialog.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/coursecreation/CourseTemplateEditDialog.java index a0b4324633c..e41e7235ec4 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/coursecreation/CourseTemplateEditDialog.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/coursecreation/CourseTemplateEditDialog.java @@ -1,20 +1,44 @@ package com.sap.sailing.gwt.ui.adminconsole.coursecreation; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collection; +import java.util.Collections; +import java.util.List; +import java.util.stream.Collectors; + +import com.google.gwt.cell.client.TextCell; +import com.google.gwt.core.client.GWT; +import com.google.gwt.user.cellview.client.CellTable; +import com.google.gwt.user.cellview.client.Column; +import com.google.gwt.user.client.ui.Button; import com.google.gwt.user.client.ui.FocusWidget; import com.google.gwt.user.client.ui.Grid; import com.google.gwt.user.client.ui.Label; import com.google.gwt.user.client.ui.TextBox; import com.google.gwt.user.client.ui.Widget; +import com.sap.sailing.gwt.ui.adminconsole.coursecreation.ControlPointEditDialog.ControlPointEditDTO; +import com.sap.sailing.gwt.ui.client.SailingServiceAsync; import com.sap.sailing.gwt.ui.client.StringMessages; import com.sap.sailing.gwt.ui.shared.courseCreation.CourseTemplateDTO; +import com.sap.sailing.gwt.ui.shared.courseCreation.MarkTemplateDTO; +import com.sap.sailing.gwt.ui.shared.courseCreation.WaypointTemplateDTO; +import com.sap.sse.gwt.adminconsole.AdminConsoleTableResources; +import com.sap.sse.gwt.client.celltable.BaseCelltable; import com.sap.sse.gwt.client.dialog.DataEntryDialog; public class CourseTemplateEditDialog extends DataEntryDialog { + private static AdminConsoleTableResources tableResources = GWT.create(AdminConsoleTableResources.class); + private final TextBox nameTextBox; private final StringMessages stringMessages; + private final Button addWaypointTemplate; - public CourseTemplateEditDialog(final StringMessages stringMessages, CourseTemplateDTO courseTemplateToEdit, - DialogCallback callback) { + private CellTable waypointTemplatesTable; + private Collection waypointTemplates = new ArrayList<>(); + + public CourseTemplateEditDialog(final SailingServiceAsync sailingService, final StringMessages stringMessages, + CourseTemplateDTO courseTemplateToEdit, DialogCallback callback) { super(stringMessages.edit() + " " + stringMessages.courseTemplates(), null, stringMessages.ok(), stringMessages.cancel(), new Validator() { @Override @@ -32,6 +56,56 @@ public class CourseTemplateEditDialog extends DataEntryDialog this.nameTextBox = createTextBox(courseTemplateToEdit.getName()); + addWaypointTemplate = new Button(stringMessages.add()); + addWaypointTemplate.addClickHandler(c -> { + ControlPointEditDialog dialog = new ControlPointEditDialog(sailingService, stringMessages, + new ControlPointEditDTO(), new DialogCallback() { + @Override + public void ok(ControlPointEditDTO editedObject) { + // create list with one or two elements based on passing instruction + final Collection markTemplates = editedObject + .getPassingInstruction().applicability[0] == 2 + ? Arrays.asList(editedObject.getMarkTemplate1(), + editedObject.getMarkTemplate2().get()) + : Collections.singletonList(editedObject.getMarkTemplate1()); + waypointTemplates + .add(new WaypointTemplateDTO(markTemplates, editedObject.getPassingInstruction())); + refreshWaypointsTable(); + } + + @Override + public void cancel() { + // nothing to do + } + }); + + dialog.show(); + }); + createWaypointTemplateTable(); + waypointTemplates.addAll(courseTemplateToEdit.getWaypointTemplates()); + refreshWaypointsTable(); + nameTextBox.addKeyUpHandler(e -> validateAndUpdate()); + } + + private void refreshWaypointsTable() { + waypointTemplatesTable.setRowCount(waypointTemplates.size()); + waypointTemplatesTable.setRowData(0, (List) waypointTemplates); + } + + private void createWaypointTemplateTable() { + waypointTemplatesTable = new BaseCelltable<>(1000, tableResources); + waypointTemplatesTable.setWidth("100%"); + + Column waypointTemplateColumn = new Column( + new TextCell()) { + @Override + public String getValue(WaypointTemplateDTO waypointTemplate) { + return waypointTemplate.getMarkTemplatesForControlPoint().stream().map(m -> m.getName()) + .collect(Collectors.joining("-")); + } + }; + waypointTemplatesTable.addColumn(waypointTemplateColumn, stringMessages.name()); + } @Override @@ -39,7 +113,6 @@ public class CourseTemplateEditDialog extends DataEntryDialog return nameTextBox; } - @Override protected CourseTemplateDTO getResult() { // TODO: implement @@ -51,6 +124,8 @@ public class CourseTemplateEditDialog extends DataEntryDialog Grid result = new Grid(6, 2); result.setWidget(0, 0, new Label(stringMessages.name())); result.setWidget(0, 1, nameTextBox); + result.setWidget(1, 0, addWaypointTemplate); + result.setWidget(1, 1, waypointTemplatesTable); return result; } diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/coursecreation/CourseTemplatePanel.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/coursecreation/CourseTemplatePanel.java index e96a3dc727d..8babb129507 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/coursecreation/CourseTemplatePanel.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/coursecreation/CourseTemplatePanel.java @@ -278,7 +278,8 @@ public class CourseTemplatePanel extends FlowPanel { } void openEditCourseTemplateDialog(final CourseTemplateDTO originalCourseTemplate) { - final CourseTemplateEditDialog dialog = new CourseTemplateEditDialog(stringMessages, originalCourseTemplate, + final CourseTemplateEditDialog dialog = new CourseTemplateEditDialog(sailingService, stringMessages, + originalCourseTemplate, new DialogCallback() { @Override public void ok(CourseTemplateDTO courseTemplate) { diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/coursecreation/MarkTemplateSuggestOracle.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/coursecreation/MarkTemplateSuggestOracle.java new file mode 100644 index 00000000000..e4800edd916 --- /dev/null +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/coursecreation/MarkTemplateSuggestOracle.java @@ -0,0 +1,90 @@ +package com.sap.sailing.gwt.ui.adminconsole.coursecreation; + +import java.util.ArrayList; +import java.util.Collection; +import java.util.stream.Collectors; + +import com.google.gwt.user.client.Window; +import com.google.gwt.user.client.rpc.AsyncCallback; +import com.sap.sailing.gwt.ui.client.SailingServiceAsync; +import com.sap.sailing.gwt.ui.shared.courseCreation.MarkTemplateDTO; +import com.sap.sse.common.Util; +import com.sap.sse.gwt.client.suggestion.AbstractListSuggestOracle; +import com.sap.sse.security.ui.client.i18n.StringMessages; + +/** + * Suggest oracle for use in {@link CourseTemplateEditDialog} which oracles the visible mark templates. + */ +public class MarkTemplateSuggestOracle extends AbstractListSuggestOracle { + + private final Collection allTemplates = new ArrayList<>(); + private final SailingServiceAsync sailingServiceAsync; + private final StringMessages stringMessages; + + public MarkTemplateSuggestOracle(final SailingServiceAsync sailingServiceAsync, + final StringMessages stringMessages) { + this.sailingServiceAsync = sailingServiceAsync; + this.stringMessages = stringMessages; + refresh(); + } + + public void refresh() { + sailingServiceAsync.getMarkTemplates(new AsyncCallback>() { + + @Override + public void onFailure(Throwable caught) { + Window.alert(stringMessages.couldNotLoadMarkTemplates()); + } + + @Override + public void onSuccess(Iterable result) { + allTemplates.clear(); + Util.addAll(result, allTemplates); + setSelectableValues(allTemplates); + } + }); + } + + /** + * Clears the oracle suggestions, adds all existing templates and finally removes the existing templates from the + * oracle. + */ + public void resetAndRemoveExistingTemplates(Iterable existingTemplates) { + Collection templates = new ArrayList<>(allTemplates); + templates = templates.stream().filter(u -> !Util.contains(existingTemplates, u.getName())) + .collect(Collectors.toList()); + super.setSelectableValues(templates); + } + + /** + * @returns a {@link MarkTemplateDTO}-object from the current selectable values of this oracle, which is associated + * with the given template name. + */ + public MarkTemplateDTO fromString(final String templateName) { + if (this.getSelectableValues() == null) { + throw new NullPointerException("Mark Templates are not loaded yet or could not be loaded."); + } + + for (MarkTemplateDTO template : this.getSelectableValues()) { + if (template.getName().equals(templateName)) { + return template; + } + } + return null; + } + + @Override + protected String createSuggestionKeyString(MarkTemplateDTO value) { + return value.getName(); + } + + @Override + protected String createSuggestionAdditionalDisplayString(MarkTemplateDTO value) { + return null; + } + + @Override + protected Iterable getMatchingStrings(MarkTemplateDTO value) { + return this.getSelectableValues().stream().map(r -> createSuggestionKeyString(r)).collect(Collectors.toList()); + } +} diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/coursecreation/PassingInstructionSuggestOracle.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/coursecreation/PassingInstructionSuggestOracle.java new file mode 100644 index 00000000000..903c86c4468 --- /dev/null +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/coursecreation/PassingInstructionSuggestOracle.java @@ -0,0 +1,61 @@ +package com.sap.sailing.gwt.ui.adminconsole.coursecreation; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collection; +import java.util.stream.Collectors; + +import com.sap.sailing.domain.common.PassingInstruction; +import com.sap.sse.common.Util; +import com.sap.sse.gwt.client.suggestion.AbstractListSuggestOracle; + +/** + * Suggest oracle for use in {@link ControlPointEditDialog} which oracles the available passing instructions. + */ +public class PassingInstructionSuggestOracle extends AbstractListSuggestOracle { + + private final Collection allPassingInstructions; + + public PassingInstructionSuggestOracle() { + allPassingInstructions = Arrays.asList(PassingInstruction.relevantValues()); + } + + + /** + * Clears the oracle suggestions, adds all existing passing instructions and finally removes the existing passing + * instructions from the oracle. + */ + public void resetAndRemoveExistingPassingInstructions(Iterable passingInstructions) { + Collection users = new ArrayList<>(allPassingInstructions); + users = users.stream().filter(u -> !Util.contains(passingInstructions, u.name())).collect(Collectors.toList()); + super.setSelectableValues(users); + } + + /** + * @returns a {@link PassingInstruction}-object from the current selectable values of this oracle, which is + * associated with the given name. + */ + public PassingInstruction fromString(final String passingInstructionName) { + for (PassingInstruction instruction : this.getSelectableValues()) { + if (instruction.name().equals(passingInstructionName)) { + return instruction; + } + } + return null; + } + + @Override + protected String createSuggestionKeyString(PassingInstruction value) { + return value.name(); + } + + @Override + protected String createSuggestionAdditionalDisplayString(PassingInstruction value) { + return null; + } + + @Override + protected Iterable getMatchingStrings(PassingInstruction value) { + return this.getSelectableValues().stream().map(r -> createSuggestionKeyString(r)).collect(Collectors.toList()); + } +} diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages.java index ae9d467ce77..a1d43406391 100755 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages.java @@ -2270,8 +2270,12 @@ public interface StringMessages extends com.sap.sse.gwt.client.StringMessages, String markTemplates(); String filterMarkPropertiesByName(); String markProperties(); - String filterCourseTemplateByName(); - String courseTemplates(); + String markTemplate(); + String markTemplate2Optional(); + + String pleaseSelectAValidPassingInstruction(); + + String pleaseSelectAValidMarkTemplate(); } diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages.properties b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages.properties index 1b0cd622e65..2daee3ed483 100755 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages.properties +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages.properties @@ -2275,4 +2275,8 @@ markTemplates=Mark Templates filterMarkPropertiesByName=Filter mark properties markProperties=Mark Properties filterCourseTemplateByName=Filter course templates -courseTemplates=Course Templates \ No newline at end of file +courseTemplates=Course Templates +markTemplate=Mark Template 1 +markTemplate2Optional=Mark Template 2 (optional) +pleaseSelectAValidMarkTemplate=Please select a valid mark template +pleaseSelectAValidPassingInstruction=Please select a valid passing instruction \ No newline at end of file diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_de.properties b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_de.properties index 93c02f61a41..b507444d2e1 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_de.properties +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_de.properties @@ -2262,9 +2262,13 @@ startMode=Startmodus gateOpeningTime=Torstart Öffnungsdauer protestTimeInMinutes=Protestzeit in Minuten courseCreation=Kurserstellung -filterMarkTemplateByName=Markvorlagen filter -markTemplates=Markvorlagen -filterMarkPropertiesByName=Markeigenschaften filter -markProperties=Markeigenschaften +filterMarkTemplateByName=Bahnmarkenvorlagen filter +markTemplates=Bahnmarkenvorlagen +filterMarkPropertiesByName=Bahnmarkeneigenschaften filter +markProperties=Bahnmarkeneigenschaften filterCourseTemplateByName=Kursvorlagen filtern -courseTemplates=Kursvorlagen \ No newline at end of file +courseTemplates=Kursvorlagen +markTemplate=Bahnmarkenvorlage 1 +markTemplate2Optional=Bahnmarkenvorlage 2 (optional) +pleaseSelectAValidMarkTemplate=Bitte eine gültige Bahnmarkenvorlage auswählen +pleaseSelectAValidPassingInstruction=Bitte eine gültige Passieranweisung auswählen \ No newline at end of file diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/courseCreation/WaypointTemplateDTO.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/courseCreation/WaypointTemplateDTO.java index ffe52c24ef8..3ebfd7ebf1a 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/courseCreation/WaypointTemplateDTO.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/courseCreation/WaypointTemplateDTO.java @@ -11,6 +11,10 @@ public class WaypointTemplateDTO { private PassingInstruction passingInstruction; + public WaypointTemplateDTO() { + + } + public WaypointTemplateDTO(Iterable markTemplatesForControlPoint, PassingInstruction passingInstruction) { super(); diff --git a/java/com.sap.sse.security.ui/src/main/java/com/sap/sse/security/ui/client/i18n/StringMessages.java b/java/com.sap.sse.security.ui/src/main/java/com/sap/sse/security/ui/client/i18n/StringMessages.java index 6bf91204949..14c95860325 100755 --- a/java/com.sap.sse.security.ui/src/main/java/com/sap/sse/security/ui/client/i18n/StringMessages.java +++ b/java/com.sap.sse.security.ui/src/main/java/com/sap/sse/security/ui/client/i18n/StringMessages.java @@ -185,4 +185,5 @@ public interface StringMessages extends com.sap.sse.gwt.client.StringMessages { String editRolesAndPermissionsForUser(String username); String permissionType(); + String couldNotLoadMarkTemplates(); } diff --git a/java/com.sap.sse.security.ui/src/main/java/com/sap/sse/security/ui/client/i18n/StringMessages.properties b/java/com.sap.sse.security.ui/src/main/java/com/sap/sse/security/ui/client/i18n/StringMessages.properties index 7dce1118776..be8a265063d 100644 --- a/java/com.sap.sse.security.ui/src/main/java/com/sap/sse/security/ui/client/i18n/StringMessages.properties +++ b/java/com.sap.sse.security.ui/src/main/java/com/sap/sse/security/ui/client/i18n/StringMessages.properties @@ -189,4 +189,5 @@ filterPermission = Filter permission permission=Permission nullUserGroup= editRolesAndPermissionsForUser=Edit roles and permissions for user {0} -permissionType: Permission Type \ No newline at end of file +permissionType: Permission Type +couldNotLoadMarkTemplates=Could not load mark templates. \ No newline at end of file diff --git a/java/com.sap.sse.security.ui/src/main/java/com/sap/sse/security/ui/client/i18n/StringMessages_de.properties b/java/com.sap.sse.security.ui/src/main/java/com/sap/sse/security/ui/client/i18n/StringMessages_de.properties index e446920b064..8c70d7f22a8 100644 --- a/java/com.sap.sse.security.ui/src/main/java/com/sap/sse/security/ui/client/i18n/StringMessages_de.properties +++ b/java/com.sap.sse.security.ui/src/main/java/com/sap/sse/security/ui/client/i18n/StringMessages_de.properties @@ -189,4 +189,5 @@ filterPermission = Berechtigungen filtern permission=Berechtigung nullUserGroup= editRolesAndPermissionsForUser=Rollen und Berechtigungen für Benutzer {0} editieren -permissionType=Berechtigungstyp \ No newline at end of file +permissionType=Berechtigungstyp +couldNotLoadMarkTemplates=Markvorlagen konnten nicht geladen werden. \ No newline at end of file