diff --git a/Resources/ImageSensor.fxml b/Resources/ImageSensor.fxml
new file mode 100644
index 0000000..766946a
--- /dev/null
+++ b/Resources/ImageSensor.fxml
@@ -0,0 +1,22 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Resources/Img/Warm-Green-Landscape-Mountains-Wallpaper-1920x1200-1387564693.jpg b/Resources/Img/Warm-Green-Landscape-Mountains-Wallpaper-1920x1200-1387564693.jpg
new file mode 100644
index 0000000..d28d987
Binary files /dev/null and b/Resources/Img/Warm-Green-Landscape-Mountains-Wallpaper-1920x1200-1387564693.jpg differ
diff --git a/Resources/Img/snow-1674382959288-6329.jpg b/Resources/Img/snow-1674382959288-6329.jpg
new file mode 100644
index 0000000..dd901c7
Binary files /dev/null and b/Resources/Img/snow-1674382959288-6329.jpg differ
diff --git a/Resources/Img/videoblocks-panoramic-view-sand-dunes-and-hills-in-hot-desert-wilderness-desert-landscape_h0eyeniim_thumbnail-1080_01.png b/Resources/Img/videoblocks-panoramic-view-sand-dunes-and-hills-in-hot-desert-wilderness-desert-landscape_h0eyeniim_thumbnail-1080_01.png
new file mode 100644
index 0000000..e15d640
Binary files /dev/null and b/Resources/Img/videoblocks-panoramic-view-sand-dunes-and-hills-in-hot-desert-wilderness-desert-landscape_h0eyeniim_thumbnail-1080_01.png differ
diff --git a/Resources/SimpleSensor.fxml b/Resources/SimpleSensor.fxml
new file mode 100644
index 0000000..bbaee45
--- /dev/null
+++ b/Resources/SimpleSensor.fxml
@@ -0,0 +1,16 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/TP_JavaFX.iml b/TP_JavaFX.iml
index d5b343a..a071c97 100644
--- a/TP_JavaFX.iml
+++ b/TP_JavaFX.iml
@@ -8,5 +8,6 @@
+
\ No newline at end of file
diff --git a/src/Launcher/Launch.java b/src/Launcher/Launch.java
new file mode 100644
index 0000000..466b596
--- /dev/null
+++ b/src/Launcher/Launch.java
@@ -0,0 +1,43 @@
+package Launcher;
+
+import Model.ImageSensor;
+import javafx.application.Application;
+import javafx.application.Platform;
+import javafx.stage.Stage;
+
+import Model.Sensor;
+import View.ImageSensorController;
+
+
+import java.io.IOException;
+
+public class Launch extends Application {
+
+ @Override
+ public void start(Stage primaryStage) throws IOException {
+ ImageSensor imgSens = new ImageSensor(1,"ImageSensor");
+
+ Thread t = new Thread(()->{
+ while (true){
+ try{
+ Thread.sleep(1000);
+ Platform.runLater(()-> {
+ try{
+ imgSens.getTemperature();
+ }catch (Exception e){
+ throw new RuntimeException(e);
+ }
+ });
+
+ }catch (InterruptedException e){
+ throw new RuntimeException(e);
+ }
+ }
+ });
+ t.start();
+ }
+
+ public static void main(String args[]) {
+ Application.launch(args);
+ }
+}
\ No newline at end of file
diff --git a/src/Main.java b/src/Main.java
deleted file mode 100644
index 3e59c38..0000000
--- a/src/Main.java
+++ /dev/null
@@ -1,5 +0,0 @@
-public class Main {
- public static void main(String[] args) {
- System.out.println("Hello world!");
- }
-}
\ No newline at end of file
diff --git a/src/Model/IGenStrategy.java b/src/Model/IGenStrategy.java
new file mode 100644
index 0000000..e461199
--- /dev/null
+++ b/src/Model/IGenStrategy.java
@@ -0,0 +1,5 @@
+package Model;
+
+public interface IGenStrategy {
+ abstract int generate();
+}
diff --git a/src/Model/ImageSensor.java b/src/Model/ImageSensor.java
new file mode 100644
index 0000000..78439d4
--- /dev/null
+++ b/src/Model/ImageSensor.java
@@ -0,0 +1,31 @@
+package Model;
+
+import javafx.beans.property.ObjectProperty;
+import javafx.beans.property.SimpleObjectProperty;
+import javafx.scene.image.Image;
+
+import java.util.Random;
+
+
+public class ImageSensor extends SimpleSensor{
+
+ private final ObjectProperty image = new SimpleObjectProperty<>();
+ public ObjectProperty getImage(){return image;}
+ public void setImage(Image image){this.image.set(image);}
+ public ImageSensor(float t, String n) {
+ super(t, n, new RandomGenerator());
+ }
+
+ @Override
+ public void genTemp(){
+ setTemperature(15);
+ if(getTemperature()<0){
+ setImage(new Image("/Img/snow-1674382959288-6329.jpg"));
+ }else if(getTemperature()>0 && getTemperature()<20){
+ setImage(new Image("/Img/Warm-Green-Landscape-Mountains-Wallpaper-1920x1200-1387564693.jpg"));
+ }else {
+ setImage(new Image("/Img/videoblocks-panoramic-view-sand-dunes-and-hills-in-hot-desert-wilderness-desert-landscape_h0eyeniim_thumbnail-1080_01.png"));
+ }
+
+ }
+}
diff --git a/src/Model/RandomGenerator.java b/src/Model/RandomGenerator.java
new file mode 100644
index 0000000..8a078d0
--- /dev/null
+++ b/src/Model/RandomGenerator.java
@@ -0,0 +1,11 @@
+package Model;
+
+import java.util.Random;
+
+public class RandomGenerator implements IGenStrategy{
+ @Override
+ public int generate() {
+ Random rand = new Random();
+ return rand.nextInt(50);
+ }
+}
diff --git a/src/Model/Sensor.java b/src/Model/Sensor.java
new file mode 100644
index 0000000..9f20f3c
--- /dev/null
+++ b/src/Model/Sensor.java
@@ -0,0 +1,32 @@
+package Model;
+
+import javafx.beans.property.FloatProperty;
+import javafx.beans.property.SimpleFloatProperty;
+import javafx.beans.property.SimpleStringProperty;
+import javafx.beans.property.StringProperty;
+
+import java.util.UUID;
+
+public abstract class Sensor {
+ private final FloatProperty temperature = new SimpleFloatProperty();
+ public float getTemperature() {return temperature.get();}
+ public FloatProperty temperatureProperty() {return temperature;}
+ public void setTemperature(float temperature) {this.temperature.set(temperature);}
+ private final StringProperty name = new SimpleStringProperty();
+ public String getName() {return name.get();}
+ public StringProperty nameProperty() {return name;}
+ public void setName(String name) {this.name.set(name);}
+ private final StringProperty id = new SimpleStringProperty(UUID.randomUUID().toString());
+ public String getId() {return id.get();}
+ public StringProperty idProperty() {return id;}
+ public void setId(String id) {this.id.set(id);}
+
+ public Sensor(float t,String n){
+ this.temperature.set(t);
+ this.name.set(n);
+ }
+
+ public abstract void genTemp();
+
+
+}
diff --git a/src/Model/SimpleSensor.java b/src/Model/SimpleSensor.java
new file mode 100644
index 0000000..b143575
--- /dev/null
+++ b/src/Model/SimpleSensor.java
@@ -0,0 +1,19 @@
+package Model;
+
+public class SimpleSensor extends Sensor{
+ private IGenStrategy gen;
+
+ public SimpleSensor(float t, String n,IGenStrategy genStrat) {
+ super(t, n);
+ this.gen = genStrat;
+ }
+
+ private void setStrategy(IGenStrategy g){
+ gen = g;
+ }
+
+ @Override
+ public void genTemp() {
+ setTemperature(gen.generate());
+ }
+}
diff --git a/src/View/FXMLWindow.java b/src/View/FXMLWindow.java
new file mode 100644
index 0000000..c92dbc7
--- /dev/null
+++ b/src/View/FXMLWindow.java
@@ -0,0 +1,18 @@
+package View;
+
+import javafx.fxml.FXMLLoader;
+import javafx.scene.Parent;
+import javafx.scene.Scene;
+import javafx.stage.Stage;
+
+import java.io.IOException;
+
+public class FXMLWindow extends Stage {
+ public FXMLWindow(String title,String url)throws IOException{
+ FXMLLoader fxmlLoader = new FXMLLoader(getClass().getClassLoader().getResource(url));
+ fxmlLoader.setController(this);
+ Parent group = fxmlLoader.load();
+ this.setScene(new Scene(group));
+ this.show();
+ }
+}
diff --git a/src/View/ImageSensorController.java b/src/View/ImageSensorController.java
new file mode 100644
index 0000000..dd347a6
--- /dev/null
+++ b/src/View/ImageSensorController.java
@@ -0,0 +1,24 @@
+package View;
+
+import Model.ImageSensor;
+import javafx.fxml.FXML;
+import javafx.scene.image.ImageView;
+import javafx.scene.text.Text;
+import javafx.util.converter.NumberStringConverter;
+
+import java.io.IOException;
+
+public class ImageSensorController extends FXMLWindow{
+
+ @FXML
+ private Text temp;
+
+ @FXML
+ private ImageView img;
+
+ public ImageSensorController(ImageSensor sens,String title, String url) throws IOException {
+ super(title, url);
+ temp.textProperty().bindBidirectional(sens.temperatureProperty(),new NumberStringConverter());
+ img.imageProperty().bindBidirectional(sens.getImage());
+ }
+}