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);