diff --git a/resources/windows/MainWindows.fxml b/resources/windows/MainWindows.fxml
index b872f9d..001e922 100644
--- a/resources/windows/MainWindows.fxml
+++ b/resources/windows/MainWindows.fxml
@@ -8,21 +8,39 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Millis per tick :
+
+
+
+
+
+
+
+
+
diff --git a/src/fr/uca/iut/clfreville2/gui/MainWindows.java b/src/fr/uca/iut/clfreville2/gui/MainWindows.java
index 13ff9d9..ae6e6fb 100644
--- a/src/fr/uca/iut/clfreville2/gui/MainWindows.java
+++ b/src/fr/uca/iut/clfreville2/gui/MainWindows.java
@@ -11,8 +11,10 @@ import fr.uca.iut.clfreville2.model.sensor.Sensor;
import fr.uca.iut.clfreville2.persistence.StubSensorRegistryLoader;
import javafx.fxml.FXML;
import javafx.scene.control.Button;
+import javafx.scene.control.CheckBox;
import javafx.scene.control.ListView;
import javafx.scene.control.Slider;
+import javafx.scene.control.Spinner;
import javafx.scene.control.TextField;
import javafx.scene.image.ImageView;
import javafx.scene.text.Text;
@@ -40,6 +42,12 @@ public class MainWindows {
@FXML
private Button visualizeBtn;
+ @FXML
+ private Spinner updateInterval;
+
+ @FXML
+ private CheckBox autoUpdate;
+
public MainWindows(Stage primaryStage) {
this.ticker = new Ticker(registry);
this.modalFactory = new ModalFactory(primaryStage);
@@ -84,6 +92,7 @@ public class MainWindows {
private void initialize() {
bindSensorList();
bindActiveButtons();
+ bindUpdate();
}
@FXML
@@ -113,6 +122,12 @@ public class MainWindows {
visualizeBtn.visibleProperty().bind(sensorsList.getSelectionModel().selectedItemProperty().isNotNull());
}
+ @FXML
+ private void bindUpdate() {
+ updateInterval.getValueFactory().valueProperty().bindBidirectional(ticker.millisPerTickProperty().asObject());
+ autoUpdate.selectedProperty().bindBidirectional(ticker.runningProperty());
+ }
+
private Sensor getSelectedSensor() {
return sensorsList.getSelectionModel().getSelectedItem();
}
diff --git a/src/fr/uca/iut/clfreville2/gui/thread/Ticker.java b/src/fr/uca/iut/clfreville2/gui/thread/Ticker.java
index 355460a..40a725f 100644
--- a/src/fr/uca/iut/clfreville2/gui/thread/Ticker.java
+++ b/src/fr/uca/iut/clfreville2/gui/thread/Ticker.java
@@ -2,13 +2,16 @@ package fr.uca.iut.clfreville2.gui.thread;
import fr.uca.iut.clfreville2.model.shared.Tickable;
import javafx.application.Platform;
+import javafx.beans.property.BooleanProperty;
import javafx.beans.property.IntegerProperty;
+import javafx.beans.property.SimpleBooleanProperty;
import javafx.beans.property.SimpleIntegerProperty;
public class Ticker extends Thread {
private final Tickable tickable;
private final IntegerProperty millisPerTick = new SimpleIntegerProperty(250);
+ private final BooleanProperty running = new SimpleBooleanProperty(true);
public Ticker(Tickable tickable) {
this.tickable = tickable;
@@ -19,7 +22,9 @@ public class Ticker extends Thread {
while (true) {
try {
Thread.sleep(millisPerTick.getValue());
- Platform.runLater(tickable::tick);
+ if (running.get()) {
+ Platform.runLater(tickable::tick);
+ }
} catch (InterruptedException e) {
break;
}
@@ -37,4 +42,16 @@ public class Ticker extends Thread {
public IntegerProperty millisPerTickProperty() {
return millisPerTick;
}
+
+ public void setRunning(boolean running) {
+ this.running.setValue(running);
+ }
+
+ public boolean getRunning() {
+ return running.getValue();
+ }
+
+ public BooleanProperty runningProperty() {
+ return running;
+ }
}