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