commit 81cb9ac1dd561dc4902766f642c875be523d8330 Author: Noé Garnier Date: Wed Jan 18 14:52:50 2023 +0100 Initial diff --git a/.idea/.gitignore b/.idea/.gitignore new file mode 100644 index 0000000..13566b8 --- /dev/null +++ b/.idea/.gitignore @@ -0,0 +1,8 @@ +# Default ignored files +/shelf/ +/workspace.xml +# Editor-based HTTP Client requests +/httpRequests/ +# Datasource local storage ignored files +/dataSources/ +/dataSources.local.xml diff --git a/.idea/libraries/lib.xml b/.idea/libraries/lib.xml new file mode 100644 index 0000000..d037a4e --- /dev/null +++ b/.idea/libraries/lib.xml @@ -0,0 +1,10 @@ + + + + + + + + + + \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml new file mode 100644 index 0000000..7464918 --- /dev/null +++ b/.idea/misc.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/.idea/modules.xml b/.idea/modules.xml new file mode 100644 index 0000000..826633f --- /dev/null +++ b/.idea/modules.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/.idea/uiDesigner.xml b/.idea/uiDesigner.xml new file mode 100644 index 0000000..2b63946 --- /dev/null +++ b/.idea/uiDesigner.xml @@ -0,0 +1,124 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/vcs.xml b/.idea/vcs.xml new file mode 100644 index 0000000..94a25f7 --- /dev/null +++ b/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/Capteur.iml b/Capteur.iml new file mode 100644 index 0000000..e9ed9b1 --- /dev/null +++ b/Capteur.iml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/READ_ME.txt b/READ_ME.txt new file mode 100644 index 0000000..46a955d --- /dev/null +++ b/READ_ME.txt @@ -0,0 +1,3 @@ +-instancier FXMLLoader +-FXMLLoader.set'Controller' +-FXMLLoader.load \ No newline at end of file diff --git a/out/production/Capteur/Main.class b/out/production/Capteur/Main.class new file mode 100644 index 0000000..f47a8f7 Binary files /dev/null and b/out/production/Capteur/Main.class differ diff --git a/out/production/Capteur/application/ImageController.class b/out/production/Capteur/application/ImageController.class new file mode 100644 index 0000000..3b690f5 Binary files /dev/null and b/out/production/Capteur/application/ImageController.class differ diff --git a/out/production/Capteur/application/MainController.class b/out/production/Capteur/application/MainController.class new file mode 100644 index 0000000..46a4feb Binary files /dev/null and b/out/production/Capteur/application/MainController.class differ diff --git a/out/production/Capteur/application/SpinnerController.class b/out/production/Capteur/application/SpinnerController.class new file mode 100644 index 0000000..3640951 Binary files /dev/null and b/out/production/Capteur/application/SpinnerController.class differ diff --git a/out/production/Capteur/fxml/ImageWindow.fxml b/out/production/Capteur/fxml/ImageWindow.fxml new file mode 100644 index 0000000..346fc80 --- /dev/null +++ b/out/production/Capteur/fxml/ImageWindow.fxml @@ -0,0 +1,52 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/out/production/Capteur/fxml/MainWindow.fxml b/out/production/Capteur/fxml/MainWindow.fxml new file mode 100644 index 0000000..037eae1 --- /dev/null +++ b/out/production/Capteur/fxml/MainWindow.fxml @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/out/production/Capteur/launcher/Console.class b/out/production/Capteur/launcher/Console.class new file mode 100644 index 0000000..57648dd Binary files /dev/null and b/out/production/Capteur/launcher/Console.class differ diff --git a/out/production/Capteur/launcher/LaunchMeteo.class b/out/production/Capteur/launcher/LaunchMeteo.class new file mode 100644 index 0000000..11edb21 Binary files /dev/null and b/out/production/Capteur/launcher/LaunchMeteo.class differ diff --git a/out/production/Capteur/model/Capteur.class b/out/production/Capteur/model/Capteur.class new file mode 100644 index 0000000..6099dd2 Binary files /dev/null and b/out/production/Capteur/model/Capteur.class differ diff --git a/out/production/Capteur/model/GenerateurAleatoire.class b/out/production/Capteur/model/GenerateurAleatoire.class new file mode 100644 index 0000000..3416c7d Binary files /dev/null and b/out/production/Capteur/model/GenerateurAleatoire.class differ diff --git a/out/production/Capteur/model/GenerateurStrategy.class b/out/production/Capteur/model/GenerateurStrategy.class new file mode 100644 index 0000000..500e393 Binary files /dev/null and b/out/production/Capteur/model/GenerateurStrategy.class differ diff --git a/out/production/Capteur/model/Observable.class b/out/production/Capteur/model/Observable.class new file mode 100644 index 0000000..793b657 Binary files /dev/null and b/out/production/Capteur/model/Observable.class differ diff --git a/out/production/Capteur/model/Observateur.class b/out/production/Capteur/model/Observateur.class new file mode 100644 index 0000000..5966eab Binary files /dev/null and b/out/production/Capteur/model/Observateur.class differ diff --git a/out/production/Capteur/model/Thread.class b/out/production/Capteur/model/Thread.class new file mode 100644 index 0000000..74ff14a Binary files /dev/null and b/out/production/Capteur/model/Thread.class differ diff --git a/out/production/Capteur/view/AfficheurTemperature.class b/out/production/Capteur/view/AfficheurTemperature.class new file mode 100644 index 0000000..5561adb Binary files /dev/null and b/out/production/Capteur/view/AfficheurTemperature.class differ diff --git a/out/production/Capteur/view/ImageWindow.class b/out/production/Capteur/view/ImageWindow.class new file mode 100644 index 0000000..aee12fa Binary files /dev/null and b/out/production/Capteur/view/ImageWindow.class differ diff --git a/out/production/Capteur/view/MainWindow.class b/out/production/Capteur/view/MainWindow.class new file mode 100644 index 0000000..307724d Binary files /dev/null and b/out/production/Capteur/view/MainWindow.class differ diff --git a/out/production/Capteur/view/SaisiseurTemperature.class b/out/production/Capteur/view/SaisiseurTemperature.class new file mode 100644 index 0000000..710da95 Binary files /dev/null and b/out/production/Capteur/view/SaisiseurTemperature.class differ diff --git a/out/production/Capteur/view/SpinnerWindow.class b/out/production/Capteur/view/SpinnerWindow.class new file mode 100644 index 0000000..3038af9 Binary files /dev/null and b/out/production/Capteur/view/SpinnerWindow.class differ diff --git a/out/production/Capteur/view/Visualisateur.class b/out/production/Capteur/view/Visualisateur.class new file mode 100644 index 0000000..a90741d Binary files /dev/null and b/out/production/Capteur/view/Visualisateur.class differ diff --git a/resource/fxml/ImageWindow.fxml b/resource/fxml/ImageWindow.fxml new file mode 100644 index 0000000..346fc80 --- /dev/null +++ b/resource/fxml/ImageWindow.fxml @@ -0,0 +1,52 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/resource/fxml/MainWindow.fxml b/resource/fxml/MainWindow.fxml new file mode 100644 index 0000000..037eae1 --- /dev/null +++ b/resource/fxml/MainWindow.fxml @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/Main.java b/src/Main.java new file mode 100644 index 0000000..3e59c38 --- /dev/null +++ b/src/Main.java @@ -0,0 +1,5 @@ +public class Main { + public static void main(String[] args) { + System.out.println("Hello world!"); + } +} \ No newline at end of file diff --git a/src/application/ImageController.java b/src/application/ImageController.java new file mode 100644 index 0000000..6f537ef --- /dev/null +++ b/src/application/ImageController.java @@ -0,0 +1,4 @@ +package application; + +public class ImageController { +} diff --git a/src/application/MainController.java b/src/application/MainController.java new file mode 100644 index 0000000..d5391f7 --- /dev/null +++ b/src/application/MainController.java @@ -0,0 +1,4 @@ +package application; + +public class MainController { +} diff --git a/src/application/SpinnerController.java b/src/application/SpinnerController.java new file mode 100644 index 0000000..d32a7df --- /dev/null +++ b/src/application/SpinnerController.java @@ -0,0 +1,4 @@ +package application; + +public class SpinnerController { +} diff --git a/src/launcher/Console.java b/src/launcher/Console.java new file mode 100644 index 0000000..5eb98cc --- /dev/null +++ b/src/launcher/Console.java @@ -0,0 +1,23 @@ +package launcher; + +import model.Capteur; +import model.GenerateurAleatoire; +import view.AfficheurTemperature; +import view.SaisiseurTemperature; + +import java.util.Random; + +public class Console { + public static void main(String[] args) { + GenerateurAleatoire ga = new GenerateurAleatoire(-5,40); + Capteur C001 = new Capteur("C001", ga); + AfficheurTemperature a1 = new AfficheurTemperature("a1", C001); + AfficheurTemperature a2 = new AfficheurTemperature("a2", C001); + SaisiseurTemperature s1 = new SaisiseurTemperature("s1", C001); + C001.addObservateur(a1); + C001.addObservateur(a2); + C001.addObservateur(s1); + s1.sasir(C001.getStrategy().genereTemperature()); + } +} + diff --git a/src/launcher/LaunchMeteo.java b/src/launcher/LaunchMeteo.java new file mode 100644 index 0000000..95ffea5 --- /dev/null +++ b/src/launcher/LaunchMeteo.java @@ -0,0 +1,26 @@ +package launcher; + +import javafx.application.Application; +import javafx.fxml.FXMLLoader; +import javafx.scene.Parent; +import javafx.scene.Scene; +import javafx.scene.layout.BorderPane; +import javafx.stage.Stage; + +public class LaunchMeteo extends Application { + private Stage primaryStage; + private BorderPane layout; + + @Override + public void start(Stage primaryStage) throws Exception { + Parent root = FXMLLoader.load(getClass().getResource("/fxml/MainWindow.fxml")); + Scene scene = new Scene(root); + primaryStage.setScene(scene); + primaryStage.setTitle("Title"); + primaryStage.show(); + } + + public static void main(String[] args) { + launch(args); + } +} \ No newline at end of file diff --git a/src/model/Capteur.java b/src/model/Capteur.java new file mode 100644 index 0000000..1ef99ba --- /dev/null +++ b/src/model/Capteur.java @@ -0,0 +1,67 @@ +package model; + +import javafx.beans.property.DoubleProperty; +import javafx.beans.property.SimpleDoubleProperty; + +import java.util.ArrayList; + +public class Capteur extends Observable implements Runnable{ + private static int idActuel; + private int id; + private String nom; + private DoubleProperty temperature; +// private Thread thread; + private GenerateurStrategy strategy; + + + public Capteur(String nom, GenerateurStrategy strategy) { + this.id = idActuel; + idActuel += 1; + this.nom = nom; + this.temperature = new SimpleDoubleProperty(strategy.genereTemperature()); + this.lesObservateurs = new ArrayList<>(); + this.strategy = strategy; + } + + public int getId() { + return id; + } + + public void setId(int id) { + this.id = id; + } + + public String getNom() { + return nom; + } + + public void setNom(String nom) { + this.nom = nom; + this.notifier(); + } + + public DoubleProperty getTemperature() { + return temperature; + } + + public void setTemperature(double temperature) { + this.temperature = new SimpleDoubleProperty(temperature); + this.notifier(); + } + + public GenerateurStrategy getStrategy() { + return strategy; + } + + public void setStrategy(GenerateurStrategy strategy) { + this.strategy = strategy; + } + + public void setGenerateur(GenerateurStrategy strategy){ + this.strategy = strategy; + } + + @Override + public void run(){} + +} diff --git a/src/model/GenerateurAleatoire.java b/src/model/GenerateurAleatoire.java new file mode 100644 index 0000000..5a709b0 --- /dev/null +++ b/src/model/GenerateurAleatoire.java @@ -0,0 +1,42 @@ +package model; + +import java.util.Random; + +public class GenerateurAleatoire implements GenerateurStrategy{ + private double bornInf; + private double bornSup; + + public GenerateurAleatoire(double bornInf, double bornSup) { + this.bornInf = bornInf; + this.bornSup = bornSup; + } + + public GenerateurAleatoire(){ + this.bornInf = Double.MIN_VALUE; + this.bornSup = Double.MAX_VALUE; + } + + public double getBornInf() { + return bornInf; + } + + public void setBornInf(double bornInf) { + this.bornInf = bornInf; + } + + public double getBornSup() { + return bornSup; + } + + public void setBornSup(double bornSup) { + this.bornSup = bornSup; + } + + @Override + public double genereTemperature() { + Random random = new Random(); + double temperature; + temperature = bornInf+random.nextDouble(bornSup-bornInf); + return temperature; + } +} diff --git a/src/model/GenerateurStrategy.java b/src/model/GenerateurStrategy.java new file mode 100644 index 0000000..5d858ac --- /dev/null +++ b/src/model/GenerateurStrategy.java @@ -0,0 +1,5 @@ +package model; + +public interface GenerateurStrategy { + public double genereTemperature(); +} diff --git a/src/model/Observable.java b/src/model/Observable.java new file mode 100644 index 0000000..ed64a28 --- /dev/null +++ b/src/model/Observable.java @@ -0,0 +1,18 @@ +package model; + +import java.util.List; + +public abstract class Observable { + public List lesObservateurs; + public void addObservateur(Observateur observateur){ + this.lesObservateurs.add(observateur); + } + public void deleteObservateur(Observateur observateur){ + this.lesObservateurs.remove(observateur); + } + public void notifier(){ + for (Observateur observateur : lesObservateurs){ + observateur.update(); + } + } +} diff --git a/src/model/Observateur.java b/src/model/Observateur.java new file mode 100644 index 0000000..a7b1853 --- /dev/null +++ b/src/model/Observateur.java @@ -0,0 +1,4 @@ +package model; +public interface Observateur { + void update(); +} diff --git a/src/model/Thread.java b/src/model/Thread.java new file mode 100644 index 0000000..6250eb8 --- /dev/null +++ b/src/model/Thread.java @@ -0,0 +1,4 @@ +package model; + +public class Thread { +} diff --git a/src/view/AfficheurTemperature.java b/src/view/AfficheurTemperature.java new file mode 100644 index 0000000..3e6ba5f --- /dev/null +++ b/src/view/AfficheurTemperature.java @@ -0,0 +1,19 @@ +package view; + +import model.Capteur; +import model.Observateur; + +public class AfficheurTemperature implements Observateur { + private String nom; + private Capteur capteur; + + public AfficheurTemperature(String nom, Capteur capteur) { + this.nom = nom; + this.capteur = capteur; + } + + @Override + public void update() { + System.out.println("["+this.nom+"] "+this.capteur.getNom() + " : " + this.capteur.getTemperature() + " °C"); + } +} diff --git a/src/view/ImageWindow.java b/src/view/ImageWindow.java new file mode 100644 index 0000000..cab55de --- /dev/null +++ b/src/view/ImageWindow.java @@ -0,0 +1,46 @@ +package view; + +import javafx.beans.property.Property; +import javafx.fxml.FXML; +import javafx.fxml.FXMLLoader; +import javafx.scene.Parent; +import javafx.scene.Scene; +import javafx.scene.control.Label; +import javafx.scene.layout.BorderPane; +import javafx.scene.layout.GridPane; +import javafx.stage.Stage; +import javafx.util.converter.NumberStringConverter; +import model.Capteur; +import model.GenerateurAleatoire; +import java.io.IOException; + +public class ImageWindow extends Visualisateur{ + private Capteur capteur; + private GridPane layout; + @FXML + private Label temperature; + + public ImageWindow(Capteur capteur) throws IOException { + this.capteur = capteur; + Stage stage = new Stage(); + layout = new GridPane(); + FXMLLoader loader = new FXMLLoader(getClass().getResource("/fxml/ImageWindow.fxml")); + loader.setRoot(this.layout); + loader.setController(this); + Parent root = loader.load(); + Scene scene = new Scene(root); + stage.setScene(scene); + stage.setTitle("Image"); + stage.show(); + } + + @FXML + public void initialize(){ + temperature.textProperty().bindBidirectional(this.capteur.getTemperature(), new NumberStringConverter()); + } + + @Override + public void update() { + temperature.textProperty().bindBidirectional(this.capteur.getTemperature(), new NumberStringConverter()); + } +} diff --git a/src/view/MainWindow.java b/src/view/MainWindow.java new file mode 100644 index 0000000..78980c5 --- /dev/null +++ b/src/view/MainWindow.java @@ -0,0 +1,39 @@ +package view; + +import javafx.fxml.FXML; +import javafx.fxml.FXMLLoader; +import javafx.scene.Parent; +import javafx.scene.Scene; +import javafx.scene.control.Button; +import javafx.scene.layout.GridPane; +import javafx.stage.Stage; +import model.Capteur; +import model.GenerateurAleatoire; + +public class MainWindow { + @FXML + private Button btnSpinner; + @FXML + private Button btnImage; + @FXML + private Button btnFermer; + protected Capteur capteur; + + public void initialize(){ + this.capteur = new Capteur("a", new GenerateurAleatoire(0,12)); + } + @FXML + private void clickButtonFermer(){ + Stage stage = (Stage) btnFermer.getScene().getWindow(); + stage.close(); + } + + @FXML + private void clickButtonImage() throws Exception{ + ImageWindow Iw = new ImageWindow(this.capteur); + } + @FXML + private void clickButtonSpinner() throws Exception{ + SpinnerWindow Sw = new SpinnerWindow(this.capteur); + } +} diff --git a/src/view/SaisiseurTemperature.java b/src/view/SaisiseurTemperature.java new file mode 100644 index 0000000..0c668bd --- /dev/null +++ b/src/view/SaisiseurTemperature.java @@ -0,0 +1,22 @@ +package view; + +import model.Capteur; +import model.Observateur; + +public class SaisiseurTemperature implements Observateur { + private String nom; + private Capteur capteur; + + public SaisiseurTemperature(String nom, Capteur capteur) { + this.nom = nom; + this.capteur = capteur; + } + + @Override + public void update() { + System.out.println("["+this.nom+"] "+this.capteur.getNom() + " : " + this.capteur.getTemperature() + " °C"); + } + public void sasir(double temp){ + this.capteur.setTemperature(temp); + } +} diff --git a/src/view/SpinnerWindow.java b/src/view/SpinnerWindow.java new file mode 100644 index 0000000..06a67b0 --- /dev/null +++ b/src/view/SpinnerWindow.java @@ -0,0 +1,46 @@ +package view; + +import javafx.beans.property.IntegerProperty; +import javafx.beans.property.ObjectProperty; +import javafx.beans.property.SimpleObjectProperty; +import javafx.fxml.FXML; +import javafx.fxml.FXMLLoader; +import javafx.scene.Parent; +import javafx.scene.Scene; +import javafx.scene.control.Spinner; +import javafx.scene.layout.GridPane; +import javafx.stage.Stage; +import javafx.util.converter.NumberStringConverter; +import model.Capteur; + +import java.io.IOException; + +public class SpinnerWindow extends Visualisateur{ + @FXML + private Spinner spinner; + protected Capteur capteur; + private GridPane layout; + + public SpinnerWindow(Capteur capteur) throws IOException { + this.capteur = capteur; + Stage stage = new Stage(); + layout = new GridPane(); + FXMLLoader loader = new FXMLLoader(getClass().getResource("/fxml/SpinnerWindow.fxml")); + loader.setRoot(this.layout); + loader.setController(this); + Parent root = loader.load(); + Scene scene = new Scene(root); + stage.setScene(scene); + stage.setTitle("Spinner"); + stage.show(); + } + @FXML + public void initialize(){ + spinner.getValueFactory().valueProperty().bindBidirectional(this.capteur.getTemperature()); + } + + @Override + public void update() { + spinner.getValueFactory().valueProperty().bindBidirectional(this.capteur.getTemperature()); + } +} diff --git a/src/view/Visualisateur.java b/src/view/Visualisateur.java new file mode 100644 index 0000000..df5ee6d --- /dev/null +++ b/src/view/Visualisateur.java @@ -0,0 +1,16 @@ +package view; + +import javafx.fxml.FXML; +import javafx.stage.Stage; +import model.Capteur; +import model.Observateur; + +public abstract class Visualisateur implements Observateur { + private void clickFermer(){ +// Stage stage = (Stage) .getScene().getWindow(); +// stage.close(); + } + private void intialize (Capteur c){ + c.addObservateur(this); + } +}