Im Rahmen der Veranstaltung "CS3330 - Projektpraktikum MedizinischeInformatik" an der Universität zu Lübeck entstandenes Krankenhausinformationssystem (KIS).
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

148 lines
4.6 KiB

  1. package de.uniluebeck.mi.projmi6;
  2. import de.uniluebeck.mi.projmi6.controller.MainController;
  3. import de.uniluebeck.mi.projmi6.db.DBHandler;
  4. import de.uniluebeck.mi.projmi6.model.Kasse;
  5. import de.uniluebeck.mi.projmi6.model.Mitarbeiter;
  6. import de.uniluebeck.mi.projmi6.model.OpsCode;
  7. import javafx.application.Application;
  8. import javafx.collections.FXCollections;
  9. import javafx.concurrent.Task;
  10. import javafx.fxml.FXMLLoader;
  11. import javafx.geometry.Insets;
  12. import javafx.geometry.Pos;
  13. import javafx.scene.Parent;
  14. import javafx.scene.Scene;
  15. import javafx.scene.control.ProgressIndicator;
  16. import javafx.scene.image.Image;
  17. import javafx.scene.image.ImageView;
  18. import javafx.scene.layout.Background;
  19. import javafx.scene.layout.BackgroundFill;
  20. import javafx.scene.layout.CornerRadii;
  21. import javafx.scene.layout.VBox;
  22. import javafx.scene.paint.Paint;
  23. import javafx.scene.text.Font;
  24. import javafx.scene.text.Text;
  25. import javafx.stage.Stage;
  26. import javafx.stage.StageStyle;
  27. public class Main extends Application {
  28. /**
  29. * Cuz building the GUI from FXML is a bit costly,
  30. * it's done from its own thread.
  31. */
  32. private Task<Parent> loadMainWindowTask = new Task<Parent>(){
  33. @Override
  34. protected Parent call() throws Exception {
  35. MainController mainController = new MainController();
  36. System.out.println("Lade OPS-Codes...");
  37. mainController.getStammdaten().setOpsCodes(FXCollections.observableArrayList(
  38. DBHandler.getAllOpsCodes()
  39. ));
  40. System.out.println("Lade ICD-10-Codes...");
  41. mainController.getStammdaten().setIcd10Codes(FXCollections.observableArrayList(
  42. DBHandler.getAllIcd10Codes()
  43. ));
  44. System.out.println("Lade Krankenkassen...");
  45. mainController.getStammdaten().setKassen(FXCollections.observableArrayList(
  46. DBHandler.getAllKassen()
  47. ));
  48. System.out.println("Lade Mitarbeiter...");
  49. mainController.getStammdaten().setMitarbeiter(FXCollections.observableArrayList(
  50. DBHandler.getAllMitarbeiter()
  51. ));
  52. System.out.println("Lade Stationen...");
  53. mainController.getStammdaten().setStationen(FXCollections.observableArrayList(
  54. DBHandler.getAllStationen())
  55. );
  56. System.out.println("Lade GUI...");
  57. FXMLLoader fxmlLoader = new FXMLLoader();
  58. fxmlLoader.setLocation(getClass().getClassLoader().getResource("main.fxml"));
  59. fxmlLoader.setControllerFactory(mainController.getControllerFactory());
  60. Parent root = fxmlLoader.load();
  61. return root;
  62. }
  63. };
  64. /**
  65. * The applications logo (an owl).
  66. */
  67. private Image icon = new Image("icon.png", true);
  68. @Override
  69. public void start(Stage primaryStage) {
  70. System.out.println(getClass().getClassLoader().getResource("").toExternalForm());
  71. primaryStage.getIcons().add(icon);
  72. Stage loadingMessage = createLoadWindow();
  73. loadMainWindowTask.setOnFailed(event -> {
  74. loadMainWindowTask.getException().printStackTrace();
  75. loadingMessage.close();
  76. });
  77. loadMainWindowTask.setOnSucceeded(event -> {
  78. Parent root = loadMainWindowTask.getValue();
  79. loadingMessage.close();
  80. primaryStage.setTitle("KIS Gruppe 06");
  81. primaryStage.setScene(new Scene(root, 1000, 800));
  82. primaryStage.show();
  83. });
  84. Thread thread = new Thread(loadMainWindowTask);
  85. thread.setDaemon(true);
  86. thread.start();
  87. }
  88. /**
  89. * Creates a small, undecorated stage for
  90. * showing a splash-screen to the user.
  91. *
  92. * @return the splash screen
  93. */
  94. public Stage createLoadWindow(){
  95. Text kis = new Text("KIS");
  96. kis.setFont(Font.font(50));
  97. Text gruppe6 = new Text("Gruppe 06");
  98. gruppe6.setFont(Font.font(20));
  99. VBox root = new VBox(gruppe6, new ImageView(icon), kis);
  100. root.setSpacing(20);
  101. root.setAlignment(Pos.CENTER);
  102. Scene scene = new Scene(root, 400, 400);
  103. Stage stage = new Stage(StageStyle.UNDECORATED);
  104. stage.getIcons().add(icon);
  105. root.setBackground(new Background(new BackgroundFill(Paint.valueOf("#0093D1"), CornerRadii.EMPTY, Insets.EMPTY)));
  106. stage.setScene(scene);
  107. stage.show();
  108. return stage;
  109. }
  110. /**
  111. * Applications entry point.
  112. *
  113. * @param args Commandline parameters
  114. */
  115. public static void main(String[] args) {
  116. launch(args);
  117. }
  118. }