Fix for bug 420: Timer doesn't stop playing at the end of race

This commit is contained in:
fmittag
2012-10-04 12:56:28 +02:00
parent 28319f17dd
commit aee0005580
@@ -286,15 +286,20 @@ public class TimePanel<T extends TimePanelSettings> extends FormPanel implements
@Override
public void timeChanged(Date time) {
if (getFromTime() != null && getToTime() != null) {
// Handle also the case where time advances beyond slider's end.
// Handle it equally for replay and live mode for robustness reasons. This at least allows a user
// to watch on even if the time panel was off in its assumptions about race end and end of tracking.
// handle the case where time advances beyond slider's end.
if (time.after(getToTime())) {
Date newMaxTime = new Date(time.getTime());
if (newMaxTime.getTime() - getToTime().getTime() < MINIMUM_AUTO_ADVANCE_TIME_IN_MS) {
newMaxTime.setTime(getToTime().getTime() + MINIMUM_AUTO_ADVANCE_TIME_IN_MS);
switch (timer.getPlayMode()) {
case Live:
Date newMaxTime = new Date(time.getTime());
if (newMaxTime.getTime() - getToTime().getTime() < MINIMUM_AUTO_ADVANCE_TIME_IN_MS) {
newMaxTime.setTime(getToTime().getTime() + MINIMUM_AUTO_ADVANCE_TIME_IN_MS);
}
setMinMax(getFromTime(), newMaxTime, /* fireEvent */ false); // no event because we guarantee that time is between min/max
break;
case Replay:
timer.stop();
break;
}
setMinMax(getFromTime(), newMaxTime, /* fireEvent */ false); // no event because we guarantee that time is between min/max
}
long t = time.getTime();
timeSlider.setCurrentValue(new Double(t), false);
@@ -368,6 +373,7 @@ public class TimePanel<T extends TimePanelSettings> extends FormPanel implements
case Paused:
playPauseButton.getElement().removeClassName("playPauseButtonPause");
case Stopped:
playPauseButton.getElement().removeClassName("playPauseButtonPause");
playModeImage.setResource(playModeInactiveImg);
break;
}