From 1926983d62ed3ea908c5e727e3721d6b5972de41 Mon Sep 17 00:00:00 2001
From: TRAN <minhtue1203@gmail.com>
Date: Thu, 3 Oct 2024 16:02:46 +0200
Subject: [PATCH] commit Question 3

---
 .../fr/univlille/iut/r304/thermo/Main.java    |  3 +-
 .../iut/r304/thermo/model/Thermostat.java     | 33 +++++++---
 .../iut/r304/thermo/view/TextView.java        | 64 ++++++++++++++++---
 3 files changed, 80 insertions(+), 20 deletions(-)

diff --git a/src/main/java/fr/univlille/iut/r304/thermo/Main.java b/src/main/java/fr/univlille/iut/r304/thermo/Main.java
index 9ab0f10..67f56d5 100644
--- a/src/main/java/fr/univlille/iut/r304/thermo/Main.java
+++ b/src/main/java/fr/univlille/iut/r304/thermo/Main.java
@@ -12,9 +12,8 @@ public class Main extends Application {
 	}
 
 	@Override
-	public void start(Stage primaryStage) throws Exception {
+	public void start(Stage primaryStage) {
 		Thermostat thermo = new Thermostat();
 		new TextView(thermo);
 	}
-
 }
diff --git a/src/main/java/fr/univlille/iut/r304/thermo/model/Thermostat.java b/src/main/java/fr/univlille/iut/r304/thermo/model/Thermostat.java
index 9d86f76..2edddc6 100644
--- a/src/main/java/fr/univlille/iut/r304/thermo/model/Thermostat.java
+++ b/src/main/java/fr/univlille/iut/r304/thermo/model/Thermostat.java
@@ -1,29 +1,42 @@
 package fr.univlille.iut.r304.thermo.model;
 
-public class Thermostat implements ITemperature {
+import fr.univlille.iut.r304.utils.ObservableProperty;
+
+public class Thermostat extends ObservableProperty implements ITemperature {
+
+	private double temperature;
+
+	public Thermostat() {
+		this.temperature = 20.0; // Température par défaut
+	}
 
 	@Override
-	public void setTemperature(double d) {
-		// TODO Auto-generated method stub
-		
+	public void setTemperature(double temperature) {
+		this.temperature = temperature;
+		setValue(temperature); // Notifie les observateurs
 	}
 
 	@Override
 	public Double getTemperature() {
-		// TODO Auto-generated method stub
-		return null;
+		return this.temperature;
 	}
 
 	@Override
 	public void incrementTemperature() {
-		// TODO Auto-generated method stub
-		
+		setTemperature(this.temperature + 1);
 	}
 
 	@Override
 	public void decrementTemperature() {
-		// TODO Auto-generated method stub
-		
+		setTemperature(this.temperature - 1);
 	}
 
+	// Optionnel : Méthodes pour incrémenter/décrémenter de 5 degrés
+	public void incrementTemperatureBy(double value) {
+		setTemperature(this.temperature + value);
+	}
+
+	public void decrementTemperatureBy(double value) {
+		setTemperature(this.temperature - value);
+	}
 }
diff --git a/src/main/java/fr/univlille/iut/r304/thermo/view/TextView.java b/src/main/java/fr/univlille/iut/r304/thermo/view/TextView.java
index 4faa759..89c3293 100644
--- a/src/main/java/fr/univlille/iut/r304/thermo/view/TextView.java
+++ b/src/main/java/fr/univlille/iut/r304/thermo/view/TextView.java
@@ -1,32 +1,80 @@
 package fr.univlille.iut.r304.thermo.view;
 
 import fr.univlille.iut.r304.thermo.model.Thermostat;
+import fr.univlille.iut.r304.utils.Observer;
+import javafx.application.Platform;
+import javafx.scene.Scene;
+import javafx.scene.control.Button;
+import javafx.scene.control.Label;
+import javafx.scene.layout.VBox;
 import javafx.stage.Stage;
 
-public class TextView extends Stage implements ITemperatureView {
+public class TextView extends Stage implements ITemperatureView, Observer {
+
+	private Thermostat model;
+	private Label temperatureLabel;
 
 	public TextView(Thermostat model) {
-		//simplement pour avoir qqch qui s'affiche à la prise en main du dépôt
+		this.model = model;
+		this.model.attach(this); // S'attache en tant qu'observateur
+
 		this.setTitle("Thermostat");
+
+		temperatureLabel = new Label("Température actuelle : " + model.getTemperature() + "°C");
+
+		Button incrementButton = new Button("+1");
+		incrementButton.setOnAction(e -> incrementAction());
+
+		Button decrementButton = new Button("-1");
+		decrementButton.setOnAction(e -> decrementAction());
+
+		// Optionnel : Boutons pour +/-5 degrés
+		Button incrementFiveButton = new Button("+5");
+		incrementFiveButton.setOnAction(e -> incrementTemperatureBy(5));
+
+		Button decrementFiveButton = new Button("-5");
+		decrementFiveButton.setOnAction(e -> decrementTemperatureBy(5));
+
+		VBox layout = new VBox(10);
+		layout.getChildren().addAll(temperatureLabel, incrementButton, decrementButton, incrementFiveButton, decrementFiveButton);
+
+		Scene scene = new Scene(layout, 200, 200);
+		this.setScene(scene);
 		this.show();
 	}
 
 	@Override
 	public double getDisplayedValue() {
-		// TODO Auto-generated method stub
-		return 0;
+		return model.getTemperature();
 	}
 
 	@Override
 	public void incrementAction() {
-		// TODO Auto-generated method stub
-		
+		model.incrementTemperature();
 	}
 
 	@Override
 	public void decrementAction() {
-		// TODO Auto-generated method stub
-		
+		model.decrementTemperature();
 	}
 
+	// Optionnel : Méthodes pour incrémenter/décrémenter de 5 degrés
+	public void incrementTemperatureBy(double value) {
+		model.incrementTemperatureBy(value);
+	}
+
+	public void decrementTemperatureBy(double value) {
+		model.decrementTemperatureBy(value);
+	}
+
+	@Override
+	public void update(fr.univlille.iut.r304.utils.Observable observable, Object data) {
+		// Mise à jour de l'affichage lorsque le modèle change
+		Platform.runLater(() -> temperatureLabel.setText("Température actuelle : " + model.getTemperature() + "°C"));
+	}
+
+	@Override
+	public void update(fr.univlille.iut.r304.utils.Observable observable) {
+		// Non utilisé
+	}
 }
-- 
GitLab