Streamlined clock handling.

- Set starting time from network
- Update RaceClock instance to current time from network

#story[782]
This commit is contained in:
cbt24
2017-05-04 12:38:21 +12:00
parent 09483fff2c
commit c1fa760dde
2 changed files with 30 additions and 9 deletions
@@ -22,10 +22,8 @@ import java.net.Socket;
import java.net.URL;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.List;
import java.util.Observable;
import java.util.Observer;
import java.util.ResourceBundle;
import java.time.format.DateTimeFormatter;
import java.util.*;
/**
* Created by esa46 on 6/04/17.
@@ -35,6 +33,7 @@ public class StartController extends Controller implements Observer {
@FXML private GridPane start;
@FXML private AnchorPane startWrapper;
@FXML private Label raceTitleLabel;
@FXML private Label raceStartLabel;
@FXML private TableView<Boat> boatNameTable;
@FXML private TableColumn<Boat, String> boatNameColumn;
@@ -103,7 +102,6 @@ public class StartController extends Controller implements Observer {
long currentTime = System.currentTimeMillis();
long startTime = currentTime + (PRERACE_TIME/scaleFactor);
DateFormat timerFormat = new SimpleDateFormat("'Race Clock:' -HH:mm:ss");
@Override
public void handle(long arg0) {
timeLeft = startTime - currentTime;
@@ -122,7 +120,7 @@ public class StartController extends Controller implements Observer {
}.start();
}
protected void setRaceClock() {
private void setRaceClock() {
raceClock = new RaceClock(raceData.getZonedDateTime());
timeZoneTime.textProperty().bind(raceClock.timeStringProperty());
@@ -138,6 +136,20 @@ public class StartController extends Controller implements Observer {
}.start();
}
private void setStartingTime() {
String dateFormat = "'Starting time:' HH:mm dd/MM/YYYY";
Platform.runLater(()-> {
long utcTime = visualiserInput.getRaceStatus().getExpectedStartTime();
raceStartLabel.setText(DateTimeFormatter.ofPattern(dateFormat).format(raceClock.getLocalTime(utcTime)));
});
}
private void setCurrentTime() {
Platform.runLater(()->
raceClock.setTime(raceClock.getLocalTime(visualiserInput.getRaceStatus().getCurrentTime()))
);
}
@Override
public void update(Observable o, Object arg) {
if(o instanceof StreamedCourse) {
@@ -148,7 +160,12 @@ public class StartController extends Controller implements Observer {
Platform.runLater(() -> raceTitleLabel.setText(((StreamedCourse)o).getRegattaName()));
}
if (((StreamedCourse) o).hasReadCourse()) {
Platform.runLater(() -> setRaceClock());
Platform.runLater(() -> {
setRaceClock();
while(visualiserInput.getRaceStatus() == null);
setStartingTime();
setCurrentTime();
});
}
}
}