Skip to content
Snippets Groups Projects
Commit a055ea7e authored by Nils Vanderschooten-Akinmoladun's avatar Nils Vanderschooten-Akinmoladun
Browse files

Finished !

parent 19131bed
Branches master
No related tags found
No related merge requests found
package fr.univlille.iut.r304.thermo; package fr.univlille.iut.r304.thermo;
import fr.univlille.iut.r304.thermo.model.Thermostat; import fr.univlille.iut.r304.thermo.model.Thermostat;
import fr.univlille.iut.r304.thermo.view.TextView; import fr.univlille.iut.r304.thermo.view.TextView;
import javafx.application.Application; import javafx.application.Application;
...@@ -10,13 +9,19 @@ public class Main extends Application { ...@@ -10,13 +9,19 @@ public class Main extends Application {
@Override @Override
public void start(Stage primaryStage) { public void start(Stage primaryStage) {
Thermostat model = new Thermostat(); // Création du modèle // Créer le modèle avec une température initiale
new TextView(model); // Création de la vue Thermostat thermostat = new Thermostat(20.0);
new TextView(model); // Création de la vue
// Créer deux vues pour le même modèle
TextView view1 = new TextView(thermostat);
TextView view2 = new TextView(thermostat);
// Afficher les vues
view1.show();
view2.show();
} }
public static void main(String[] args) { public static void main(String[] args) {
launch(args); launch(args);
} }
} }
package fr.univlille.iut.r304.thermo.model; package fr.univlille.iut.r304.thermo.model;
import fr.univlille.iut.r304.utils.ConnectableProperty;
public class Thermostat implements ITemperature { public class Thermostat implements ITemperature {
private double temperature; private ConnectableProperty temperatureProperty;
public Thermostat(double initialTemperature) {
this.temperatureProperty = new ConnectableProperty();
this.temperatureProperty.setValue(initialTemperature);
}
public Thermostat() { public ConnectableProperty temperatureProperty() {
this.temperature = 20.0; // Température initiale par défaut return temperatureProperty;
} }
@Override @Override
public void setTemperature(double d) { public void setTemperature(double d) {
this.temperature = d; temperatureProperty.setValue(d);
} }
@Override @Override
public Double getTemperature() { public Double getTemperature() {
return this.temperature; return (Double) temperatureProperty.getValue();
} }
@Override @Override
public void incrementTemperature() { public void incrementTemperature() {
this.temperature += 1.0; // Incrémentation de 1 degré setTemperature(getTemperature() + 1);
} }
@Override @Override
public void decrementTemperature() { public void decrementTemperature() {
this.temperature -= 1.0; // Décrémentation de 1 degré setTemperature(getTemperature() - 1);
} }
} }
package fr.univlille.iut.r304.thermo.view; package fr.univlille.iut.r304.thermo.view;
import fr.univlille.iut.r304.thermo.model.Thermostat; import fr.univlille.iut.r304.thermo.model.Thermostat;
import fr.univlille.iut.r304.utils.ConnectableProperty;
import fr.univlille.iut.r304.utils.Observer;
import javafx.scene.Scene; import javafx.scene.Scene;
import javafx.scene.control.Button; import javafx.scene.control.Button;
import javafx.scene.control.Label; import javafx.scene.control.Label;
...@@ -10,13 +12,15 @@ import javafx.scene.layout.VBox; ...@@ -10,13 +12,15 @@ import javafx.scene.layout.VBox;
import javafx.geometry.Pos; import javafx.geometry.Pos;
import javafx.stage.Stage; import javafx.stage.Stage;
public class TextView extends Stage implements ITemperatureView { public class TextView extends Stage implements ITemperatureView, Observer {
private Thermostat model; private Thermostat model;
private TextField temperatureField; private TextField temperatureField;
private ConnectableProperty temperatureProperty;
public TextView(Thermostat model) { public TextView(Thermostat model) {
this.model = model; this.model = model;
this.temperatureProperty = model.temperatureProperty();
// Titre de la fenêtre // Titre de la fenêtre
this.setTitle("Taarit Ai Thermostat"); this.setTitle("Taarit Ai Thermostat");
...@@ -25,6 +29,7 @@ public class TextView extends Stage implements ITemperatureView { ...@@ -25,6 +29,7 @@ public class TextView extends Stage implements ITemperatureView {
Label unitLabel = new Label("Température en Celsius"); Label unitLabel = new Label("Température en Celsius");
VBox vbox = new VBox(10, unitLabel); VBox vbox = new VBox(10, unitLabel);
vbox.setAlignment(Pos.CENTER); vbox.setAlignment(Pos.CENTER);
temperatureField = new TextField(String.valueOf(model.getTemperature()) + " °C"); temperatureField = new TextField(String.valueOf(model.getTemperature()) + " °C");
temperatureField.setEditable(false); // Le champ n'est pas modifiable directement temperatureField.setEditable(false); // Le champ n'est pas modifiable directement
...@@ -46,6 +51,9 @@ public class TextView extends Stage implements ITemperatureView { ...@@ -46,6 +51,9 @@ public class TextView extends Stage implements ITemperatureView {
Scene scene = new Scene(root, 300, 100); Scene scene = new Scene(root, 300, 100);
this.setScene(scene); this.setScene(scene);
this.show(); this.show();
// Attacher cette vue comme observateur du modèle
model.temperatureProperty().attach(this);
} }
@Override @Override
...@@ -57,17 +65,26 @@ public class TextView extends Stage implements ITemperatureView { ...@@ -57,17 +65,26 @@ public class TextView extends Stage implements ITemperatureView {
@Override @Override
public void incrementAction() { public void incrementAction() {
model.incrementTemperature(); model.incrementTemperature();
updateView(); // Mise à jour automatique via le modèle
} }
@Override @Override
public void decrementAction() { public void decrementAction() {
model.decrementTemperature(); model.decrementTemperature();
updateView(); // Mise à jour automatique via le modèle
} }
@Override
public void update(fr.univlille.iut.r304.utils.Observable observable, Object data) {
// Mise à jour de l'affichage lorsque la température change // Mise à jour de l'affichage lorsque la température change
private void updateView() { temperatureField.setText(String.valueOf(data) + " °C");
temperatureField.setText(String.valueOf(model.getTemperature()) + " °C"); }
@Override
public void update(fr.univlille.iut.r304.utils.Observable observable) {
// Non utilisé mais nécessaire pour implémenter Observer
}
public ConnectableProperty getTemperatureProperty() {
return temperatureProperty;
} }
} }
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment