@ -9,27 +9,21 @@ import javafx.scene.image.Image;
import javafx.scene.image.ImageView ;
import javafx.scene.layout.* ;
import javafx.scene.text.Font ;
import javafx.util.Callback ;
import model.* ;
import java.io.IOException ;
public class MainPage {
@FXML private Button FirstButton ;
@FXML private Button SecondButton ;
@FXML private VBox vb1 ;
@FXML private VBox vb2 ;
@FXML private ImageView open ;
CPUTemp cpuTemp = new CPUTemp ( "CPU Captor" ) ;
CapteurVirtuel cV1 = new CapteurVirtuel ( "CaptVirt1" ) ;
Captor c1 = new Captor ( "c1" ) ;
Captor c2 = new Captor ( "c2" ) ;
@FXML
public void initialize ( ) {
@ -37,82 +31,18 @@ public class MainPage {
SecondButton . textProperty ( ) . set ( cV1 . getName ( ) ) ;
ListView < CapteurVirtuel > listview = new ListView < > ( ) ;
ObservableList < CapteurVirtuel > captors = FXCollections . observableArrayList (
captor - > new ObservableValue [ ] {
captor . getTempMoyenneProperty ( )
}
) ;
captors . addListener ( ( ListChangeListener . Change < ? extends CapteurVirtuel > c ) - > {
while ( c . next ( ) ) {
if ( c . wasUpdated ( ) ) {
listview . refresh ( ) ;
}
}
} ) ;
c1 . startThread ( ) ;
c2 . startThread ( ) ;
cV1 . addToLesCapteurs ( c1 ) ;
cV1 . addToLesCapteurs ( c2 ) ;
cV1 . startThread ( ) ;
captors . add ( cV1 ) ;
listview . setCellFactory ( new Callback < > ( ) {
@Override
public ListCell < CapteurVirtuel > call ( ListView < CapteurVirtuel > captorListView ) {
return new ListCell < > ( ) {
@Override
protected void updateItem ( CapteurVirtuel value , boolean empty ) {
String text = "" ;
super . updateItem ( value , empty ) ;
if ( value ! = null ) {
text = value . getTempMoyenne ( ) . toString ( ) ;
}
setText ( text ) ;
String style = null ;
if ( ! empty ) {
assert value ! = null ;
if ( value . isNegative ( ) ) {
style = "-fx-text-fill : blue" ;
}
}
if ( ! empty & & value . isHot ( ) ) {
style = "-fx-text-fill : red" ;
}
setStyle ( style ) ;
}
} ;
}
} ) ;
listview . setItems ( captors ) ;
open . setFitWidth ( 18 ) ;
open . setFitHeight ( 18 ) ;
FirstButton . setOnAction ( e - > {
vb1 . getChildren ( ) . clear ( ) ;
try {
vb1 . getChildren ( ) . add ( setVboxCPUCaptor ( ) ) ;
} catch ( IOException ex ) {
throw new RuntimeException ( ex ) ;
}
} ) ;
vb1 . getChildren ( ) . add ( setVboxCPUCaptor ( ) ) ;
open . setFitWidth ( 18 ) ;
open . setFitHeight ( 18 ) ;
} ) ;
SecondButton . setOnAction ( e - > {
if ( ! vb2 . getChildren ( ) . isEmpty ( ) ) {
open . setImage ( new Image ( "https://www.citypng.com/public/uploads/preview/download-black-right-triangle-png-31629764954y0662peplm.png" ) ) ;
@ -120,14 +50,17 @@ public class MainPage {
} else {
vb1 . getChildren ( ) . clear ( ) ;
vb1 . getChildren ( ) . add ( setDisplayVirtualCaptor ( ) ) ;
open . setImage ( new Image ( "https://cdn-icons-png.flaticon.com/512/0/159.png" ) ) ;
vb2 . getChildren ( ) . add ( setHBoxFirstCaptor ( ) ) ;
vb2 . getChildren ( ) . add ( setHBoxSecondCaptor ( ) ) ;
}
} ) ;
}
private VBox setVboxCPUCaptor ( ) throws IOException {
private VBox setVboxCPUCaptor ( ) {
VBox FirstCaptorCPU = new VBox ( ) ;
@ -135,16 +68,24 @@ public class MainPage {
ImageView FirstCaptorCPUImage = new ImageView ( new Image ( "https://media.istockphoto.com/id/1204740322/fr/photo/cpu.jpg?s=612x612&w=0&k=20&c=cF154ASgimXysleBPyYsFMI9_GKkkTpDQ0kZTJnm_K0=" ) ) ;
FirstCaptorCPUImage . setFitWidth ( 570 ) ;
Label FirstCaptorCPULabel = new Label ( "Temperature" ) ;
FirstCaptorCPULabel . setFont ( new Font ( "Arial" , 30 ) ) ;
FirstCaptorCPULabel . setMaxWidth ( Double . MAX_VALUE ) ;
FirstCaptorCPULabel . setAlignment ( Pos . CENTER ) ;
FirstCaptorCPULabel . setWrapText ( true ) ;
if ( cpuTemp . getTemperature ( ) = = 0.0 ) {
FirstCaptorCPULabel . setFont ( new Font ( "Arial" , 15 ) ) ;
FirstCaptorCPULabel . textProperty ( ) . set ( "Impossible de récupérer la temperature du CPU, possiblement car le fichier qui contient cette temperature n'existe pas ou n'est pas au même endroit que celui utilisé lors du développement." ) ;
} else {
FirstCaptorCPULabel . textProperty ( ) . set ( "Temperature du CPU : " + cpuTemp . getTemperature ( ) + "°C" ) ;
}
@ -152,21 +93,27 @@ public class MainPage {
FirstCaptorCPU . getChildren ( ) . add ( FirstCaptorCPULabel ) ;
ObservableList < CPUTemp > CPUTemperature = FXCollections . observableArrayList (
captor - > new ObservableValue [ ] {
captor . getTemperatureProperty ( )
captorCPU - > new ObservableValue [ ] {
captorCPU . getTemperatureProperty ( )
}
) ;
CPUTemperature . addListener ( ( ListChangeListener . Change < ? extends CPUTemp > c ) - > {
while ( c . next ( ) ) {
if ( c . wasUpdated ( ) ) {
FirstCaptorCPULabel . textProperty ( ) . set ( "Temperature du CPU : " + cpuTemp . getTemperature ( ) + "°C" ) ;
}
}
} ) ;
cpuTemp . startThread ( ) ;
CPUTemperature . add ( cpuTemp ) ;
return FirstCaptorCPU ;
}
@ -211,4 +158,69 @@ public class MainPage {
}
private VBox setDisplayVirtualCaptor ( ) {
VBox CaptorVirtual = new VBox ( ) ;
Label ViewTempVirtualCaptor = new Label ( "Temperature moyenne des sous-capteurs du capteur virtuel : " + cV1 . getTempMoyenne ( ) + "°C" ) ;
ViewTempVirtualCaptor . setFont ( new Font ( "Arial" , 20 ) ) ;
ViewTempVirtualCaptor . setMaxWidth ( Double . MAX_VALUE ) ;
ViewTempVirtualCaptor . setAlignment ( Pos . CENTER ) ;
ViewTempVirtualCaptor . setWrapText ( true ) ;
ImageView VirtualCaptorImage = new ImageView ( new Image ( "https://static.thenounproject.com/png/56610-200.png" ) ) ;
VirtualCaptorImage . setFitWidth ( 500 ) ;
VirtualCaptorImage . setFitHeight ( 300 ) ;
CaptorVirtual . getChildren ( ) . add ( VirtualCaptorImage ) ;
CaptorVirtual . getChildren ( ) . add ( ViewTempVirtualCaptor ) ;
c1 . startThread ( ) ;
c2 . startThread ( ) ;
cV1 . addToLesCapteurs ( c1 ) ;
cV1 . addToLesCapteurs ( c2 ) ;
cV1 . startThread ( ) ;
ObservableList < CapteurVirtuel > VirtualCaptor = FXCollections . observableArrayList (
VirtCaptor - > new ObservableValue [ ] {
VirtCaptor . getTempMoyenneProperty ( )
}
) ;
VirtualCaptor . addListener ( ( ListChangeListener . Change < ? extends CapteurVirtuel > c ) - > {
while ( c . next ( ) ) {
if ( c . wasUpdated ( ) ) {
Double temp = cV1 . getTempMoyenne ( ) ;
if ( temp < 0 ) {
ViewTempVirtualCaptor . setStyle ( "-fx-text-fill : blue" ) ;
} else if ( temp > 30 ) {
ViewTempVirtualCaptor . setStyle ( "-fx-text-fill : red" ) ;
} else {
ViewTempVirtualCaptor . setStyle ( "-fx-text-fill : black" ) ;
}
ViewTempVirtualCaptor . textProperty ( ) . set ( "Temperature moyenne des sous-capteurs du capteur virtuel : " + Math . round ( cV1 . getTempMoyenne ( ) * 10.0 ) / 10.0 + "°C" ) ;
}
}
} ) ;
VirtualCaptor . add ( cV1 ) ;
return CaptorVirtual ;
}
}