Bladeren bron

Asynchrones Laden der Fälle zu einem Patienten

testBranch
Johannes 10 jaren geleden
bovenliggende
commit
baa009c9e4
2 gewijzigde bestanden met toevoegingen van 57 en 12 verwijderingen
  1. +54
    -11
      src/main/java/de/uniluebeck/mi/projmi6/controller/MainController.java
  2. +3
    -1
      src/main/resources/main.fxml

+ 54
- 11
src/main/java/de/uniluebeck/mi/projmi6/controller/MainController.java Bestand weergeven

@@ -12,6 +12,7 @@ import javafx.fxml.FXML;
import javafx.scene.control.*;
import javafx.util.Callback;

import javax.swing.*;
import java.util.ArrayList;
import java.util.List;
import java.util.Set;
@@ -92,8 +93,6 @@ public class MainController {
return stammdaten;
}



public Callback<Class<?>, Object> getControllerFactory(){
return controllerFactory;
}
@@ -137,7 +136,12 @@ public class MainController {
}


@FXML
private Label lvFallPlaceholder;



private Task<List<Fall>> loadFallTask = null;


@FXML
@@ -149,22 +153,61 @@ public class MainController {


patientTablesController.selectedPatientProperty().addListener((observableValue,oldValue,newValue)-> {
if(newValue==null){
lvFall.setItems(FXCollections.emptyObservableList());
lvFall.setItems(null); //clear list

if(newValue==null){ // If no patient is selected
lvFallPlaceholder.setText("Kein Patient ausgew\u00e4hlt!");
return;
}

try {
List<Fall> faelle = DBHandler.getFaelleByPatID(newValue.getPatID());
System.out.println(faelle);
System.out.println("Liste der Faelle hat "+ faelle.size()+ " Eintrage ");
lvFall.setItems(FXCollections.observableArrayList(faelle));
}catch (Exception e){
e.printStackTrace();
if(loadFallTask!=null && loadFallTask.isRunning()){
loadFallTask.cancel();
}


loadFallTask = new Task<List<Fall>>() {
@Override
protected List<Fall> call() throws Exception {
return DBHandler.getFaelleByPatID(newValue.getPatID());

}

@Override
protected void succeeded() {
super.succeeded();
if(isCancelled()){
System.out.println("Task wurde gecancelt");
return;
}
lvFallPlaceholder.setText("Keine F\u00e4lle vorhanden!");
lvFall.setItems(FXCollections.observableArrayList(getValue()));
decreaseParallelTaskCount();
}

@Override
protected void cancelled() {
super.cancelled();
decreaseParallelTaskCount();
}

@Override
protected void failed() {
super.failed();
lvFallPlaceholder.setText("Laden fehlgeschlagen!");
lvFall.setItems(null);
decreaseParallelTaskCount();
}
};

lvFallPlaceholder.setText("Liste wird geladen...");
increaseParallelTaskCount();
Thread thread = new Thread(loadFallTask);
thread.setDaemon(true);
thread.start();
});



fallController.fallPropertyProperty().bind(lvFall.getSelectionModel().selectedItemProperty());

lvFall.getSelectionModel().setSelectionMode(SelectionMode.SINGLE);


+ 3
- 1
src/main/resources/main.fxml Bestand weergeven

@@ -27,7 +27,9 @@
<Button fx:id="btnFallCreate" text="Neuen _Fall erstellen" onAction="#clickedCreateFall"/>
</items>
</ToolBar>
<ListView VBox.vgrow="ALWAYS" fx:id="lvFall" />
<ListView VBox.vgrow="ALWAYS" fx:id="lvFall" >
<placeholder><Label fx:id="lvFallPlaceholder" /></placeholder>
</ListView>
</children>
</VBox>
<TabPane fx:id="tabPaneFall" prefHeight="200.0" prefWidth="200.0" tabClosingPolicy="UNAVAILABLE">


Laden…
Annuleren
Opslaan