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 9ab0f10c6f1bcbd671d681229e4934137cea4279..67f56d550a5888fcd91ed631ec83a33a74e4829c 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 9d86f764c0563d05a0e479f4ddbe891165ad9758..2edddc626c46d41ea17d848b020e0422ed0ca7e7 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 4faa759f6764a99144422ba1e6c9d45da0a15810..89c32935dad55988e020ed91b390be8bcc1a8a3a 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é + } }