From baa009c9e4d2a6e710e49adad56a8967bcc9870c Mon Sep 17 00:00:00 2001 From: Johannes Date: Tue, 17 Nov 2015 12:19:21 +0100 Subject: [PATCH] =?UTF-8?q?Asynchrones=20Laden=20der=20F=C3=A4lle=20zu=20e?= =?UTF-8?q?inem=20Patienten?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mi/projmi6/controller/MainController.java | 65 ++++++++++++++++++---- src/main/resources/main.fxml | 4 +- 2 files changed, 57 insertions(+), 12 deletions(-) diff --git a/src/main/java/de/uniluebeck/mi/projmi6/controller/MainController.java b/src/main/java/de/uniluebeck/mi/projmi6/controller/MainController.java index 59b8f22..b10761b 100644 --- a/src/main/java/de/uniluebeck/mi/projmi6/controller/MainController.java +++ b/src/main/java/de/uniluebeck/mi/projmi6/controller/MainController.java @@ -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, Object> getControllerFactory(){ return controllerFactory; } @@ -137,7 +136,12 @@ public class MainController { } + @FXML + private Label lvFallPlaceholder; + + + private Task> 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 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>() { + @Override + protected List 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); diff --git a/src/main/resources/main.fxml b/src/main/resources/main.fxml index e062328..7feeee6 100644 --- a/src/main/resources/main.fxml +++ b/src/main/resources/main.fxml @@ -27,7 +27,9 @@