| @@ -5,6 +5,7 @@ import de.uniluebeck.mi.projmi6.model.*; | |||
| import javafx.beans.binding.Bindings; | |||
| import javafx.beans.property.ReadOnlyObjectProperty; | |||
| import javafx.beans.property.SimpleObjectProperty; | |||
| import javafx.beans.value.ChangeListener; | |||
| import javafx.collections.FXCollections; | |||
| import javafx.collections.ObservableList; | |||
| import javafx.concurrent.Task; | |||
| @@ -16,6 +17,7 @@ import javax.swing.*; | |||
| import java.util.ArrayList; | |||
| import java.util.List; | |||
| import java.util.Set; | |||
| import java.util.concurrent.ThreadFactory; | |||
| public class MainController { | |||
| @@ -144,106 +146,165 @@ public class MainController { | |||
| private Task<List<Fall>> loadFallTask = null; | |||
| private ChangeListener<Patient> onPatientChanged = (observableValue,oldValue,newValue)-> { | |||
| lvFall.setItems(null); //clear list | |||
| if(newValue==null){ // If no patient is selected | |||
| lvFallPlaceholder.setText("Kein Patient ausgew\u00e4hlt!"); | |||
| return; | |||
| } | |||
| 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(); | |||
| }; | |||
| @FXML | |||
| private void initialize(){ | |||
| //Init user data. | |||
| cmbUserChoose.itemsProperty().bind(this.getStammdaten().mitarbeiterProperty()); | |||
| cmbUserChoose.getSelectionModel().select(0); // TODO: Bessere Loesung finden. | |||
| //Disable the right side if no case is selected. | |||
| fallOverview.disableProperty().bind(patientTablesController.selectedPatientProperty().isNull()); | |||
| //Load the cases async if patient changes | |||
| patientTablesController.selectedPatientProperty().addListener(onPatientChanged); | |||
| patientTablesController.selectedPatientProperty().addListener((observableValue,oldValue,newValue)-> { | |||
| lvFall.setItems(null); //clear list | |||
| if(newValue==null){ // If no patient is selected | |||
| lvFallPlaceholder.setText("Kein Patient ausgew\u00e4hlt!"); | |||
| return; | |||
| } | |||
| lvFall.getSelectionModel().setSelectionMode(SelectionMode.SINGLE); | |||
| if(loadFallTask!=null && loadFallTask.isRunning()){ | |||
| loadFallTask.cancel(); | |||
| } | |||
| fallController.fallPropertyProperty().bind(lvFall.getSelectionModel().selectedItemProperty()); | |||
| 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(); | |||
| } | |||
| lvFall.getSelectionModel().selectedItemProperty().addListener(onCaseChanged); | |||
| } | |||
| @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(); | |||
| }); | |||
| private Task<Void> loadCaseData = null; | |||
| private ChangeListener<Fall> onCaseChanged = (observable, oldValue, newValue) -> { | |||
| if(loadCaseData!=null && loadCaseData.isRunning()){ | |||
| loadCaseData.cancel(); | |||
| } | |||
| tabPaneFall.setDisable(false); | |||
| tabFallDiagnose.setDisable(true); | |||
| tabFallStationsHistorie.setDisable(true); | |||
| tabFallUntersuchungen.setDisable(true); | |||
| if(newValue==null) { | |||
| tabPaneFall.setDisable(true); | |||
| System.out.println("TODO: Clear tables cuz fall = null!"); | |||
| //fallController.c | |||
| return; | |||
| } | |||
| if(newValue==null){ // If no patient is selected | |||
| //lvFallPlaceholder.setText("Kein Patient ausgew\u00e4hlt!"); | |||
| return; | |||
| } | |||
| fallController.fallPropertyProperty().bind(lvFall.getSelectionModel().selectedItemProperty()); | |||
| lvFall.getSelectionModel().setSelectionMode(SelectionMode.SINGLE); | |||
| /* untersuchungenController.untersuchungenProperty().bind( | |||
| Bindings.createObjectBinding(() ->{ | |||
| Fall selectedFall = lvFall.getSelectionModel().getSelectedItem(); | |||
| System.out.println("Liste der Untersuchungen ...y"); | |||
| if(selectedFall==null) return null; | |||
| List<Untersuchung> untersuchungList = DBHandler.getUntersuchungByFall(selectedFall); | |||
| System.out.println("Es sind "+untersuchungList.size()+" Untersuchungen vorhanden."); | |||
| return FXCollections.observableArrayList(untersuchungList); | |||
| }, lvFall.getSelectionModel().selectedIndexProperty()));*/ | |||
| lvFall.getSelectionModel().selectedItemProperty().addListener(((observable, oldValue, newValue) -> { | |||
| System.out.println("Changed choosen Fall"); | |||
| if(newValue==null) { | |||
| System.out.println("TODO: Clear tables cuz fall = null!"); | |||
| return; | |||
| loadCaseData = new Task<Void>() { | |||
| List<Untersuchung> untersuchungList; | |||
| List<Diagnose> diagnoseList; | |||
| List<StationsHistorie> stationsHistorieList; | |||
| @Override | |||
| protected Void call() throws Exception { | |||
| untersuchungList = DBHandler.getUntersuchungByFall(newValue); | |||
| diagnoseList = DBHandler.getDiagnosenByFall(newValue); | |||
| //stationsHistorieList = | |||
| return null; | |||
| } | |||
| try { | |||
| List<Untersuchung> untersuchungList = DBHandler.getUntersuchungByFall(newValue); | |||
| System.out.println("untersuchungenList"+untersuchungList); | |||
| untersuchungenController.untersuchungenProperty().set(FXCollections.observableArrayList(untersuchungList)); | |||
| List<Diagnose> diagnoseList = DBHandler.getDiagnosenByFall(newValue); | |||
| System.out.println("diagnoseList ="+diagnoseList); | |||
| diagnoseController.diagnosenProperty().set(FXCollections.observableArrayList(diagnoseList)); | |||
| }catch(Exception e){ | |||
| e.printStackTrace(); | |||
| @Override | |||
| protected void succeeded() { | |||
| super.succeeded(); | |||
| if(isCancelled()){ | |||
| System.out.println("Task wurde gecancelt"); | |||
| return; | |||
| } | |||
| untersuchungenController.setUntersuchungen(FXCollections.observableArrayList(untersuchungList)); | |||
| diagnoseController.setDiagnosen(FXCollections.observableArrayList(diagnoseList)); | |||
| tabPaneFall.setDisable(false); | |||
| tabFallDiagnose.setDisable(false); | |||
| tabFallStationsHistorie.setDisable(false); | |||
| tabFallUntersuchungen.setDisable(false); | |||
| decreaseParallelTaskCount(); | |||
| } | |||
| })); | |||
| } | |||
| @Override | |||
| protected void cancelled() { | |||
| super.cancelled(); | |||
| decreaseParallelTaskCount(); | |||
| } | |||
| @Override | |||
| protected void failed() { | |||
| super.failed(); | |||
| //lvFallPlaceholder.setText("Laden fehlgeschlagen!"); | |||
| getException().printStackTrace(); | |||
| decreaseParallelTaskCount(); | |||
| } | |||
| }; | |||
| Thread thread = new Thread(loadCaseData); | |||
| thread.setDaemon(true); | |||
| thread.start(); | |||
| increaseParallelTaskCount(); | |||
| }; | |||
| @FXML | |||