diff --git a/app/src/main/java/ch/zhaw/projekt2/turnierverwaltung/TournamentDecorator.java b/app/src/main/java/ch/zhaw/projekt2/turnierverwaltung/TournamentDecorator.java index ec75d5b..c0cb27f 100644 --- a/app/src/main/java/ch/zhaw/projekt2/turnierverwaltung/TournamentDecorator.java +++ b/app/src/main/java/ch/zhaw/projekt2/turnierverwaltung/TournamentDecorator.java @@ -8,6 +8,7 @@ import java.util.Date; import java.util.List; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; +import java.util.concurrent.TimeUnit; public class TournamentDecorator implements IsObservable{ private Tournament tournament; @@ -175,6 +176,11 @@ public class TournamentDecorator implements IsObservable{ } } + public void closeApplication() throws InterruptedException { + executorService.shutdown(); + executorService.awaitTermination(2000, TimeUnit.MILLISECONDS); + } + private class saveTask implements Runnable { @Override diff --git a/app/src/main/java/ch/zhaw/projekt2/turnierverwaltung/main/MainWindow.java b/app/src/main/java/ch/zhaw/projekt2/turnierverwaltung/main/MainWindow.java index a4cd74b..2f4b46b 100644 --- a/app/src/main/java/ch/zhaw/projekt2/turnierverwaltung/main/MainWindow.java +++ b/app/src/main/java/ch/zhaw/projekt2/turnierverwaltung/main/MainWindow.java @@ -5,28 +5,31 @@ import ch.zhaw.projekt2.turnierverwaltung.FactoryDecorator; import ch.zhaw.projekt2.turnierverwaltung.FileIO; import ch.zhaw.projekt2.turnierverwaltung.TournamentDecorator; import javafx.application.Application; +import javafx.event.EventHandler; import javafx.fxml.FXMLLoader; import javafx.scene.Scene; import javafx.scene.layout.BorderPane; import javafx.stage.Stage; +import javafx.stage.WindowEvent; + +import java.util.logging.Logger; public class MainWindow extends Application { private FileIO fileIO = new FileIO(System.getProperty("user.dir") + System.getProperty("file.separator") + "tournierverwaltung_angrynerds"); private FactoryDecorator factoryDecorator; private TournamentDecorator tournamentDecorator = new TournamentDecorator(fileIO); - private Factory factory = new Factory(fileIO, tournamentDecorator); //TODO make it private! + private Factory factory = new Factory(fileIO, tournamentDecorator); + private static final Logger logger = Logger.getLogger(FileIO.class.getCanonicalName()); @Override public void start(Stage primaryStage) throws Exception { - BorderPane pane = factory.loadMainWindow(); factoryDecorator = new FactoryDecorator(fileIO, factory, pane); factory.loadAllViews(factoryDecorator, pane); tournamentDecorator.setFactoryDecorator(factoryDecorator); factoryDecorator.openTournamentList(); - Scene scene = new Scene(pane); primaryStage.setScene(scene); primaryStage.setMaximized(true); @@ -35,5 +38,13 @@ public class MainWindow extends Application { primaryStage.show(); } - + @Override + public void stop() { + try { + super.stop(); + tournamentDecorator.closeApplication(); + } catch (Exception e) { + logger.warning("Exception while closing application"); + } + } } diff --git a/app/src/main/java/ch/zhaw/projekt2/turnierverwaltung/main/MainWindowController.java b/app/src/main/java/ch/zhaw/projekt2/turnierverwaltung/main/MainWindowController.java index ef5e1d6..ffb528b 100644 --- a/app/src/main/java/ch/zhaw/projekt2/turnierverwaltung/main/MainWindowController.java +++ b/app/src/main/java/ch/zhaw/projekt2/turnierverwaltung/main/MainWindowController.java @@ -1,6 +1,7 @@ package ch.zhaw.projekt2.turnierverwaltung.main; import ch.zhaw.projekt2.turnierverwaltung.FXController; +import javafx.application.Platform; import javafx.event.ActionEvent; import javafx.fxml.FXML; @@ -13,7 +14,7 @@ public class MainWindowController extends FXController { @FXML void closeApplication(ActionEvent event) { - + Platform.exit(); } @Override