diff --git a/projet/ressources/Assets/hilarious-snow-memes.jpg b/projet/ressources/Assets/hilarious-snow-memes.jpg
new file mode 100644
index 0000000..578cac0
Binary files /dev/null and b/projet/ressources/Assets/hilarious-snow-memes.jpg differ
diff --git a/projet/ressources/Assets/this-is-fine.png b/projet/ressources/Assets/this-is-fine.png
new file mode 100644
index 0000000..3350537
Binary files /dev/null and b/projet/ressources/Assets/this-is-fine.png differ
diff --git a/projet/ressources/fxml/ImageCapteur.fxml b/projet/ressources/fxml/ImageCapteur.fxml
new file mode 100644
index 0000000..b49172b
--- /dev/null
+++ b/projet/ressources/fxml/ImageCapteur.fxml
@@ -0,0 +1,21 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/projet/ressources/fxml/TreeViewCapteur.fxml b/projet/ressources/fxml/TreeViewCapteur.fxml
index 8a2f537..a5b5bab 100644
--- a/projet/ressources/fxml/TreeViewCapteur.fxml
+++ b/projet/ressources/fxml/TreeViewCapteur.fxml
@@ -6,12 +6,19 @@
-
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/projet/src/launcher/Launch.java b/projet/src/launcher/Launch.java
index d7c4c6e..01745ba 100644
--- a/projet/src/launcher/Launch.java
+++ b/projet/src/launcher/Launch.java
@@ -7,9 +7,11 @@ import javafx.collections.ObservableList;
import javafx.collections.ObservableMap;
import javafx.stage.Stage;
import modele.Capteur;
+import modele.CapteurImage;
import modele.CapteurVirtuel;
import modele.Stub;
import view.TreeViewCapteur;
+import view.ViewCapteurImage;
import view.ViewCapteurVirtuel;
import java.io.IOException;
@@ -22,11 +24,11 @@ public class Launch extends Application {
@Override
public void start(Stage primaryStage) throws IOException {
- /*Parent root = FXMLLoader.load(getClass().getResource("/fxml/Capteur.fxml"));
- Scene scene = new Scene(root);*/
+ CapteurImage capteurImage = new CapteurImage(-42F, "salut");
CapteurVirtuel leCapteurVirtuel = (CapteurVirtuel) Stub.genererCapteur();
ObservableList capteurs = Stub.genererObservableList();
TreeViewCapteur treeViewCapteur = new TreeViewCapteur(capteurs,"/fxml/TreeViewCapteur.fxml","Mon capteur");
+ ViewCapteurImage viewCapteurImage = new ViewCapteurImage(capteurImage, "/fxml/ImageCapteur.fxml", "test");
Thread t = new Thread(() -> {
Random r = new Random();
@@ -34,6 +36,7 @@ public class Launch extends Application {
try {
Thread.sleep(1000);
Platform.runLater(() -> {
+ /*
for (ObservableMap.Entry map : leCapteurVirtuel.getLesCapteurs().entrySet()) {
try {
map.getValue().genTemp(r.nextFloat(50));
@@ -42,6 +45,8 @@ public class Launch extends Application {
}
}
leCapteurVirtuel.genTemp(1);
+ */
+ capteurImage.genTemp(r.nextFloat(-20,50));
});
} catch (InterruptedException e) {
diff --git a/projet/src/modele/Capteur.java b/projet/src/modele/Capteur.java
index fdaf089..3087e46 100644
--- a/projet/src/modele/Capteur.java
+++ b/projet/src/modele/Capteur.java
@@ -9,6 +9,7 @@ import javafx.collections.ObservableList;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
+import java.util.UUID;
public abstract class Capteur {
@@ -28,6 +29,11 @@ public abstract class Capteur {
public StringProperty nomProperty() {return nom;}
public void setNom(String nom) {this.nom.set(nom);}
+ 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 abstract void genTemp(float x) throws IOException;
}
diff --git a/projet/src/modele/CapteurImage.java b/projet/src/modele/CapteurImage.java
new file mode 100644
index 0000000..d9d3151
--- /dev/null
+++ b/projet/src/modele/CapteurImage.java
@@ -0,0 +1,35 @@
+package modele;
+
+import javafx.beans.property.ObjectProperty;
+import javafx.beans.property.SimpleObjectProperty;
+import javafx.beans.property.SimpleStringProperty;
+import javafx.beans.property.StringProperty;
+import javafx.scene.image.Image;
+
+import java.io.IOException;
+
+public class CapteurImage extends Capteur{
+
+ private final ObjectProperty image = new SimpleObjectProperty<>();
+ public ObjectProperty imageProperty() {return image;}
+ public void setImage(Image image) {this.image.set(image);}
+
+ public CapteurImage(float temp, String nom) {
+ super(temp, nom);
+ genTemp(temp);
+ }
+
+ @Override
+ public void genTemp(float x){
+ setTemperature(x);
+ if (getTemperature()<0){
+ setImage(new Image("/Assets/hilarious-snow-memes.jpg"));
+ }
+ else if(getTemperature()<22){
+ setImage(new Image("https://www.francetvinfo.fr/pictures/sbviI2swQTsA1oabZGCUO9wWajQ/1200x900/2017/08/30/phppmKyIc_1.jpg"));
+ }
+ else{
+ setImage(new Image("/Assets/this-is-fine.png"));
+ }
+ }
+}
diff --git a/projet/src/view/TreeViewCapteur.java b/projet/src/view/TreeViewCapteur.java
index 39c7130..7619626 100644
--- a/projet/src/view/TreeViewCapteur.java
+++ b/projet/src/view/TreeViewCapteur.java
@@ -12,55 +12,82 @@ import javafx.event.EventHandler;
import javafx.event.EventType;
import javafx.fxml.FXML;
import javafx.scene.control.*;
+import javafx.scene.text.Text;
import javafx.util.converter.NumberStringConverter;
import modele.Capteur;
import modele.CapteurVirtuel;
+import modele.CpuCapteur;
import java.io.IOException;
import java.util.ArrayList;
public class TreeViewCapteur extends FxmlWindow {
+ @FXML
+ private TreeView tree;
+ @FXML
+ private TextField name;
+ @FXML
+ private Text id;
+ @FXML
+ private TextField temperature;
+ private ObservableList lesCapteurs;
+
public TreeViewCapteur(ObservableList lesCapteurs, String url, String title) throws IOException {
- super(url,title);
+ super(url, title);
this.lesCapteurs = lesCapteurs;
- TreeItem root=new TreeItem<>();
- for (Capteur capteur: lesCapteurs) {
+ TreeItem root = new TreeItem<>();
+ tree.setRoot(root);
+ tree.setShowRoot(false);
+ for (Capteur capteur : lesCapteurs) {
TreeItem item = new TreeItem<>(capteur);
addTreeItem(item);
root.getChildren().add(item);
}
- tree=new TreeView<>(root);
+
}
- private void addTreeItem(TreeItem cap){
- if (cap.getValue() instanceof CapteurVirtuel){
- for (Capteur capteur : ((CapteurVirtuel) cap.getValue()).getLesCapteurs().values()){
+ private void addTreeItem(TreeItem cap) {
+ if (cap.getValue() instanceof CapteurVirtuel) {
+ for (Capteur capteur : ((CapteurVirtuel) cap.getValue()).getLesCapteurs().values()) {
TreeItem item = new TreeItem<>(capteur);
addTreeItem(item);
cap.getChildren().add(item);
}
}
- cap.getChildren().add(cap);
}
-
- @FXML
- private TreeView tree;
- @FXML
- private TextArea name;
- @FXML
- private TextArea temperature;
- private ObservableList lesCapteurs;
-
-
-
public void initialize() {
- tree.getSelectionModel().selectedItemProperty().addListener((observableValue, capteurTreeItem, t1) -> {
- name.textProperty().unbindBidirectional(t1.getValue().nomProperty());
- temperature.textProperty().unbindBidirectional(t1.getValue().temperatureProperty());
+
+ tree.setCellFactory(capteurTreeView -> {
+ TreeCell tc = new TreeCell<>() {
+ @Override
+ protected void updateItem(Capteur item, boolean empty) {
+ super.updateItem(item, empty);
+ if (!empty && item!=null) {
+ textProperty().bindBidirectional(item.nomProperty());
+ } else {
+ textProperty().unbind();
+ //setText("");
+ }
+ }
+ };
+ return tc;
});
+ tree.getSelectionModel().selectedItemProperty().addListener((observableValue, old, newV) -> {
+ if (old != null) {
+ name.textProperty().unbindBidirectional(old.getValue().nomProperty());
+ id.textProperty().unbindBidirectional(old.getValue().idProperty());
+ temperature.textProperty().unbindBidirectional(old.getValue().temperatureProperty());
+ }
+ if (newV != null) {
+ name.textProperty().bindBidirectional(newV.getValue().nomProperty());
+ id.textProperty().bindBidirectional(newV.getValue().idProperty());
+ temperature.textProperty().bindBidirectional(newV.getValue().temperatureProperty(),new NumberStringConverter());
+ }
+ });
}
+
}
diff --git a/projet/src/view/ViewCapteurImage.java b/projet/src/view/ViewCapteurImage.java
new file mode 100644
index 0000000..e881d01
--- /dev/null
+++ b/projet/src/view/ViewCapteurImage.java
@@ -0,0 +1,31 @@
+package view;
+
+import javafx.fxml.FXML;
+import javafx.scene.image.Image;
+import javafx.scene.image.ImageView;
+import javafx.scene.text.Text;
+import javafx.util.converter.NumberStringConverter;
+import modele.Capteur;
+import modele.CapteurImage;
+import modele.CapteurVirtuel;
+
+import java.io.IOException;
+
+public class ViewCapteurImage extends FxmlWindow {
+
+
+ @FXML
+ private Text temperature;
+
+ @FXML
+ private ImageView image;
+
+ public ViewCapteurImage(CapteurImage leCapteur, String url, String title) throws IOException {
+ super(url, title);
+
+ temperature.textProperty().bindBidirectional(leCapteur.temperatureProperty(), new NumberStringConverter());
+ image.imageProperty().bindBidirectional(leCapteur.imageProperty());
+ }
+
+
+}
diff --git a/projet/src/view/ViewCapteurVirtuel.java b/projet/src/view/ViewCapteurVirtuel.java
index 409ec0a..665588d 100644
--- a/projet/src/view/ViewCapteurVirtuel.java
+++ b/projet/src/view/ViewCapteurVirtuel.java
@@ -38,7 +38,7 @@ public class ViewCapteurVirtuel extends FxmlWindow {
public void initialize() {
listeDesCapteurs.setCellFactory((param) ->
- new ListCell() {
+ new ListCell<>() {
@Override
protected void updateItem(Capteur item, boolean empty) {
super.updateItem(item, empty);