mirror of
https://github.com/eclipse-sailing-analytics/sailing-analytics.git
synced 2026-10-14 08:11:00 +00:00
Changed ManeuvercountRaceColumn to ExpandableSortabeColumn
This commit is contained in:
1 parent
b53a4b42e8
commit
18b2cb83a5
4 files changed
+165
-51
No files matched your search
+15
-4
@@ -84,6 +84,8 @@ public class LeaderboardPanel extends FormPanel implements TimeListener, PlaySta
|
||||
private LeaderboardDAO leaderboard;
|
||||
|
||||
private final RankColumn rankColumn;
|
||||
|
||||
private final List<DetailType> selectedManeuverDetails;
|
||||
|
||||
private final List<DetailType> selectedLegDetails;
|
||||
|
||||
@@ -126,7 +128,7 @@ public class LeaderboardPanel extends FormPanel implements TimeListener, PlaySta
|
||||
|
||||
@Override
|
||||
public void onClick(ClickEvent event) {
|
||||
new LeaderboardSettingsPanel(Collections.unmodifiableList(selectedLegDetails),
|
||||
new LeaderboardSettingsPanel(Collections.unmodifiableList(selectedManeuverDetails), Collections.unmodifiableList(selectedLegDetails),
|
||||
Collections.unmodifiableList(selectedRaceDetails), /* All races to select */
|
||||
leaderboard.getRaceColumnNameList(), selectedRaceColumns, timer.getDelayBetweenAutoAdvancesInMilliseconds(),
|
||||
stringConstants.leaderboardSettings(), stringConstants.selectLegDetails(), stringConstants.ok(),
|
||||
@@ -158,6 +160,8 @@ public class LeaderboardPanel extends FormPanel implements TimeListener, PlaySta
|
||||
}
|
||||
}
|
||||
}
|
||||
selectedManeuverDetails.clear();
|
||||
selectedManeuverDetails.addAll(result.getManeuverDetailsToShow());
|
||||
selectedLegDetails.clear();
|
||||
selectedLegDetails.addAll(result.getLegDetailsToShow());
|
||||
selectedRaceDetails.clear();
|
||||
@@ -421,7 +425,7 @@ public class LeaderboardPanel extends FormPanel implements TimeListener, PlaySta
|
||||
|
||||
public static DetailType[] getAvailableRaceDetailColumnTypes() {
|
||||
return new DetailType[] { DetailType.RACE_AVERAGE_SPEED_OVER_GROUND_IN_KNOTS,
|
||||
DetailType.RACE_DISTANCE_TRAVELED, DetailType.RACE_GAP_TO_LEADER_IN_SECONDS, DetailType.RACE_MANEUVERS };
|
||||
DetailType.RACE_DISTANCE_TRAVELED, DetailType.RACE_GAP_TO_LEADER_IN_SECONDS, DetailType.NUMBER_OF_MANEUVERS };
|
||||
}
|
||||
|
||||
private class TextRaceColumn extends RaceColumn<String> implements RaceNameProvider {
|
||||
@@ -480,9 +484,10 @@ public class LeaderboardPanel extends FormPanel implements TimeListener, PlaySta
|
||||
result.put(DetailType.RACE_GAP_TO_LEADER_IN_SECONDS, new FormattedDoubleLegDetailColumn(
|
||||
stringConstants.gapToLeaderInSeconds(), stringConstants.gapToLeaderInSecondsUnit(), new RaceGapToLeaderInSeconds(), 0, getLeaderboardPanel()
|
||||
.getLeaderboardTable(), LEG_COLUMN_HEADER_STYLE, LEG_COLUMN_STYLE));
|
||||
result.put(DetailType.RACE_MANEUVERS, new ManeuverCountRaceColumn(
|
||||
|
||||
/*result.put(DetailType.RACE_MANEUVERS, new ManeuverCountRaceColumn(
|
||||
stringConstants.numberOfManeuvers(), getLeaderboardPanel()
|
||||
.getLeaderboardTable(), this, LEG_COLUMN_HEADER_STYLE, LEG_COLUMN_STYLE, stringConstants));
|
||||
.getLeaderboardTable(), this, LEG_COLUMN_HEADER_STYLE, LEG_COLUMN_STYLE, stringConstants));*/
|
||||
return result;
|
||||
}
|
||||
|
||||
@@ -493,6 +498,7 @@ public class LeaderboardPanel extends FormPanel implements TimeListener, PlaySta
|
||||
result.add(column);
|
||||
}
|
||||
if (isExpanded()) {
|
||||
result.add(getManeuverCountRaceColumn());
|
||||
// it is important to re-use existing LegColumn objects because
|
||||
// removing the columns from the table
|
||||
// is based on column identity
|
||||
@@ -513,6 +519,10 @@ public class LeaderboardPanel extends FormPanel implements TimeListener, PlaySta
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
private ManeuverCountRaceColumn getManeuverCountRaceColumn(){
|
||||
return new ManeuverCountRaceColumn(getLeaderboardPanel(), getRaceName(), stringConstants, LeaderboardPanel.this.selectedManeuverDetails, LEG_COLUMN_HEADER_STYLE, LEG_COLUMN_STYLE);
|
||||
}
|
||||
|
||||
private LegColumn getLegColumn(int legNumber) {
|
||||
LegColumn result;
|
||||
@@ -721,6 +731,7 @@ public class LeaderboardPanel extends FormPanel implements TimeListener, PlaySta
|
||||
this.selectedLegDetails.add(DetailType.RANK_GAIN);
|
||||
this.selectedRaceDetails = new ArrayList<DetailType>();
|
||||
this.selectedRaceColumns = new ArrayList<String>();
|
||||
this.selectedManeuverDetails = new ArrayList<DetailType>();
|
||||
delayInMilliseconds = 0l;
|
||||
timer = new Timer(/* delayBetweenAutoAdvancesInMilliseconds */ 3000l);
|
||||
timer.setDelay(getDelayInMilliseconds()); // set time/delay before
|
||||
|
||||
+30
-3
@@ -18,9 +18,11 @@ import com.sap.sailing.gwt.ui.shared.DetailType;
|
||||
public class LeaderboardSettingsPanel extends DataEntryDialog<Result> {
|
||||
private final List<String> raceColumnSelection;
|
||||
private final List<String> raceAllRaceColumns;
|
||||
private final List<DetailType> maneuverDetailSelection;
|
||||
private final List<DetailType> legDetailSelection;
|
||||
private final List<DetailType> raceDetailSelection;
|
||||
private final Map<String, CheckBox> raceColumnCheckboxes;
|
||||
private final Map<DetailType, CheckBox> maneuverDetailCheckboxes;
|
||||
private final Map<DetailType, CheckBox> legDetailCheckboxes;
|
||||
private final Map<DetailType, CheckBox> raceDetailCheckboxes;
|
||||
private final StringConstants stringConstants;
|
||||
@@ -29,17 +31,23 @@ public class LeaderboardSettingsPanel extends DataEntryDialog<Result> {
|
||||
|
||||
public static class Result {
|
||||
private final List<String> raceColumnsToShow;
|
||||
private final List<DetailType> maneuverDetailsToShow;
|
||||
private final List<DetailType> legDetailsToShow;
|
||||
private final List<DetailType> raceDetailsToShow;
|
||||
private final long delayBetweenAutoAdvancesInMilliseconds;
|
||||
private final long delayInMilliseconds;
|
||||
|
||||
public Result(List<DetailType> legDetailsToShow, List<DetailType> raceDetailsToShow, List<String> raceColumnsToShow, long delayBetweenAutoAdvancesInMilliseconds, long delayInMilliseconds) {
|
||||
public Result(List<DetailType> meneuverDetailsToShow, List<DetailType> legDetailsToShow, List<DetailType> raceDetailsToShow, List<String> raceColumnsToShow, long delayBetweenAutoAdvancesInMilliseconds, long delayInMilliseconds) {
|
||||
this.legDetailsToShow = legDetailsToShow;
|
||||
this.raceDetailsToShow = raceDetailsToShow;
|
||||
this.raceColumnsToShow = raceColumnsToShow;
|
||||
this.delayBetweenAutoAdvancesInMilliseconds = delayBetweenAutoAdvancesInMilliseconds;
|
||||
this.delayInMilliseconds = delayInMilliseconds;
|
||||
this.maneuverDetailsToShow = meneuverDetailsToShow;
|
||||
}
|
||||
|
||||
public List<DetailType> getManeuverDetailsToShow() {
|
||||
return maneuverDetailsToShow;
|
||||
}
|
||||
|
||||
public List<DetailType> getLegDetailsToShow() {
|
||||
@@ -63,17 +71,19 @@ public class LeaderboardSettingsPanel extends DataEntryDialog<Result> {
|
||||
}
|
||||
}
|
||||
|
||||
public LeaderboardSettingsPanel(List<DetailType> legDetailSelection, List<DetailType> raceDetailSelection, List<String> raceAllRaceColumns, List<String> raceColumnSelection,
|
||||
public LeaderboardSettingsPanel(List<DetailType> maneuverDetailSelection, List<DetailType> legDetailSelection, List<DetailType> raceDetailSelection, List<String> raceAllRaceColumns, List<String> raceColumnSelection,
|
||||
long delayBetweenAutoAdvancesInMilliseconds, String title, String message,
|
||||
String okButtonName,
|
||||
String cancelButtonName, com.sap.sailing.gwt.ui.client.DataEntryDialog.Validator<Result> validator, AsyncCallback<Result> callback, StringConstants stringConstants, long delayInMilliseconds) {
|
||||
super(title, message, okButtonName, cancelButtonName, validator, callback);
|
||||
this.maneuverDetailSelection = maneuverDetailSelection;
|
||||
this.raceColumnSelection = raceColumnSelection;
|
||||
this.raceAllRaceColumns = raceAllRaceColumns;
|
||||
this.legDetailSelection = legDetailSelection;
|
||||
this.raceDetailSelection = raceDetailSelection;
|
||||
this.stringConstants = stringConstants;
|
||||
raceColumnCheckboxes = new LinkedHashMap<String, CheckBox>();
|
||||
maneuverDetailCheckboxes = new LinkedHashMap<DetailType, CheckBox>();
|
||||
legDetailCheckboxes = new LinkedHashMap<DetailType, CheckBox>();
|
||||
raceDetailCheckboxes = new LinkedHashMap<DetailType, CheckBox>();
|
||||
delayBetweenAutoAdvancesInSecondsBox = createIntegerBox((int) delayBetweenAutoAdvancesInMilliseconds/1000, 4);
|
||||
@@ -83,6 +93,17 @@ public class LeaderboardSettingsPanel extends DataEntryDialog<Result> {
|
||||
@Override
|
||||
protected Widget getAdditionalWidget() {
|
||||
HorizontalPanel hp = new HorizontalPanel();
|
||||
VerticalPanel vpMeneuvers = new VerticalPanel();
|
||||
vpMeneuvers.setSpacing(5);
|
||||
vpMeneuvers.add(new Label(stringConstants.maneuverTypes()));
|
||||
List<DetailType> currentMeneuverDetailSelection = maneuverDetailSelection;
|
||||
for (DetailType detailType : ManeuverCountRaceColumn.getAvailableManeuverDetailColumnTypes()) {
|
||||
CheckBox checkbox = createCheckbox(detailType.toString(stringConstants));
|
||||
checkbox.setValue(currentMeneuverDetailSelection.contains(detailType));
|
||||
maneuverDetailCheckboxes.put(detailType, checkbox);
|
||||
vpMeneuvers.add(checkbox);
|
||||
}
|
||||
hp.add(vpMeneuvers);
|
||||
VerticalPanel vpLeft = new VerticalPanel();
|
||||
vpLeft.setSpacing(5);
|
||||
VerticalPanel vpRight = new VerticalPanel();
|
||||
@@ -126,6 +147,12 @@ public class LeaderboardSettingsPanel extends DataEntryDialog<Result> {
|
||||
|
||||
@Override
|
||||
protected Result getResult() {
|
||||
List<DetailType> maneuverDetailsToShow = new ArrayList<DetailType>();
|
||||
for (Map.Entry<DetailType, CheckBox> entry : maneuverDetailCheckboxes.entrySet()) {
|
||||
if (entry.getValue().getValue()) {
|
||||
maneuverDetailsToShow.add(entry.getKey());
|
||||
}
|
||||
}
|
||||
List<DetailType> raceDetailsToShow = new ArrayList<DetailType>();
|
||||
for (Map.Entry<DetailType, CheckBox> entry : raceDetailCheckboxes.entrySet()) {
|
||||
if (entry.getValue().getValue()) {
|
||||
@@ -146,7 +173,7 @@ public class LeaderboardSettingsPanel extends DataEntryDialog<Result> {
|
||||
}
|
||||
Integer delayBetweenAutoAdvancesValue = delayBetweenAutoAdvancesInSecondsBox.getValue();
|
||||
Integer delayInSecondsValue = delayInSecondsBox.getValue();
|
||||
return new Result(legDetailsToShow, raceDetailsToShow, raceColumnsToShow, 1000*(delayBetweenAutoAdvancesValue==null?0:delayBetweenAutoAdvancesValue.longValue()),
|
||||
return new Result(maneuverDetailsToShow, legDetailsToShow, raceDetailsToShow, raceColumnsToShow, 1000*(delayBetweenAutoAdvancesValue==null?0:delayBetweenAutoAdvancesValue.longValue()),
|
||||
1000*(delayInSecondsValue==null?0:delayInSecondsValue.longValue()));
|
||||
}
|
||||
|
||||
|
||||
+107
-41
@@ -1,50 +1,62 @@
|
||||
package com.sap.sailing.gwt.ui.client;
|
||||
|
||||
import com.google.gwt.user.cellview.client.CellTable;
|
||||
import java.util.Comparator;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import javax.xml.soap.Detail;
|
||||
|
||||
import com.google.gwt.cell.client.TextCell;
|
||||
import com.google.gwt.safehtml.shared.SafeHtml;
|
||||
import com.google.gwt.user.cellview.client.Header;
|
||||
import com.sap.sailing.gwt.ui.client.LegDetailColumn.LegDetailField;
|
||||
import com.sap.sailing.gwt.ui.shared.DetailType;
|
||||
import com.sap.sailing.gwt.ui.shared.LeaderboardEntryDAO;
|
||||
import com.sap.sailing.gwt.ui.shared.LeaderboardRowDAO;
|
||||
import com.sap.sailing.gwt.ui.shared.LegEntryDAO;
|
||||
import com.sap.sailing.gwt.ui.shared.Triple;
|
||||
|
||||
public class ManeuverCountRaceColumn extends FormattedDoubleLegDetailColumn {
|
||||
public class ManeuverCountRaceColumn extends ExpandableSortableColumn<String> {
|
||||
|
||||
private final StringConstants stringConstants;
|
||||
private final RaceNameProvider raceNameProvider;
|
||||
private final String raceName;
|
||||
|
||||
private final String headerStyle;
|
||||
private final String columnStyle;
|
||||
|
||||
public ManeuverCountRaceColumn(String title, CellTable<LeaderboardRowDAO> leaderboardTable,
|
||||
RaceNameProvider raceNameProvider, String headerStyle, String columnStyle, StringConstants stringConstants) {
|
||||
super(title, /*unit*/null, /* field */ null, /* decimals */ 0, leaderboardTable, headerStyle, columnStyle);
|
||||
this.stringConstants = stringConstants;
|
||||
this.raceNameProvider = raceNameProvider;
|
||||
}
|
||||
private abstract class AbstractManeuverDetailField<T extends Comparable<?>> implements LegDetailField<T> {
|
||||
public T get(LeaderboardRowDAO row) {
|
||||
LeaderboardEntryDAO fieldsForRace = row.fieldsByRaceName.get(getRaceName());
|
||||
if (fieldsForRace != null && fieldsForRace.legDetails != null) {
|
||||
for (LegEntryDAO legDetail : fieldsForRace.legDetails) {
|
||||
if (legDetail != null) {
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
LeaderboardEntryDAO entry = row.fieldsByRaceName.get(raceName);
|
||||
if(entry == null){
|
||||
return null;
|
||||
}else{
|
||||
return getFromNonNullEntry(entry);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
protected String getTitle(LeaderboardRowDAO row) {
|
||||
Triple<Integer, Integer, Integer> tacksJibesAndPenaltyCircles = getTotalNumberOfTacksJibesAndPenaltyCircles(row);
|
||||
StringBuilder result = new StringBuilder();
|
||||
if (tacksJibesAndPenaltyCircles.getA() != null) {
|
||||
result.append(tacksJibesAndPenaltyCircles.getA());
|
||||
result.append(" ");
|
||||
result.append(stringConstants.tacks());
|
||||
}
|
||||
if (tacksJibesAndPenaltyCircles.getB() != null) {
|
||||
if (result.length() > 0) {
|
||||
result.append(", ");
|
||||
}
|
||||
result.append(tacksJibesAndPenaltyCircles.getB());
|
||||
result.append(" ");
|
||||
result.append(stringConstants.jibes());
|
||||
}
|
||||
if (tacksJibesAndPenaltyCircles.getC() != null) {
|
||||
if (result.length() > 0) {
|
||||
result.append(", ");
|
||||
}
|
||||
result.append(tacksJibesAndPenaltyCircles.getC());
|
||||
result.append(" ");
|
||||
result.append(stringConstants.penaltyCircles());
|
||||
}
|
||||
return result.toString();
|
||||
protected abstract T getFromNonNullEntry(LegEntryDAO entry);
|
||||
}
|
||||
|
||||
public ManeuverCountRaceColumn(LeaderboardPanel leaderboardPanel, String raceName, StringConstants stringConstants,
|
||||
List<DetailType> maneuverDetailSelection, String headerStyle, String columnStylee) {
|
||||
super(leaderboardPanel, /* expandable */true /* all legs have details */, new TextCell(), stringConstants,
|
||||
headerStyle, columnStylee, maneuverDetailSelection);
|
||||
this.stringConstants = stringConstants;
|
||||
this.raceName = raceName;
|
||||
this.headerStyle = headerStyle;
|
||||
this.columnStyle = columnStylee;
|
||||
}
|
||||
|
||||
private Triple<Integer, Integer, Integer> getTotalNumberOfTacksJibesAndPenaltyCircles(LeaderboardRowDAO row) {
|
||||
Integer totalNumberOfTacks = null;
|
||||
Integer totalNumberOfJibes = null;
|
||||
@@ -77,13 +89,44 @@ public class ManeuverCountRaceColumn extends FormattedDoubleLegDetailColumn {
|
||||
}
|
||||
}
|
||||
}
|
||||
return new Triple<Integer, Integer, Integer>(totalNumberOfTacks, totalNumberOfJibes, totalNumberOfPenaltyCircles);
|
||||
return new Triple<Integer, Integer, Integer>(totalNumberOfTacks, totalNumberOfJibes,
|
||||
totalNumberOfPenaltyCircles);
|
||||
}
|
||||
|
||||
private String getRaceName() {
|
||||
return raceName;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected Double getFieldValue(LeaderboardRowDAO row) {
|
||||
public Header<SafeHtml> getHeader() {
|
||||
SortableExpandableColumnHeader result = new SortableExpandableColumnHeader(/* title */ stringConstants.maneuverTypes(),
|
||||
/* iconURL */ null, getLeaderboardPanel(), this, stringConstants);
|
||||
return result;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Comparator<LeaderboardRowDAO> getComparator() {
|
||||
return new Comparator<LeaderboardRowDAO>() {
|
||||
@Override
|
||||
public int compare(LeaderboardRowDAO o1, LeaderboardRowDAO o2) {
|
||||
boolean ascending = isSortedAscendingForThisColumn(getLeaderboardPanel().getLeaderboardTable());
|
||||
if(o1 != null && o2 != null){
|
||||
String val1 = getValue(o1);
|
||||
String val2 = getValue(o2);
|
||||
if(val1!="" && val1 != null && val2 != "" && val2 != null){
|
||||
int diff = Integer.parseInt(val2) - Integer.parseInt(val1);
|
||||
return ascending ? diff : -diff;
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getValue(LeaderboardRowDAO object) {
|
||||
Double result = null;
|
||||
Triple<Integer, Integer, Integer> tacksJibesAndPenalties = getTotalNumberOfTacksJibesAndPenaltyCircles(row);
|
||||
Triple<Integer, Integer, Integer> tacksJibesAndPenalties = getTotalNumberOfTacksJibesAndPenaltyCircles(object);
|
||||
Integer totalNumberOfTacks = tacksJibesAndPenalties.getA();
|
||||
Integer totalNumberOfJibes = tacksJibesAndPenalties.getB();
|
||||
Integer totalNumberOfPenaltyCircles = tacksJibesAndPenalties.getC();
|
||||
@@ -104,11 +147,34 @@ public class ManeuverCountRaceColumn extends FormattedDoubleLegDetailColumn {
|
||||
result += (double) totalNumberOfPenaltyCircles;
|
||||
}
|
||||
}
|
||||
if(result==null){
|
||||
return "";
|
||||
}else{
|
||||
return result.toString();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
protected Map<DetailType, SortableColumn<LeaderboardRowDAO, ?>> getDetailColumnMap(
|
||||
LeaderboardPanel leaderboardPanel, StringConstants stringConstants, String detailHeaderStyle,
|
||||
String detailColumnStyle) {
|
||||
Map<DetailType, SortableColumn<LeaderboardRowDAO, ?>> result = new HashMap<DetailType, SortableColumn<LeaderboardRowDAO, ?>>();
|
||||
result.put(DetailType.HEAD_UP, new )
|
||||
return result;
|
||||
}
|
||||
|
||||
private String getRaceName() {
|
||||
return raceNameProvider.getRaceName();
|
||||
|
||||
public static DetailType[] getAvailableManeuverDetailColumnTypes() {
|
||||
return new DetailType[] { DetailType.TACK, DetailType.JIBE, DetailType.PENALTY_CIRCLE};
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getColumnStyle() {
|
||||
return columnStyle;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getHeaderStyle() {
|
||||
return headerStyle;
|
||||
}
|
||||
|
||||
}
|
||||
+13
-3
@@ -7,7 +7,7 @@ public enum DetailType implements IsSerializable {
|
||||
DISTANCE_TRAVELED(0), AVERAGE_SPEED_OVER_GROUND_IN_KNOTS(2), RANK_GAIN(0), NUMBER_OF_MANEUVERS(0), CURRENT_SPEED_OVER_GROUND_IN_KNOTS(2),
|
||||
ESTIMATED_TIME_TO_NEXT_WAYPOINT_IN_SECONDS(1), VELOCITY_MADE_GOOD_IN_KNOTS(2), GAP_TO_LEADER_IN_SECONDS(0),
|
||||
WINDWARD_DISTANCE_TO_GO_IN_METERS(0), RACE_DISTANCE_TRAVELED(0), RACE_AVERAGE_SPEED_OVER_GROUND_IN_KNOTS(2), RACE_GAP_TO_LEADER_IN_SECONDS(0),
|
||||
RACE_MANEUVERS(0), WINDWARD_DISTANCE_TO_OVERALL_LEADER(0);
|
||||
WINDWARD_DISTANCE_TO_OVERALL_LEADER(0), HEAD_UP(0), BEAR_AWAY(0), TACK(0), JIBE(0), PENALTY_CIRCLE(0), MARK_PASSING(0);
|
||||
|
||||
private int precision;
|
||||
|
||||
@@ -45,10 +45,20 @@ public enum DetailType implements IsSerializable {
|
||||
return stringConstants.averageSpeedInKnots();
|
||||
case RACE_GAP_TO_LEADER_IN_SECONDS:
|
||||
return stringConstants.gapToLeaderInSeconds();
|
||||
case RACE_MANEUVERS:
|
||||
return stringConstants.numberOfManeuvers();
|
||||
case WINDWARD_DISTANCE_TO_OVERALL_LEADER:
|
||||
return stringConstants.windwardDistanceToOverallLeader();
|
||||
case HEAD_UP:
|
||||
return stringConstants.headUp();
|
||||
case BEAR_AWAY:
|
||||
return stringConstants.bearAway();
|
||||
case TACK:
|
||||
return stringConstants.tack();
|
||||
case JIBE:
|
||||
return stringConstants.jibe();
|
||||
case PENALTY_CIRCLE:
|
||||
return stringConstants.penaltyCircle();
|
||||
case MARK_PASSING:
|
||||
return stringConstants.markPassing();
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
Reference in new issue
Block a user