Skip to content
Snippets Groups Projects
Commit 2f32f64e authored by Amaury Vanoorenberghe's avatar Amaury Vanoorenberghe :scroll:
Browse files

Q3.1 / 3.2 - Ajout de vues basées sur le modèle Temperature

parent 72d023a1
Branches
No related tags found
No related merge requests found
package fr.univlille.iutinfo.m3105;
import fr.univlille.iutinfo.m3105.modelQ1.Thermogeekostat;
import fr.univlille.iutinfo.m3105.viewQ1.SliderView;
import fr.univlille.iutinfo.m3105.viewQ1.SpinnerView;
import fr.univlille.iutinfo.m3105.modelQ2.Echelle;
import fr.univlille.iutinfo.m3105.modelQ2.Temperature;
import fr.univlille.iutinfo.m3105.viewQ3.SliderView;
import fr.univlille.iutinfo.m3105.viewQ3.SpinnerView;
import javafx.application.Application;
import javafx.stage.Stage;
......@@ -14,8 +15,24 @@ public class Main extends Application {
@Override
public void start(Stage primaryStage) throws Exception {
// === QUESTION 1 ===
/*
Thermogeekostat thermo = new Thermogeekostat();
new SpinnerView(thermo).show();
new SliderView(thermo).show();
*/
// === QUESTION 3 ===
Temperature tempKelvin = new Temperature(Echelle.KELVIN);
Temperature tempCelsius = new Temperature(Echelle.CELSIUS);
Temperature tempNewton = new Temperature(Echelle.NEWTON);
tempKelvin.biconnectTo(tempCelsius);
tempCelsius.biconnectTo(tempNewton);
new SpinnerView(tempKelvin).show();
new SpinnerView(tempCelsius).show();
new SliderView(tempNewton).show();
}
}
......@@ -57,4 +57,17 @@ public class Conversions {
public static Double reaumurToKelvin(Double reaumur) {
return (reaumur + REAUMUR_OFFSET) / REAUMUR_FACTOR;
}
// === NEWTON ===
public static Double NEWTON_OFFSET = CELSIUS_OFFSET;
public static Double NEWTON_FACTOR = 0.33;
public static Double kelvinToNewton(Double kelvin) {
return (kelvin - NEWTON_OFFSET) * NEWTON_FACTOR;
}
public static Double newtonToKelvin(Double newton) {
return (newton / NEWTON_FACTOR) + NEWTON_FACTOR;
}
}
......@@ -5,13 +5,13 @@ import java.util.function.Function;
public enum Echelle {
//DELISLE ("Delisle", "°De"),
//LEYDEN ("Leyden", "°Le"),
//NEWTON ("Newton", "°N"),
//ROMER ("Røner", "°Rø"),
KELVIN ("Kelvin", "°K", Conversions::kelvinToKelvin, Conversions::kelvinToKelvin),
CELSIUS ("Celsius", "°C", Conversions::kelvinToCelsius, Conversions::celsiusToKelvin),
FAHRENHEIT ("Fahrenheit", "°F", Conversions::kelvinToFahrenheit, Conversions::fahrenheitToKelvin),
RANKINE ("Rankine", "°Ra", Conversions::kelvinToRankine, Conversions::rankineToKelvin),
REAUMUR ("Réaumur", "°Ré", Conversions::kelvinToReaumur, Conversions::reaumurToKelvin);
KELVIN ("Kelvin", "K", Conversions::kelvinToKelvin, Conversions::kelvinToKelvin),
CELSIUS ("Celsius", "C", Conversions::kelvinToCelsius, Conversions::celsiusToKelvin),
NEWTON ("Newton", "N", Conversions::kelvinToNewton, Conversions::newtonToKelvin),
FAHRENHEIT ("Fahrenheit", "F", Conversions::kelvinToFahrenheit, Conversions::fahrenheitToKelvin),
RANKINE ("Rankine", "Ra", Conversions::kelvinToRankine, Conversions::rankineToKelvin),
REAUMUR ("Réaumur", "Ré", Conversions::kelvinToReaumur, Conversions::reaumurToKelvin);
private final String NAME;
private final String ABBREVIATION;
......
......@@ -8,6 +8,7 @@ public class Temperature extends ConnectableProperty implements ITemperature {
public Temperature(Echelle echelle) {
ECHELLE = echelle;
setValue(0.0);
}
public Echelle getEchelle() {
......
package fr.univlille.iutinfo.m3105.viewQ3;
import fr.univlille.iutinfo.m3105.modelQ2.Temperature;
import fr.univlille.iutinfo.m3105.utils.Observer;
import fr.univlille.iutinfo.m3105.utils.Subject;
import fr.univlille.iutinfo.m3105.viewQ1.ITemperatureView;
import javafx.geometry.Pos;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.Slider;
import javafx.scene.layout.VBox;
import javafx.stage.Stage;
public class SliderView extends Stage implements ITemperatureView, Observer {
private final Temperature MODEL;
private final Slider SLIDER;
private final Button DECREMENT_BTN, INCREMENT_BTN;
public SliderView(Temperature model) {
MODEL = model;
MODEL.temperatureProperty().attach(this);
SLIDER = new Slider(-10000.0, 10000.0, MODEL.getTemperature());
DECREMENT_BTN = new Button("-");
INCREMENT_BTN = new Button("+");
DECREMENT_BTN.setOnAction((e) -> decrementAction());
INCREMENT_BTN.setOnAction((e) -> incrementAction());
SLIDER.valueProperty().addListener((e) -> {
MODEL.setTemperature(SLIDER.getValue());
});
VBox root = new VBox();
root.setAlignment(Pos.CENTER);
root.setSpacing(4);
root.getChildren().addAll(DECREMENT_BTN, SLIDER, INCREMENT_BTN);
Scene scene = new Scene(root, 320, 240);
setScene(scene);
setResizable(false);
update(MODEL, MODEL.getTemperature());
}
@Override
public double getDisplayedValue() {
return MODEL.getTemperature();
}
@Override
public void incrementAction() {
MODEL.incrementTemperature();
}
@Override
public void decrementAction() {
MODEL.decrementTemperature();
}
@Override
public void update(Subject subj) {
throw new UnsupportedOperationException();
}
@Override
public void update(Subject subj, Object data) {
if (MODEL.temperatureProperty().equals(subj)) {
Double value = MODEL.getTemperature();
SLIDER.setValue(value);
setTitle(MODEL.getEchelle().getName());
}
}
}
\ No newline at end of file
package fr.univlille.iutinfo.m3105.viewQ3;
import fr.univlille.iutinfo.m3105.modelQ2.Temperature;
import fr.univlille.iutinfo.m3105.utils.Observer;
import fr.univlille.iutinfo.m3105.utils.Subject;
import fr.univlille.iutinfo.m3105.viewQ1.ITemperatureView;
import javafx.geometry.Pos;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.Spinner;
import javafx.scene.control.SpinnerValueFactory;
import javafx.scene.control.SpinnerValueFactory.DoubleSpinnerValueFactory;
import javafx.scene.layout.HBox;
import javafx.stage.Stage;
public class SpinnerView extends Stage implements ITemperatureView, Observer {
private final Temperature MODEL;
private final Spinner<Double> SPINNER;
private final Button DECREMENT_BTN, INCREMENT_BTN;
public SpinnerView(Temperature model) {
MODEL = model;
MODEL.temperatureProperty().attach(this);
SPINNER = new Spinner<Double>();
DoubleSpinnerValueFactory spinFactory =
new SpinnerValueFactory.DoubleSpinnerValueFactory(-10000.0, 10000.0, MODEL.getTemperature());
SPINNER.setValueFactory(spinFactory);
DECREMENT_BTN = new Button("-");
INCREMENT_BTN = new Button("+");
DECREMENT_BTN.setOnAction((e) -> decrementAction());
INCREMENT_BTN.setOnAction((e) -> incrementAction());
SPINNER.valueProperty().addListener((e) -> {
MODEL.setTemperature(SPINNER.getValue());
});
HBox root = new HBox();
root.setAlignment(Pos.CENTER);
root.setSpacing(4);
root.getChildren().addAll(DECREMENT_BTN, SPINNER, INCREMENT_BTN);
Scene scene = new Scene(root, 320, 240);
setScene(scene);
setResizable(false);
update(MODEL, MODEL.getTemperature());
}
@Override
public double getDisplayedValue() {
return MODEL.getTemperature();
}
@Override
public void incrementAction() {
MODEL.incrementTemperature();
}
@Override
public void decrementAction() {
MODEL.decrementTemperature();
}
@Override
public void update(Subject subj) {
throw new UnsupportedOperationException();
}
@Override
public void update(Subject subj, Object data) {
if (MODEL.temperatureProperty().equals(subj)) {
Double value = MODEL.getTemperature();
SPINNER.getValueFactory().setValue(value);
setTitle(MODEL.getEchelle().getName());
}
}
}
package fr.univlille.iutinfo.m3105.viewQ3;
import fr.univlille.iutinfo.m3105.modelQ2.Temperature;
import fr.univlille.iutinfo.m3105.viewQ1.ITemperatureView;
import javafx.stage.Stage;
public class TextView extends Stage implements ITemperatureView {
/**
* Classe présente uniquement dans le but de ne pas casser les tests
* La vue est implémentée dans SpinnerView.java
*/
public class TextView extends SpinnerView {
public TextView(Temperature model) {
// TODO Auto-generated constructor stub
}
@Override
public double getDisplayedValue() {
// TODO Auto-generated method stub
return 0;
}
@Override
public void incrementAction() {
// TODO Auto-generated method stub
super(model);
}
@Override
public void decrementAction() {
// TODO Auto-generated method stub
}
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment