Compare commits

...
Author SHA1 Message Date
Andrin Fassbind 7dea7919c5 AlertDelete shortened code 2022-05-13 16:12:06 +02:00
Andrin Fassbind 55517a531e Create alert popup if user wants to create new game schedule 2022-05-13 16:04:19 +02:00
fassbandandGitHub Enterprise a6f14b94bd Merge pull request #47 from PM2-IT21bWIN-ruiz-mach-krea/fix_places_are_deleted_
fixed places are deleted.
2022-05-13 15:38:42 +02:00
Roman SchenkandGitHub Enterprise d3472017bb Merge pull request #46 from PM2-IT21bWIN-ruiz-mach-krea/closeImplementation
Make Application close properly
2022-05-13 15:37:31 +02:00
schrom01 0a7ca1ac3e fixed places are deleted.
solved #45
2022-05-13 15:36:29 +02:00
Andrin Fassbind bdb34fde31 Make Application close properly
If exception while closing there is a proper log
2022-05-13 15:35:41 +02:00
Roman SchenkandGitHub Enterprise 20903f6a69 Merge pull request #44 from PM2-IT21bWIN-ruiz-mach-krea/refactoring_of_factory
refactoring of Factory.java
2022-05-13 15:17:15 +02:00
8 changed files with 59 additions and 19 deletions
@@ -19,14 +19,6 @@ public class Game implements Serializable {
this.previousGame2 = previousGame2;
}
public Place getLocation() {
return place;
}
public void setLocation(Place place) {
this.place = place;
}
public int getPoints1() {
return points1;
}
@@ -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
@@ -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");
}
}
}
@@ -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
@@ -0,0 +1,26 @@
package ch.zhaw.projekt2.turnierverwaltung.main.gameScheduleView;
import javafx.scene.control.Alert;
import javafx.scene.control.ButtonBar;
import javafx.scene.control.ButtonType;
public class AlertNewSchedule extends Alert {
private ButtonType yesButton = new ButtonType("Ja", ButtonBar.ButtonData.YES);
private ButtonType noButton = new ButtonType("Nein", ButtonBar.ButtonData.NO);
private boolean result;
public AlertNewSchedule() {
super(AlertType.WARNING);
setTitle("Neu erstellen");
setHeaderText("Spielplan neu erstellen?");
setContentText("Sind Sie sicher, dass Sie den Spielplan neu erstellen moechten?\nAlle Spielfortschritte gehen daraufhin verloren!");
getButtonTypes().setAll(yesButton,noButton);
}
public boolean showAndGetResult() {
showAndWait().ifPresent(input -> {
result = input == yesButton;
});
return result;
}
}
@@ -74,7 +74,7 @@ public class GameController extends FXController{
public void setup(TournamentDecorator tournamentDecorator, FileIO fileIO, FactoryDecorator factoryDecorator, Pane pane, GameDecorator gameDecorator) {
setTournamentDecorator(tournamentDecorator);
this.gameDecorator = gameDecorator;
placesChoiceBox.getSelectionModel().selectedItemProperty().addListener((ObservableValue<? extends Place> observable, Place oldValue, Place newValue) -> saveGamePlace(newValue));
placesChoiceBox.getSelectionModel().selectedItemProperty().addListener((ObservableValue<? extends Place> observable, Place oldValue, Place newValue) -> saveGamePlace(newValue == null ? oldValue : newValue));
}
}
@@ -1,7 +1,6 @@
package ch.zhaw.projekt2.turnierverwaltung.main.gameScheduleView;
import ch.zhaw.projekt2.turnierverwaltung.FXController;
import ch.zhaw.projekt2.turnierverwaltung.Tournament;
import javafx.event.ActionEvent;
import javafx.fxml.FXML;
import javafx.scene.control.Button;
@@ -30,7 +29,14 @@ public class GameScheduleController extends FXController {
@FXML
void createNewSchedule(ActionEvent event) {
getTournamentDecorator().createNewGameSchedule();
if (getTournamentDecorator().getTournament().getGameList().size() > 0) {
AlertNewSchedule alert = new AlertNewSchedule();
if (alert.showAndGetResult()) {
getTournamentDecorator().createNewGameSchedule();
}
} else {
getTournamentDecorator().createNewGameSchedule();
}
}
@FXML
@@ -21,9 +21,7 @@ public class AlertDelete extends Alert {
public boolean showAndGetResult() {
result = false;
showAndWait().ifPresent(type -> {
if (type == yesButton) {
result = true;
}
result = type == yesButton;
});
return result;
}