ajoue du capteur d'image

master
thchazot1 2 years ago
parent 20016ad19d
commit d0d91e95aa

Binary file not shown.

After

Width:  |  Height:  |  Size: 98 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 165 KiB

@ -0,0 +1,21 @@
<?xml version="1.0" encoding="UTF-8"?>
<?import java.lang.*?>
<?import java.util.*?>
<?import javafx.scene.*?>
<?import javafx.scene.control.*?>
<?import javafx.scene.layout.*?>
<?import javafx.scene.image.ImageView?>
<?import javafx.scene.image.Image?>
<?import javafx.scene.text.Text?>
<SplitPane dividerPositions="0.3" xmlns="http://javafx.com/javafx" xmlns:fx="http://javafx.com/fxml" prefWidth="550" prefHeight="350">
<items>
<Text fx:id="temperature"/>
<ImageView fx:id="image" fitHeight="350" fitWidth="500"/>
</items>
</SplitPane>

@ -6,12 +6,19 @@
<?import javafx.scene.layout.*?>
<?import javafx.scene.layout.BorderPane?>
<?import javafx.scene.text.Text?>
<SplitPane dividerPositions="0.3" xmlns="http://javafx.com/javafx" xmlns:fx="http://javafx.com/fxml">
<fx:define>
<Integer fx:id="moins1" fx:value="-1" />
</fx:define>
<items>
<TreeView fx:id="tree"/>
<VBox>
<TextField fx:id="name"/>
<Text fx:id="id"/>
<TextField fx:id="temperature"/>
</VBox>
</items>
</SplitPane>

@ -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<Capteur> 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<Float, Capteur> 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) {

@ -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;
}

@ -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> image = new SimpleObjectProperty<>();
public ObjectProperty<Image> 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"));
}
}
}

@ -12,26 +12,40 @@ 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<Capteur> tree;
@FXML
private TextField name;
@FXML
private Text id;
@FXML
private TextField temperature;
private ObservableList<Capteur> lesCapteurs;
public TreeViewCapteur(ObservableList<Capteur> lesCapteurs, String url, String title) throws IOException {
super(url, title);
this.lesCapteurs = lesCapteurs;
TreeItem<Capteur> root = new TreeItem<>();
tree.setRoot(root);
tree.setShowRoot(false);
for (Capteur capteur : lesCapteurs) {
TreeItem<Capteur> item = new TreeItem<>(capteur);
addTreeItem(item);
root.getChildren().add(item);
}
tree=new TreeView<>(root);
}
private void addTreeItem(TreeItem<Capteur> cap) {
@ -42,25 +56,38 @@ public class TreeViewCapteur extends FxmlWindow {
cap.getChildren().add(item);
}
}
cap.getChildren().add(cap);
}
@FXML
private TreeView<Capteur> tree;
@FXML
private TextArea name;
@FXML
private TextArea temperature;
private ObservableList<Capteur> 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<Capteur> 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());
}
});
}
}

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

@ -38,7 +38,7 @@ public class ViewCapteurVirtuel extends FxmlWindow {
public void initialize() {
listeDesCapteurs.setCellFactory((param) ->
new ListCell<Capteur>() {
new ListCell<>() {
@Override
protected void updateItem(Capteur item, boolean empty) {
super.updateItem(item, empty);

Loading…
Cancel
Save