From c1fa760ddef92b0ead0718a11b3e4cd2d96cfbba Mon Sep 17 00:00:00 2001 From: cbt24 Date: Thu, 4 May 2017 12:38:21 +1200 Subject: [PATCH] Streamlined clock handling. - Set starting time from network - Update RaceClock instance to current time from network #story[782] --- .../seng302/Controllers/StartController.java | 31 ++++++++++++++----- .../src/main/resources/scenes/start.fxml | 8 +++-- 2 files changed, 30 insertions(+), 9 deletions(-) diff --git a/visualiser/src/main/java/seng302/Controllers/StartController.java b/visualiser/src/main/java/seng302/Controllers/StartController.java index 8daf5afa..56d37f63 100644 --- a/visualiser/src/main/java/seng302/Controllers/StartController.java +++ b/visualiser/src/main/java/seng302/Controllers/StartController.java @@ -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 boatNameTable; @FXML private TableColumn 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(); + }); } } } diff --git a/visualiser/src/main/resources/scenes/start.fxml b/visualiser/src/main/resources/scenes/start.fxml index aa417926..86598ad6 100644 --- a/visualiser/src/main/resources/scenes/start.fxml +++ b/visualiser/src/main/resources/scenes/start.fxml @@ -1,5 +1,9 @@ + + + + @@ -10,7 +14,7 @@ - + @@ -41,7 +45,7 @@