diff --git a/resources/view/TreeView.fxml b/resources/view/TreeView.fxml
new file mode 100644
index 0000000..0c0d521
--- /dev/null
+++ b/resources/view/TreeView.fxml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/launcher/Launch.java b/src/launcher/Launch.java
index 6567581..d639e60 100644
--- a/src/launcher/Launch.java
+++ b/src/launcher/Launch.java
@@ -1,13 +1,18 @@
package launcher;
import javafx.application.Application;
+import javafx.beans.property.SimpleStringProperty;
+import javafx.beans.property.StringProperty;
import javafx.stage.Stage;
import model.*;
import view.CapteurView;
import view.ImageCtrlView;
import view.ThermostatView;
+import view.TreeViewCtrl;
import java.io.IOException;
+import java.util.ArrayList;
+import java.util.List;
import java.util.Map;
public class Launch extends Application {
@@ -17,40 +22,45 @@ public class Launch extends Application {
@Override
public void start(Stage primaryStage) throws IOException, InterruptedException {
+ // Creation des capteurs
+ UnitCapteur captorC = new UnitCapteur(1,new SimpleStringProperty("Capteur CPU"),new StrategyCPU());
+ UnitCapteur captorR = new UnitCapteur(2,new SimpleStringProperty("Capteur Random"),new StrategyRandom());
+ CapteurVirtuel captorV = new CapteurVirtuel(5,new SimpleStringProperty("Capteur Virtuel"));
- UnitCapteur captorI = new UnitCapteur(2,"Capteur Intervalle",new StrategyCPU());
- UnitCapteur captorR = new UnitCapteur(3,"Capteur Realiste", new StrategyCPU());
- UnitCapteur captorC = new UnitCapteur(4,"Capteur CPU",new StrategyCPU());
- CapteurVirtuel captorV = new CapteurVirtuel(5,"CapteurVirtuel");
-
- captorV.addCapteur(captorI,1);
+ // Ajout des capteurs dans la collections du capteur virtuel
captorV.addCapteur(captorC,1);
captorV.addCapteur(captorR,1);
-
- // FXML NOT WORKING
- Stage thermostatStage = new Stage();
- CapteurView capteurView = new ImageCtrlView(captorV,"view/Image.fxml","mon titre");
for (Map.Entry entry : captorV.getCapteurs().entrySet()) {
CapteurAbstrait c = entry.getKey();
c.genTemp();
}
- ThermostatView thermostatView = new ThermostatView(captorV,"view/Thermostat.fxml","mon titre");
+ captorV.genTemp();
+ ArrayList capteurs = new ArrayList<>();
+ capteurs.add(captorC);
+ capteurs.add(captorR);
+ capteurs.add(captorV);
- //Random random = new Random();
+ // FXML NOT WORKING
+ //Stage thermostatStage = new Stage();
+ //CapteurView capteurView = new ImageCtrlView(captorV,"view/Image.fxml","mon titre");
+ //ThermostatView thermostatView = new ThermostatView(captorV,"view/Thermostat.fxml","mon titre");
+ TreeViewCtrl treeViewCtrl = new TreeViewCtrl(capteurs,"view/TreeView.fxml","treeView");
Thread t = new Thread() {
public void run() {
while (true) {
+ for (Map.Entry entry : captorV.getCapteurs().entrySet()) {
+ CapteurAbstrait c = entry.getKey();
+ c.genTemp();
+ }
captorV.genTemp();
try {
+ //((ImageCtrlView) capteurView).changeImage();
System.out.println(captorV.getNom() + ": " + captorV.getTemp().getValue() + " °C");
for (Map.Entry entry : captorV.getCapteurs().entrySet()) {
CapteurAbstrait c = entry.getKey();
- c.genTemp();
- System.out.println(c.getNom() + ": " + c.getTemp().getValue() + " °C");
System.out.println(c.getNom() + ": " + c.getTemp().getValue() + " °C");
}
-
sleep(4000);
} catch (InterruptedException e) {
throw new RuntimeException(e);
diff --git a/src/model/CapteurAbstrait.java b/src/model/CapteurAbstrait.java
index f1bfd4b..0633683 100644
--- a/src/model/CapteurAbstrait.java
+++ b/src/model/CapteurAbstrait.java
@@ -2,13 +2,15 @@ package model;
import javafx.beans.property.ObjectProperty;
import javafx.beans.property.SimpleObjectProperty;
+import javafx.beans.property.SimpleStringProperty;
+import javafx.beans.property.StringProperty;
public abstract class CapteurAbstrait {
private int id;
- private String nom;
+ private StringProperty nom;
private ObjectProperty temp = new SimpleObjectProperty<>();
- CapteurAbstrait(int id, String nom){
+ CapteurAbstrait(int id, StringProperty nom){
this.id = id;
this.nom = nom;
this.temp.setValue(0.0);
@@ -24,11 +26,11 @@ public abstract class CapteurAbstrait {
this.id = id;
}
- public String getNom() {
- return nom;
+ public StringProperty getNom() {
+ return this.nom;
}
- public void setNom(String nom) {
+ public void setNom(StringProperty nom) {
this.nom = nom;
}
@@ -40,4 +42,6 @@ public abstract class CapteurAbstrait {
this.temp.setValue(pTemp);
}
+ public abstract T accept (Visitor v);
+
}
diff --git a/src/model/CapteurVirtuel.java b/src/model/CapteurVirtuel.java
index 33afc99..29f15f8 100644
--- a/src/model/CapteurVirtuel.java
+++ b/src/model/CapteurVirtuel.java
@@ -2,6 +2,7 @@ package model;
import javafx.beans.property.ObjectProperty;
import javafx.beans.property.SimpleObjectProperty;
+import javafx.beans.property.StringProperty;
import java.util.HashMap;
import java.util.List;
@@ -11,18 +12,22 @@ public class CapteurVirtuel extends CapteurAbstrait {
private Map capteurs;
- public CapteurVirtuel(int id, String nom){
+ public CapteurVirtuel(int id, StringProperty nom){
super(id, nom);
this.capteurs = new HashMap<>();
}
- public void addCapteur(CapteurAbstrait c, int p){
+ public void addCapteur(UnitCapteur c, int p){
this.capteurs.put(c,p);
}
- public void removeCapteur(CapteurAbstrait c){
+ public void removeCapteur(UnitCapteur c){
this.capteurs.remove(c);
}
+ public T accept(Visitor v){
+ return v.visit(this);
+ }
+
public Map getCapteurs(){return this.capteurs;}
// calcule la temperature moyenne des capteurs sa collection de capteurs
diff --git a/src/model/StrategyRandom.java b/src/model/StrategyRandom.java
index 3f94bb3..c379938 100644
--- a/src/model/StrategyRandom.java
+++ b/src/model/StrategyRandom.java
@@ -8,6 +8,6 @@ public class StrategyRandom implements StrategyCaptor {
@Override
public double genTemp() {
Random random = new Random();
- return random.nextDouble(30);
+ return random.nextDouble(30) - 30;
}
}
diff --git a/src/model/UnitCapteur.java b/src/model/UnitCapteur.java
index a0794ff..4888593 100644
--- a/src/model/UnitCapteur.java
+++ b/src/model/UnitCapteur.java
@@ -1,9 +1,11 @@
package model;
+import javafx.beans.property.StringProperty;
+
public class UnitCapteur extends CapteurAbstrait{
private StrategyCaptor strategie;
- public UnitCapteur(int id, String nom,StrategyCaptor st) {
+ public UnitCapteur(int id, StringProperty nom, StrategyCaptor st) {
super(id, nom);
this.strategie = st;
}
@@ -12,4 +14,9 @@ public class UnitCapteur extends CapteurAbstrait{
public void genTemp() {
this.setTemp(strategie.genTemp());
}
+
+ @Override
+ public T accept(Visitor v) {
+ return v.visit(this);
+ }
}
diff --git a/src/view/ImageCtrlView.java b/src/view/ImageCtrlView.java
index 13445bc..0629c7e 100644
--- a/src/view/ImageCtrlView.java
+++ b/src/view/ImageCtrlView.java
@@ -26,7 +26,7 @@ public class ImageCtrlView extends CapteurView{
changeImage();
}
- private void changeImage() throws IOException {
+ public void changeImage() throws IOException {
if (this.capteur.getTemp().getValue() > 25){
input = clazz.getResourceAsStream("/images/sun.png");
imageview.setImage(new Image(input));
@@ -46,11 +46,13 @@ public class ImageCtrlView extends CapteurView{
Platform.exit();
}
- public void initialize() {
- /*try {
- changeImage();
- } catch (IOException e) {
- throw new RuntimeException(e);
- }*/
+ public void initialize(CapteurAbstrait capteur) {
+ /*capteur.getTemp().addListener((observable, oldValue, newValue) -> {
+ try {
+ changeImage();
+ } catch (IOException e) {
+ throw new RuntimeException(e);
+ }
+ });*/
}
}
diff --git a/src/view/ThermostatView.java b/src/view/ThermostatView.java
index 5eccbe2..17411f7 100644
--- a/src/view/ThermostatView.java
+++ b/src/view/ThermostatView.java
@@ -22,13 +22,11 @@ public class ThermostatView extends CapteurView{
this.capteur=capteur;
this.spin.setValueFactory(new SpinnerValueFactory.DoubleSpinnerValueFactory(0d,100d));
this.spin.getValueFactory().valueProperty().bindBidirectional(this.capteur.getTemp());
- SpinnerValueFactory valueFactory = new SpinnerValueFactory.DoubleSpinnerValueFactory(capteur.getTemp().getValue(),capteur.getTemp().getValue(), capteur.getTemp().getValue());
- spin.setValueFactory(valueFactory);
myBtn.setOnAction(e -> Platform.exit());
+
}
public void initialize() {
-
}
}
diff --git a/src/view/TreeViewCtrl.java b/src/view/TreeViewCtrl.java
new file mode 100644
index 0000000..b9727d2
--- /dev/null
+++ b/src/view/TreeViewCtrl.java
@@ -0,0 +1,74 @@
+package view;
+
+import java.io.IOException;
+import java.net.URL;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.ResourceBundle;
+
+import javafx.beans.property.StringProperty;
+import javafx.fxml.FXML;
+import javafx.fxml.Initializable;
+import javafx.scene.control.*;
+import javafx.scene.image.Image;
+import javafx.scene.image.ImageView;
+import javafx.scene.input.MouseEvent;
+import model.CapteurAbstrait;
+import model.CapteurVirtuel;
+import model.TreeItemFactoryVisitor;
+
+public class TreeViewCtrl extends FXMLView {
+ @FXML
+ private TreeView treeView;
+
+ @FXML
+ private Spinner spinnerTemp;
+
+ private ArrayList capteurAbstraits;
+
+ public TreeViewCtrl(ArrayList capteurs, String url, String title) throws IOException {
+ super(url,title);
+ this.capteurAbstraits = capteurs;;
+ TreeItem root = new TreeItem<>();
+ root.setExpanded(true);
+ treeView.setShowRoot(false);
+ TreeItemFactoryVisitor treeItemFactoryVisitor = new TreeItemFactoryVisitor();
+ treeView.setVisible(true);
+ for(CapteurAbstrait capteur: capteurAbstraits){
+ TreeItem item = capteur.accept(treeItemFactoryVisitor);
+ root.getChildren().add(item);
+ }
+ this.initializeCapteur();
+ }
+
+ public void initializeCapteur(){
+ treeView.setCellFactory(param -> new TreeCell(){
+ @Override
+ protected void updateItem(CapteurAbstrait capteur, boolean empty){
+ super.updateItem(capteur,empty);
+ if(empty){
+ textProperty().unbind();
+ setText("");
+ } else {
+ textProperty().bind(capteur.getNom());
+ }
+ }
+ });
+
+ spinnerTemp.setVisible(true);
+
+ CapteurAbstrait capteur = capteurAbstraits.get(0);
+ capteur.getTemp().addListener((observable, oldValue, newValue) -> {
+ System.out.println("Changement de température: " + oldValue + " est passé à "
+ + newValue);
+ });
+
+ SpinnerValueFactory spinnerValueFactory = new SpinnerValueFactory.DoubleSpinnerValueFactory(-150,1000,capteur.getTemp().getValue(),0.5);
+ spinnerTemp.setValueFactory(spinnerValueFactory);
+ spinnerTemp.getValueFactory().valueProperty().bindBidirectional(capteur.getTemp());
+ capteur.genTemp();
+ capteur.setTemp(capteur.getTemp().getValue());
+ System.out.println("initialize spinner");
+ System.out.println(spinnerTemp.getValueFactory().getValue());
+ };
+}