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()); + } +}