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..11954a561ba6cd4ea593b7cf2633d3693d60441c 100644 --- a/src/main/java/fr/univlille/iut/r304/thermo/Main.java +++ b/src/main/java/fr/univlille/iut/r304/thermo/Main.java @@ -1,6 +1,7 @@ package fr.univlille.iut.r304.thermo; import fr.univlille.iut.r304.thermo.model.Thermostat; +import fr.univlille.iut.r304.thermo.view.SliderView; import fr.univlille.iut.r304.thermo.view.TextView; import javafx.application.Application; import javafx.stage.Stage; @@ -15,6 +16,7 @@ public class Main extends Application { public void start(Stage primaryStage) throws Exception { Thermostat thermo = new Thermostat(); new TextView(thermo); + new SliderView(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..d8e88810ff383e6e6307733859d65baa0217c030 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,32 @@ package fr.univlille.iut.r304.thermo.model; -public class Thermostat implements ITemperature { +import fr.univlille.iut.r304.utils.Observable; + +public class Thermostat extends Observable 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 - + this.temperature = d; + notifyObservers(); } @Override public Double getTemperature() { - // TODO Auto-generated method stub - return null; + return temperature; } @Override public void incrementTemperature() { - // TODO Auto-generated method stub - + setTemperature(temperature + 1); } @Override public void decrementTemperature() { - // TODO Auto-generated method stub - + setTemperature(temperature - 1); } - -} +} \ No newline at end of file diff --git a/src/main/java/fr/univlille/iut/r304/thermo/view/SliderView.java b/src/main/java/fr/univlille/iut/r304/thermo/view/SliderView.java new file mode 100644 index 0000000000000000000000000000000000000000..bb2dda491012dc3994c2259f4078ee35d50ed594 --- /dev/null +++ b/src/main/java/fr/univlille/iut/r304/thermo/view/SliderView.java @@ -0,0 +1,69 @@ +package fr.univlille.iut.r304.thermo.view; + +import fr.univlille.iut.r304.thermo.model.Thermostat; +import fr.univlille.iut.r304.utils.Observable; +import fr.univlille.iut.r304.utils.Observer; +import javafx.scene.Scene; +import javafx.scene.control.Label; +import javafx.scene.control.Slider; +import javafx.scene.layout.VBox; +import javafx.stage.Stage; + +public class SliderView extends Stage implements ITemperatureView, Observer { + private Thermostat model; + private Slider temperatureSlider; + private Label temperatureLabel; + + public SliderView(Thermostat model) { + this.model = model; + this.setTitle("Thermostat Slider"); + + temperatureLabel = new Label("Temperature: " + model.getTemperature() + " °C"); + temperatureSlider = new Slider(-10.0, 30.0, model.getTemperature()); + temperatureSlider.setShowTickLabels(true); + temperatureSlider.setShowTickMarks(true); + temperatureSlider.setMajorTickUnit(5); + temperatureSlider.setMinorTickCount(1); + + temperatureSlider.valueProperty().addListener((obs, oldVal, newVal) -> { + model.setTemperature(newVal.doubleValue()); + }); + + VBox layout = new VBox(10, temperatureLabel, temperatureSlider); + Scene scene = new Scene(layout, 300, 150); + this.setScene(scene); + this.show(); + + model.attach(this); + + // Met à jour le Slider avec la température actuelle du modèle + temperatureSlider.setValue(model.getTemperature()); + } + + @Override + public double getDisplayedValue() { + return model.getTemperature(); + } + + @Override + public void incrementAction() { + model.incrementTemperature(); + temperatureSlider.setValue(model.getTemperature()); + } + + @Override + public void decrementAction() { + model.decrementTemperature(); + temperatureSlider.setValue(model.getTemperature()); + } + + public void update(Observable observable) { + temperatureLabel.setText("Temperature: " + model.getTemperature() + " °C"); + temperatureSlider.setValue(model.getTemperature()); + } + + @Override + public void update(Observable observable, Object data) { + + } +} \ No newline at end of file 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..e35494f1b87abf0e4bfb293111ccb238815ef80a 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,66 @@ package fr.univlille.iut.r304.thermo.view; import fr.univlille.iut.r304.thermo.model.Thermostat; +import fr.univlille.iut.r304.utils.Observable; +import fr.univlille.iut.r304.utils.Observer; +import javafx.application.Application; +import javafx.scene.Scene; +import javafx.scene.control.Button; +import javafx.scene.control.Label; +import javafx.scene.control.TextField; +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; + private TextField temperatureInput; public TextView(Thermostat model) { - //simplement pour avoir qqch qui s'affiche à la prise en main du dépôt + this.model = model; this.setTitle("Thermostat"); + this.temperatureLabel = new Label("Temp: " + model.getTemperature()); + this.temperatureInput = new TextField(); + this.temperatureInput.setPromptText("Set temperature"); + + Button incrementButton = new Button("Increment"); + incrementButton.setOnAction(e -> incrementAction()); + + Button decrementButton = new Button("Decrement"); + decrementButton.setOnAction(e -> decrementAction()); + + VBox layout = new VBox(10, temperatureLabel, temperatureInput, incrementButton, decrementButton); + Scene scene = new Scene(layout, 200, 150); + this.setScene(scene); this.show(); + + model.attach(this); } @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(); + temperatureInput.setText(String.valueOf(model.getTemperature())); } @Override public void decrementAction() { - // TODO Auto-generated method stub - + model.decrementTemperature(); + temperatureInput.setText(String.valueOf(model.getTemperature())); + } + + public void update(Observable observable) { + temperatureLabel.setText("Temp: " + model.getTemperature()); + } + + @Override + public void update(Observable observable, Object data) { + temperatureLabel.setText("Temp: " + data); } -} +} \ No newline at end of file