From 7508b7cceedb2fa1730245e4e0c9866c912c74f5 Mon Sep 17 00:00:00 2001 From: Fredrik Teschke Date: Thu, 24 Apr 2014 00:53:38 +0200 Subject: [PATCH] defined passing instruction applicability to 1/2 mark-controlpoints --- .../domain/common/PassingInstruction.java | 25 ++++++++++++----- .../adminconsole/CourseManagementWidget.java | 27 ++++++++++++------- 2 files changed, 36 insertions(+), 16 deletions(-) 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 selection = selectionModel.getSelectedSet(); if (selection.size() == 1) { controlPoint = selectionModel.getSelectedSet().iterator().next(); - passingInstructions.setEnabled(true); } else if (selection.size() == 2) { Iterator i = selectionModel.getSelectedSet().iterator(); MarkDTO first = i.next(); @@ -139,13 +150,11 @@ public abstract class CourseManagementWidget implements IsWidget { } gateName = left.getName().replaceFirst(REGEX_FOR_LEFT, ""); controlPoint = new GateDTO(/* generate UUID on the server */ null, gateName, left, right); - - passingInstructions.setSelectedIndex(0); - passingInstructions.setEnabled(false); } - PassingInstruction passingInstruction = PassingInstruction.valueOf( - passingInstructions.getValue(passingInstructions.getSelectedIndex())); + PassingInstruction passingInstruction = + passingInstructions.getSelectedIndex() == -1 ? PassingInstruction.None : + PassingInstruction.valueOf(passingInstructions.getValue(passingInstructions.getSelectedIndex())); return new Pair(controlPoint, passingInstruction); }