added lower flag to regattaoverview, extended gate start feature.

This commit is contained in:
Fabian Tschirschnitz committed 2013-04-20 17:17:07 +02:00
1 parent 83c3035ee4
commit dd4d93efed
9 files changed
+51 -33

No files matched your search

@@ -515,7 +515,8 @@ public interface StringMessages extends Messages {
String totalAverageSpeedOverGround();
String totalAverageSpeedOverGroundTooltip();
String noStarttimeAnnouncedYet();
String lastFlag();
String lastUpperFlag();
String lastLowerFlag();
String filterRegattasByName();
String noRegattasYet();
String cannotAddRacesToRegattaLeaderboardButOnlyToRegatta();
@@ -534,4 +535,5 @@ public interface StringMessages extends Messages {
String currentTime();
String tractracUsername();
String tractracPassword();
String flagStatus();
}
@@ -520,7 +520,8 @@ pleaseEnterNonEmptyCourseArea=Please enter a course area.
pleaseSelectACourseArea=Please select a course area.
radiusInMeters=Radius (m)
noStarttimeAnnouncedYet=No start time announced yet
lastFlag=Last flag
lastUpperFlag=Upper flag
lastLowerFlag=Lower flag
cannotAddRacesToRegattaLeaderboardButOnlyToRegatta=This is a regatta leaderboard. You can only add races to this leaderboard directly in the regatta definition.
correctScore=Correct Score
correctScoreFor=Correct score for competitor {0} in race {1}
@@ -536,4 +537,5 @@ stopUpdating=Stop updating
startUpdating=Start updating
currentTime=Current time:
tractracUsername=TracTrac username
tractracPassword=TracTrac password
tractracPassword=TracTrac password
flagStatus=Flag status
@@ -251,22 +251,30 @@ public class RegattaOverviewTableComposite extends Composite {
});
Column<RegattaOverviewEntryDTO, ImageResource> lastFlagColumn = new Column<RegattaOverviewEntryDTO, ImageResource>(new ImageResourceCell()) {
Column<RegattaOverviewEntryDTO, ImageResource> lastUpperFlagColumn = new Column<RegattaOverviewEntryDTO, ImageResource>(new ImageResourceCell()) {
@Override
public ImageResource getValue(RegattaOverviewEntryDTO entryDTO) {
return flagImageResolver.resolveFlagToImage(entryDTO.raceInfo.lastFlag);
return flagImageResolver.resolveFlagToImage(entryDTO.raceInfo.lastUpperFlag);
}
};
Column<RegattaOverviewEntryDTO, ImageResource> lastLowerFlagColumn = new Column<RegattaOverviewEntryDTO, ImageResource>(new ImageResourceCell()) {
@Override
public ImageResource getValue(RegattaOverviewEntryDTO entryDTO) {
return flagImageResolver.resolveFlagToImage(entryDTO.raceInfo.lastLowerFlag);
}
};
Column<RegattaOverviewEntryDTO, ImageResource> lastFlagDirectionColumn = new Column<RegattaOverviewEntryDTO, ImageResource>(new ImageResourceCell()) {
@Override
public ImageResource getValue(RegattaOverviewEntryDTO entryDTO) {
if(entryDTO.raceInfo.lastFlag != null)
if(entryDTO.raceInfo.lastUpperFlag != null)
return flagImageResolver.resolveFlagDirectionToImage(entryDTO.raceInfo.displayed);
else
return null;
}
};
table.addColumn(courseAreaColumn, stringMessages.courseArea());
table.addColumn(regattaNameColumn, stringMessages.boatClass()); // For sailors the boat class also contains additional infos such as woman/man, e.g. Laser Radial Woman or Laser Radial Men
@@ -274,8 +282,9 @@ public class RegattaOverviewTableComposite extends Composite {
table.addColumn(raceNameColumn, stringMessages.race());
table.addColumn(raceStartTimeColumn, stringMessages.startTime());
table.addColumn(raceStatusColumn, stringMessages.status());
table.addColumn(lastFlagColumn, stringMessages.lastFlag());
table.addColumn(lastFlagDirectionColumn, "");
table.addColumn(lastUpperFlagColumn, stringMessages.lastUpperFlag());
table.addColumn(lastLowerFlagColumn, stringMessages.lastLowerFlag());
table.addColumn(lastFlagDirectionColumn, stringMessages.flagStatus());
table.addColumnSortHandler(regattaOverviewListHandler);
return table;
@@ -292,9 +301,9 @@ public class RegattaOverviewTableComposite extends Composite {
private String getStatusText(RaceInfoDTO raceInfo) {
String statusText = "";
if (raceInfo.lastStatus.equals(RaceLogRaceStatus.RUNNING) && raceInfo.lastFlag.equals(Flags.XRAY) && raceInfo.displayed) {
if (raceInfo.lastStatus.equals(RaceLogRaceStatus.RUNNING) && raceInfo.lastUpperFlag.equals(Flags.XRAY) && raceInfo.displayed) {
statusText = "Race is running (had early starters)";
} else if (raceInfo.lastStatus.equals(RaceLogRaceStatus.RUNNING) && raceInfo.lastFlag.equals(Flags.XRAY) && !raceInfo.displayed) {
} else if (raceInfo.lastStatus.equals(RaceLogRaceStatus.RUNNING) && raceInfo.lastUpperFlag.equals(Flags.XRAY) && !raceInfo.displayed) {
statusText = "Race is running";
} else if (raceInfo.lastStatus.equals(RaceLogRaceStatus.RUNNING)) {
statusText = "Race is running";
@@ -308,13 +317,13 @@ public class RegattaOverviewTableComposite extends Composite {
statusText = "Race in start phase";
} else if (raceInfo.lastStatus.equals(RaceLogRaceStatus.UNSCHEDULED)) {
statusText = stringMessages.noStarttimeAnnouncedYet();
} else if (raceInfo.lastFlag == null) {
} else if (raceInfo.lastUpperFlag == null) {
statusText = "";
} else if (raceInfo.lastFlag.equals(Flags.FIRSTSUBSTITUTE)) {
} else if (raceInfo.lastUpperFlag.equals(Flags.FIRSTSUBSTITUTE)) {
statusText = "General recall";
} else if (raceInfo.lastFlag.equals(Flags.AP) && raceInfo.displayed) {
} else if (raceInfo.lastUpperFlag.equals(Flags.AP) && raceInfo.displayed) {
statusText = "Start postponed";
} else if (raceInfo.lastFlag.equals(Flags.NOVEMBER) && raceInfo.displayed) {
} else if (raceInfo.lastUpperFlag.equals(Flags.NOVEMBER) && raceInfo.displayed) {
statusText = "Start abandoned";
}
return statusText;
@@ -1110,7 +1110,8 @@ public class SailingServiceImpl extends ProxiedRemoteServiceServlet implements S
raceInfoDTO.lastStatus = raceStatusAnalyzer.getStatus();
for(RaceLogEvent event : passAwareRaceLog.getFixes()){
if(event instanceof RaceLogFlagEvent){
raceInfoDTO.lastFlag = ((RaceLogFlagEvent) event).getUpperFlag();
raceInfoDTO.lastUpperFlag = ((RaceLogFlagEvent) event).getUpperFlag();
raceInfoDTO.lastLowerFlag = ((RaceLogFlagEvent) event).getLowerFlag();
raceInfoDTO.displayed = ((RaceLogFlagEvent) event).isDisplayed();
}
}
@@ -12,10 +12,12 @@ public class RaceInfoDTO implements IsSerializable {
public String fleet;
public Date startTime;
public RaceLogRaceStatus lastStatus;
public Flags lastFlag;
public Flags lastUpperFlag;
public Flags lastLowerFlag;
public boolean displayed;
public RaceCourseDTO lastCourseDesign;
public RaceIdentifier raceIdentifier;
public String additionalInformation;
// for GWT serialization
public RaceInfoDTO() { }
@@ -87,7 +87,7 @@
android:layout_centerInParent="true"
android:layout_marginRight="10dp"
android:contentDescription="@string/start_mode_flag"
android:src="@drawable/fivehundred_five_over_golf_flag" />
android:src="@drawable/papa_flag" />
<com.sap.sailing.racecommittee.app.ui.views.VerticalTextView
android:id="@+id/flagsDownLabel"
@@ -117,6 +117,10 @@
<string name="race_startphase_countdown_class_remove">%1$s until %2$s class flag is removed and race starts</string>
<string name="race_startphase_ess_countdown_one_flag_remove">%1$s until One flag is removed and race starts</string>
<string name="race_startphase_countdown_class_display">%1$s until %2$s class flag is displayed</string><string name="race_startphase_countdown_start">%1$s until %2$s starts&quot;</string>
<string name="race_startphase_gate_class_over_golf_display">%1$s until Class flag over Golf flag is displayed</string>
<string name="race_startphase_gate_class_over_golf_removed">%1$s until Class flag over Golf flag is removed and race starts</string>
<string name="race_startphase_gate_papa_display">%1$s until Papa flag is displayed</string>
<string name="race_startphase_gate_papa_removed">%1$s until Papa flag is removed</string>
<string name="set_pathfinder">Set Pathfinder</string>
<string name="set_pathfinder_title">Choose the pathfinder</string>
<string name="protest_dialog_title">Set the protest start time</string>
@@ -15,6 +15,7 @@ import com.sap.sailing.domain.common.racelog.Flags;
import com.sap.sailing.domain.racelog.PassAwareRaceLog;
import com.sap.sailing.domain.racelog.RaceLogEvent;
import com.sap.sailing.domain.racelog.RaceLogEventFactory;
import com.sap.sailing.racecommittee.app.R;
import com.sap.sailing.racecommittee.app.domain.startprocedure.StartPhaseEventListener;
import com.sap.sailing.racecommittee.app.domain.startprocedure.StartProcedure;
import com.sap.sailing.racecommittee.app.domain.startprocedure.StartProcedureRaceStateChangedListener;
@@ -284,18 +285,16 @@ public class GateStartProcedure implements StartProcedure {
@Override
public Pair<String, Long> getNextFlagCountdownUiLabel(Context context, long millisecondsTillStart) {
Pair<String, Long> result = new Pair<String, Long>("dei mudda...", millisecondsTillStart);
/*if (millisecondsTillStart < startPhasePapaDownInterval) {
result = new Pair<String, Long>(context.getResources().getString(R.string.), millisecondsTillStart);
} else if (millisecondsTillStart < startPhaseESSTwoUpInterval) {
result = new Pair<String, Long>(context.getResources().getString(R.string.race_startphase_ess_countdown_one_flag_display), millisecondsTillStart - startPhaseESSOneUpInterval);
} else if (millisecondsTillStart < startPhaseESSThreeUpInterval) {
result = new Pair<String, Long>(context.getResources().getString(R.string.race_startphase_ess_countdown_two_flag_display), millisecondsTillStart - startPhaseESSTwoUpInterval);
} else if (millisecondsTillStart < startPhaseAPDownInterval) {
result = new Pair<String, Long>(context.getResources().getString(R.string.race_startphase_ess_countdown_three_flag_display), millisecondsTillStart - startPhaseESSThreeUpInterval);
Pair<String, Long> result;
if (millisecondsTillStart < startPhasePapaDownInterval) {
result = new Pair<String, Long>(context.getResources().getString(R.string.race_startphase_gate_class_over_golf_removed), millisecondsTillStart);
} else if (millisecondsTillStart < startPhasePapaUpInterval) {
result = new Pair<String, Long>(context.getResources().getString(R.string.race_startphase_gate_papa_removed), millisecondsTillStart - startPhasePapaDownInterval);
} else if (millisecondsTillStart < startPhaseClassOverGolfUpIntervall) {
result = new Pair<String, Long>(context.getResources().getString(R.string.race_startphase_gate_papa_display), millisecondsTillStart - startPhasePapaUpInterval);
} else {
result = new Pair<String, Long>(context.getResources().getString(R.string.race_startphase_ess_countdown_ap_flag_removed), millisecondsTillStart - startPhaseAPDownInterval);
}*/
result = new Pair<String, Long>(context.getResources().getString(R.string.race_startphase_gate_class_over_golf_display), millisecondsTillStart - startPhaseClassOverGolfUpIntervall);
}
return result;
}
@@ -2,7 +2,6 @@ package com.sap.sailing.racecommittee.app.ui.fragments.raceinfo.startphase;
import android.app.Activity;
import android.app.FragmentManager;
import android.opengl.Visibility;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
@@ -91,7 +90,6 @@ public class GateStartPhaseFragment extends RaceFragment implements GateStartPha
}
private void setupUi() {
displayedFlag.setVisibility(View.INVISIBLE);
RaceLog log = getRace().getState().getRaceLog();
log.lockForRead();
try {
@@ -100,14 +98,15 @@ public class GateStartPhaseFragment extends RaceFragment implements GateStartPha
RaceLogFlagEvent flagEvent = (RaceLogFlagEvent) lastEvent;
Flags flag = flagEvent.getUpperFlag();
if (!flagEvent.isDisplayed() && flag.equals(Flags.CLASS) && flagEvent.getLowerFlag().equals(Flags.GOLF)) {
if (flagEvent.isDisplayed() && flag.equals(Flags.CLASS) && flagEvent.getLowerFlag().equals(Flags.GOLF)) {
onClassOverGolfUp();
} else if (flagEvent.isDisplayed() && flag.equals(Flags.PAPA)) {
onPapaUp();
} else if (!flagEvent.isDisplayed() && flag.equals(Flags.PAPA)) {
onPapaDown();
}
}
} else
displayedFlag.setVisibility(View.INVISIBLE);
} finally {
log.unlockAfterRead();
}
@@ -213,6 +212,6 @@ public class GateStartPhaseFragment extends RaceFragment implements GateStartPha
@Override
public void onPapaDown() {
displayedFlag.setImageResource(R.drawable.fivehundred_five_500px);
displayedFlag.setImageResource(R.drawable.fivehundred_five_over_golf_flag);
}
}