package de.uniluebeck.mi.projmi6.controller; import de.uniluebeck.mi.projmi6.db.DBHandler; import de.uniluebeck.mi.projmi6.model.*; import javafx.beans.property.SimpleObjectProperty; import javafx.collections.FXCollections; import javafx.collections.ObservableList; import javafx.fxml.FXML; import javafx.scene.control.*; import javafx.util.Callback; import java.util.ArrayList; import java.util.List; import java.util.Set; public class MainController { private FallController fallController; private DiagnoseController diagnoseController; private PatientTablesController patientTablesController; private SettingsController settingsController; private StationsHistorieController stationsHistorieController; private UntersuchungenController untersuchungenController; private SimpleObjectProperty> opsCodes = new SimpleObjectProperty<>(); private SimpleObjectProperty> icd10Codes = new SimpleObjectProperty<>(); private SimpleObjectProperty> mitarbeiter = new SimpleObjectProperty<>(); private SimpleObjectProperty> kassen = new SimpleObjectProperty<>(); private SimpleObjectProperty> stationen = new SimpleObjectProperty<>(); public ObservableList getStationen() { return stationen.get(); } public SimpleObjectProperty> stationenProperty() { return stationen; } public void setStationen(ObservableList stationen) { this.stationen.set(stationen); } public ObservableList getMitarbeiter() { return mitarbeiter.get(); } public SimpleObjectProperty> mitarbeiterProperty() { return mitarbeiter; } public void setMitarbeiter(ObservableList mitarbeiter) { this.mitarbeiter.set(mitarbeiter); } public ObservableList getKassen() { return kassen.get(); } public SimpleObjectProperty> kassenProperty() { return kassen; } public void setKassen(ObservableList kassen) { this.kassen.set(kassen); } private int parallelTaskCount = 0; @FXML private ChoiceBox cmbUserChoose; @FXML private ProgressIndicator progressIndicator; @FXML private Button btnFallCreate; @FXML private SplitPane fallOverview; @FXML private ListView lvFall; @FXML private TabPane tabPaneFall; @FXML private Tab tabFallOverview, tabFallUntersuchungen, tabFallDiagnose, tabFallStationsHistorie ; private Callback, Object> controllerFactory = clazz -> { if(clazz.equals(MainController.class)) { return this; }else if(clazz.equals(FallController.class)){ return fallController; }else if(clazz.equals(DiagnoseController.class)){ return diagnoseController; }else if(clazz.equals(PatientTablesController.class)){ return patientTablesController; }else if(clazz.equals(SettingsController.class)){ return settingsController; } else if(clazz.equals(UntersuchungenController.class)) { return untersuchungenController; }else if(clazz.equals(StationsHistorieController.class)){ return stationsHistorieController; }else { System.err.println("Keine Controller-Klasse des Typs "+clazz+" gefunden!!!"); return null; } }; public MainController(){ fallController = new FallController(this); diagnoseController = new DiagnoseController(this); patientTablesController = new PatientTablesController(this); settingsController = new SettingsController(this); untersuchungenController = new UntersuchungenController(this); stationsHistorieController = new StationsHistorieController(this); } public Callback, Object> getControllerFactory(){ return controllerFactory; } public FallController getFallController(){ return fallController; } public DiagnoseController getDiagnoseController(){ return diagnoseController; } public PatientTablesController getPatientTablesController(){ return patientTablesController; } public SettingsController getSettingsController(){ return settingsController; } public UntersuchungenController getUntersuchungenController(){ return untersuchungenController; } public void increaseParallelTaskCount(){ parallelTaskCount++; if(parallelTaskCount>0){ progressIndicator.setVisible(true); } } public void decreaseParallelTaskCount(){ parallelTaskCount++; if(parallelTaskCount<=0){ parallelTaskCount = 0; progressIndicator.setVisible(false); } } public ObservableList getOpsCodes() { return opsCodes.get(); } public SimpleObjectProperty> opsCodesProperty() { return opsCodes; } public void setOpsCodes(ObservableList opsCodes){ this.opsCodesProperty().set(opsCodes); } public ObservableList getIcd10Codes() { return icd10Codes.get(); } public SimpleObjectProperty> icd10CodesProperty() { return icd10Codes; } public void setIcd10Codes(ObservableList icd10Codes) { this.icd10Codes.set(icd10Codes); } @FXML private void initialize(){ cmbUserChoose.itemsProperty().bind(this.mitarbeiterProperty()); fallOverview.disableProperty().bind(patientTablesController.selectedPatientProperty().isNull()); patientTablesController.selectedPatientProperty().addListener((observableValue,oldValue,newValue)-> { System.out.println("Neuer Patient gewaehlt"); 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(); } }); } @FXML private void clickedCreateFall(){ tabFallDiagnose.setDisable(true); tabFallUntersuchungen.setDisable(true); tabFallStationsHistorie.setDisable(true); tabPaneFall.getSelectionModel().select(tabFallOverview); fallController.createNewFall(); } }