diff --git a/java/com.sap.sailing.domain.common/src/com/sap/sailing/domain/common/PassingInstruction.java b/java/com.sap.sailing.domain.common/src/com/sap/sailing/domain/common/PassingInstruction.java index 94f2cb097de..946bc9657f3 100644 --- a/java/com.sap.sailing.domain.common/src/com/sap/sailing/domain/common/PassingInstruction.java +++ b/java/com.sap.sailing.domain.common/src/com/sap/sailing/domain/common/PassingInstruction.java @@ -12,13 +12,13 @@ package com.sap.sailing.domain.common; */ public enum PassingInstruction { - None, - Port, - Starboard, - Gate, - Line, - Offset, - FixedBearing; + None(1, 2), + Port(1), + Starboard(1), + Gate(2), + Line(2), + Offset(1), + FixedBearing(1); public static PassingInstruction[] relevantValues() { PassingInstruction[] uiValues = new PassingInstruction[PassingInstruction.values().length - 1]; @@ -40,4 +40,15 @@ public enum PassingInstruction { return null; } + /** + * Denotes for which types of {@code ControlPoints} (defined by the number of marks they are made up of) + * this passing instruction is applicable.
+ * E.g. {@code [1,2]} denotes that the passing instruction is applicable for {@code ControlPoints} with either one
+ * or two marks.
+ */
+ public final int[] applicability;
+
+ private PassingInstruction(int... applicability) {
+ this.applicability = applicability;
+ }
}
\ No newline at end of file
diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/CourseManagementWidget.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/CourseManagementWidget.java
index 4f94e042713..0ff11ee3117 100644
--- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/CourseManagementWidget.java
+++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/CourseManagementWidget.java
@@ -101,6 +101,7 @@ public abstract class CourseManagementWidget implements IsWidget {
selectionModel.addSelectionChangeHandler(new Handler() {
@Override
public void onSelectionChange(SelectionChangeEvent event) {
+ updatePassingInstructions();
validate();
}
});
@@ -109,10 +110,21 @@ public abstract class CourseManagementWidget implements IsWidget {
marksTable.getDataProvider().getList().addAll(marks);
passingInstructions = createListBox(false);
- passingInstructions.insertItem(PassingInstruction.None.name(), 0);
- int i = 1;
+ updatePassingInstructions();
+ }
+
+ private void updatePassingInstructions() {
+ passingInstructions.clear();
+
+ int numSelectedMarks = selectionModel.getSelectedSet().size();
+ int i = 0;
+ passingInstructions.insertItem(PassingInstruction.None.name(), i++);
for (PassingInstruction pi : PassingInstruction.relevantValues()) {
- passingInstructions.insertItem(pi.name(), i++);
+ for (int numApplicableMarks : pi.applicability) {
+ if (numApplicableMarks == numSelectedMarks) {
+ passingInstructions.insertItem(pi.name(), i++);
+ }
+ }
}
}
@@ -122,7 +134,6 @@ public abstract class CourseManagementWidget implements IsWidget {
Set