Skip to content
Snippets Groups Projects
Commit a5500ae9 authored by Gabriel Mille's avatar Gabriel Mille
Browse files

fin tp04 mvc thermo

parent 5f0487ef
No related branches found
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.SliderView;
import fr.univlille.iut.r304.thermo.view.TextView; import fr.univlille.iut.r304.thermo.view.TextView;
import javafx.application.Application; import javafx.application.Application;
import javafx.stage.Stage; import javafx.stage.Stage;
...@@ -15,6 +16,7 @@ public class Main extends Application { ...@@ -15,6 +16,7 @@ public class Main extends Application {
public void start(Stage primaryStage) throws Exception { public void start(Stage primaryStage) throws Exception {
Thermostat thermo = new Thermostat(); Thermostat thermo = new Thermostat();
new TextView(thermo); new TextView(thermo);
new SliderView(thermo);
} }
} }
package fr.univlille.iut.r304.thermo.model; 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 @Override
public void setTemperature(double d) { public void setTemperature(double d) {
// TODO Auto-generated method stub this.temperature = d;
notifyObservers();
} }
@Override @Override
public Double getTemperature() { public Double getTemperature() {
// TODO Auto-generated method stub return temperature;
return null;
} }
@Override @Override
public void incrementTemperature() { public void incrementTemperature() {
// TODO Auto-generated method stub setTemperature(temperature + 1);
} }
@Override @Override
public void decrementTemperature() { public void decrementTemperature() {
// TODO Auto-generated method stub setTemperature(temperature - 1);
} }
} }
\ No newline at end of file
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
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.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; 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) { 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.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(); this.show();
model.attach(this);
} }
@Override @Override
public double getDisplayedValue() { public double getDisplayedValue() {
// TODO Auto-generated method stub return model.getTemperature();
return 0;
} }
@Override @Override
public void incrementAction() { public void incrementAction() {
// TODO Auto-generated method stub model.incrementTemperature();
temperatureInput.setText(String.valueOf(model.getTemperature()));
} }
@Override @Override
public void decrementAction() { 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
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment