extent scope of FactoryDecorator for TournamentDecorator
creat footer to show error msg if user acts not as expected
This commit is contained in:
		
							parent
							
								
									b0aa0ab1ad
								
							
						
					
					
						commit
						298d61eeca
					
				| 
						 | 
					@ -4,8 +4,11 @@ import ch.zhaw.projekt2.turnierverwaltung.main.gameScheduleView.GameController;
 | 
				
			||||||
import ch.zhaw.projekt2.turnierverwaltung.main.gameScheduleView.GameDecorator;
 | 
					import ch.zhaw.projekt2.turnierverwaltung.main.gameScheduleView.GameDecorator;
 | 
				
			||||||
import ch.zhaw.projekt2.turnierverwaltung.main.tournamentList.TournamentListController;
 | 
					import ch.zhaw.projekt2.turnierverwaltung.main.tournamentList.TournamentListController;
 | 
				
			||||||
import javafx.fxml.FXMLLoader;
 | 
					import javafx.fxml.FXMLLoader;
 | 
				
			||||||
import javafx.scene.layout.BorderPane;
 | 
					import javafx.scene.control.Label;
 | 
				
			||||||
import javafx.scene.layout.VBox;
 | 
					import javafx.scene.control.TextArea;
 | 
				
			||||||
 | 
					import javafx.scene.layout.*;
 | 
				
			||||||
 | 
					import javafx.scene.paint.Color;
 | 
				
			||||||
 | 
					import javafx.scene.text.Font;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import java.io.IOException;
 | 
					import java.io.IOException;
 | 
				
			||||||
import java.net.URL;
 | 
					import java.net.URL;
 | 
				
			||||||
| 
						 | 
					@ -15,7 +18,7 @@ public class Factory {
 | 
				
			||||||
    private FileIO fileIO;
 | 
					    private FileIO fileIO;
 | 
				
			||||||
    //TODO save views instead of recreate them.
 | 
					    //TODO save views instead of recreate them.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public Factory(FileIO fileIO, TournamentDecorator tournamentDecorator){
 | 
					    public Factory(FileIO fileIO, TournamentDecorator tournamentDecorator) {
 | 
				
			||||||
        this.fileIO = fileIO;
 | 
					        this.fileIO = fileIO;
 | 
				
			||||||
        this.tournamentDecorator = tournamentDecorator;
 | 
					        this.tournamentDecorator = tournamentDecorator;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
| 
						 | 
					@ -28,7 +31,7 @@ public class Factory {
 | 
				
			||||||
        this.tournamentDecorator.setTournament(tournament);
 | 
					        this.tournamentDecorator.setTournament(tournament);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public BorderPane loadMainWindow(){
 | 
					    public BorderPane loadMainWindow() {
 | 
				
			||||||
        FXMLLoader loader = new FXMLLoader(getClass().getResource("mainWindow.fxml"));
 | 
					        FXMLLoader loader = new FXMLLoader(getClass().getResource("mainWindow.fxml"));
 | 
				
			||||||
        try {
 | 
					        try {
 | 
				
			||||||
            return loader.load();
 | 
					            return loader.load();
 | 
				
			||||||
| 
						 | 
					@ -39,7 +42,7 @@ public class Factory {
 | 
				
			||||||
        return null;
 | 
					        return null;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public void loadTournamentList(BorderPane pane, FactoryDecorator factoryDecorator){
 | 
					    public void loadTournamentList(BorderPane pane, FactoryDecorator factoryDecorator) {
 | 
				
			||||||
        tournamentDecorator.setTournament(null);
 | 
					        tournamentDecorator.setTournament(null);
 | 
				
			||||||
        TournamentListController controller = (TournamentListController) setCenterOfBorderPane(pane, getClass().getResource("tournamentList/tournamentList.fxml"), factoryDecorator);
 | 
					        TournamentListController controller = (TournamentListController) setCenterOfBorderPane(pane, getClass().getResource("tournamentList/tournamentList.fxml"), factoryDecorator);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
| 
						 | 
					@ -79,6 +82,8 @@ public class Factory {
 | 
				
			||||||
            pane.setCenter(loader.load());
 | 
					            pane.setCenter(loader.load());
 | 
				
			||||||
            controller = loader.getController();
 | 
					            controller = loader.getController();
 | 
				
			||||||
            controller.setup(tournamentDecorator, fileIO, factoryDecorator, pane);
 | 
					            controller.setup(tournamentDecorator, fileIO, factoryDecorator, pane);
 | 
				
			||||||
 | 
					            VBox bottom = (VBox) pane.getBottom();
 | 
				
			||||||
 | 
					            resetFooter(pane, true);
 | 
				
			||||||
        } catch (IOException e) {
 | 
					        } catch (IOException e) {
 | 
				
			||||||
            e.printStackTrace();
 | 
					            e.printStackTrace();
 | 
				
			||||||
            //TODO handle and logging?
 | 
					            //TODO handle and logging?
 | 
				
			||||||
| 
						 | 
					@ -87,6 +92,42 @@ public class Factory {
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public void printMessageToFooter(BorderPane pane, String msg, boolean error) {
 | 
				
			||||||
 | 
					        VBox bottom = (VBox) pane.getBottom();
 | 
				
			||||||
 | 
					        Label label = new Label();
 | 
				
			||||||
 | 
					        VBox innerVbox;
 | 
				
			||||||
 | 
					        label.setText(msg);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        if (error) {
 | 
				
			||||||
 | 
					            innerVbox = (VBox) bottom.getChildren().get(0);
 | 
				
			||||||
 | 
					            resetFooter(pane, true);
 | 
				
			||||||
 | 
					            label.setTextFill(Color.RED);
 | 
				
			||||||
 | 
					            label.setFont(new Font(20));
 | 
				
			||||||
 | 
					            innerVbox.setBorder(new Border(new BorderStroke(Color.valueOf("#FF0000"), BorderStrokeStyle.SOLID, CornerRadii.EMPTY, BorderWidths.DEFAULT)));
 | 
				
			||||||
 | 
					            innerVbox.getChildren().add(label);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        } else {
 | 
				
			||||||
 | 
					            innerVbox = (VBox) bottom.getChildren().get(1);
 | 
				
			||||||
 | 
					            resetFooter(pane,false);
 | 
				
			||||||
 | 
					            label.setTextFill(Color.GREEN);
 | 
				
			||||||
 | 
					            label.setFont(new Font(10));
 | 
				
			||||||
 | 
					            innerVbox.getChildren().add(label);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public void resetFooter(BorderPane pane,boolean error) {
 | 
				
			||||||
 | 
					        VBox bottom = (VBox) pane.getBottom();
 | 
				
			||||||
 | 
					        VBox vBox;
 | 
				
			||||||
 | 
					        if (error) {
 | 
				
			||||||
 | 
					            vBox = (VBox) bottom.getChildren().get(0);
 | 
				
			||||||
 | 
					        } else {
 | 
				
			||||||
 | 
					            vBox = (VBox) bottom.getChildren().get(1);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        vBox.getChildren().clear();
 | 
				
			||||||
 | 
					        vBox.setBorder(null);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -3,7 +3,6 @@ package ch.zhaw.projekt2.turnierverwaltung;
 | 
				
			||||||
import ch.zhaw.projekt2.turnierverwaltung.main.gameScheduleView.GameController;
 | 
					import ch.zhaw.projekt2.turnierverwaltung.main.gameScheduleView.GameController;
 | 
				
			||||||
import ch.zhaw.projekt2.turnierverwaltung.main.gameScheduleView.GameDecorator;
 | 
					import ch.zhaw.projekt2.turnierverwaltung.main.gameScheduleView.GameDecorator;
 | 
				
			||||||
import javafx.geometry.Pos;
 | 
					import javafx.geometry.Pos;
 | 
				
			||||||
import javafx.scene.Node;
 | 
					 | 
				
			||||||
import javafx.scene.layout.BorderPane;
 | 
					import javafx.scene.layout.BorderPane;
 | 
				
			||||||
import javafx.scene.layout.HBox;
 | 
					import javafx.scene.layout.HBox;
 | 
				
			||||||
import javafx.scene.layout.Pane;
 | 
					import javafx.scene.layout.Pane;
 | 
				
			||||||
| 
						 | 
					@ -158,6 +157,13 @@ public class FactoryDecorator implements IsObservable{
 | 
				
			||||||
        return factory.loadGameView(vBox ,gameDecorator, this);
 | 
					        return factory.loadGameView(vBox ,gameDecorator, this);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public void printMessageToFooter(String msg, boolean error) {
 | 
				
			||||||
 | 
					        factory.printMessageToFooter((BorderPane) pane,msg,error);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public void clearMessage(boolean error){
 | 
				
			||||||
 | 
					        factory.resetFooter((BorderPane) pane, error);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public void informListener() {
 | 
					    public void informListener() {
 | 
				
			||||||
        for(IsObserver observer : listener) {
 | 
					        for(IsObserver observer : listener) {
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -2,8 +2,6 @@ package ch.zhaw.projekt2.turnierverwaltung;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import javafx.collections.FXCollections;
 | 
					import javafx.collections.FXCollections;
 | 
				
			||||||
import javafx.collections.ObservableList;
 | 
					import javafx.collections.ObservableList;
 | 
				
			||||||
 | 
					 | 
				
			||||||
import java.io.File;
 | 
					 | 
				
			||||||
import java.io.Serializable;
 | 
					import java.io.Serializable;
 | 
				
			||||||
import java.util.*;
 | 
					import java.util.*;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -29,7 +27,7 @@ public class Tournament implements Serializable {
 | 
				
			||||||
        gameList = new ArrayList<>();
 | 
					        gameList = new ArrayList<>();
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public void saveParticipant(Participant newParticipant) throws ParticipantExistsException {
 | 
					    public void saveParticipant(Participant newParticipant) {
 | 
				
			||||||
        for(Participant participant: participants){
 | 
					        for(Participant participant: participants){
 | 
				
			||||||
            if(participant.equals(newParticipant)){
 | 
					            if(participant.equals(newParticipant)){
 | 
				
			||||||
                participant.change(newParticipant);
 | 
					                participant.change(newParticipant);
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,5 +1,7 @@
 | 
				
			||||||
package ch.zhaw.projekt2.turnierverwaltung;
 | 
					package ch.zhaw.projekt2.turnierverwaltung;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import javafx.application.Platform;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import java.io.IOException;
 | 
					import java.io.IOException;
 | 
				
			||||||
import java.util.ArrayList;
 | 
					import java.util.ArrayList;
 | 
				
			||||||
import java.util.List;
 | 
					import java.util.List;
 | 
				
			||||||
| 
						 | 
					@ -11,6 +13,7 @@ public class TournamentDecorator implements IsObservable{
 | 
				
			||||||
    private FileIO fileIO;
 | 
					    private FileIO fileIO;
 | 
				
			||||||
    private List<IsObserver> listener = new ArrayList<>();
 | 
					    private List<IsObserver> listener = new ArrayList<>();
 | 
				
			||||||
    private ExecutorService executorService;
 | 
					    private ExecutorService executorService;
 | 
				
			||||||
 | 
					    private FactoryDecorator factoryDecorator;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public TournamentDecorator(FileIO fileIO){
 | 
					    public TournamentDecorator(FileIO fileIO){
 | 
				
			||||||
        setFileIO(fileIO);
 | 
					        setFileIO(fileIO);
 | 
				
			||||||
| 
						 | 
					@ -26,6 +29,10 @@ public class TournamentDecorator implements IsObservable{
 | 
				
			||||||
        executorService = Executors.newFixedThreadPool(Runtime.getRuntime().availableProcessors());
 | 
					        executorService = Executors.newFixedThreadPool(Runtime.getRuntime().availableProcessors());
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public void setFactoryDecorator(FactoryDecorator factoryDecorator) {
 | 
				
			||||||
 | 
					        this.factoryDecorator = factoryDecorator;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public void setFileIO(FileIO fileIO) {
 | 
					    public void setFileIO(FileIO fileIO) {
 | 
				
			||||||
        this.fileIO = fileIO;
 | 
					        this.fileIO = fileIO;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
| 
						 | 
					@ -56,76 +63,106 @@ public class TournamentDecorator implements IsObservable{
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public void createTournament(String name, Tournament.Type type){
 | 
					    public void createTournament(String name, Tournament.Type type){
 | 
				
			||||||
        if(fileIO.tournamentExists(name)){
 | 
					
 | 
				
			||||||
            System.out.println("Tournament with same name exists already.");
 | 
					 | 
				
			||||||
            return; //TODO handle and logging
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        try {
 | 
					        try {
 | 
				
			||||||
 | 
					            if(fileIO.tournamentExists(name)){
 | 
				
			||||||
 | 
					                //TODO:Logger
 | 
				
			||||||
 | 
					                factoryDecorator.printMessageToFooter("Turniername existiert bereits",true);
 | 
				
			||||||
 | 
					                return;
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
            Tournament tournament = new Tournament(name, type);
 | 
					            Tournament tournament = new Tournament(name, type);
 | 
				
			||||||
            fileIO.saveTournament(tournament);
 | 
					            fileIO.saveTournament(tournament);
 | 
				
			||||||
 | 
					            factoryDecorator.clearMessage(true);
 | 
				
			||||||
            informListener();
 | 
					            informListener();
 | 
				
			||||||
        } catch (InvalidNameException e) {
 | 
					        } catch (InvalidNameException e) {
 | 
				
			||||||
            e.printStackTrace(); //TODO handle and logging
 | 
					            e.printStackTrace();
 | 
				
			||||||
 | 
					            //TODO: Logger
 | 
				
			||||||
 | 
					            factoryDecorator.printMessageToFooter("Invalider Turniername",true);
 | 
				
			||||||
        } catch (Tournament.InvalidTypeException e) {
 | 
					        } catch (Tournament.InvalidTypeException e) {
 | 
				
			||||||
            e.printStackTrace(); //TODO handle and logging
 | 
					            e.printStackTrace();
 | 
				
			||||||
 | 
					            //TODO: Logger
 | 
				
			||||||
 | 
					            factoryDecorator.printMessageToFooter("Turniermodus nicht möglich",true);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        } catch (IOException e) {
 | 
					        } catch (IOException e) {
 | 
				
			||||||
            e.printStackTrace(); //TODO handle and logging
 | 
					            e.printStackTrace();
 | 
				
			||||||
 | 
					            //TODO: Logger
 | 
				
			||||||
 | 
					            factoryDecorator.printMessageToFooter("Fehler bei Dateizugriff",true);
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public void deleteTournament(FileIO.TournamentFile tournamentFile){
 | 
					    public void deleteTournament(FileIO.TournamentFile tournamentFile){
 | 
				
			||||||
        try {
 | 
					        try {
 | 
				
			||||||
            fileIO.deleteTournament(tournamentFile);
 | 
					            fileIO.deleteTournament(tournamentFile);
 | 
				
			||||||
 | 
					            factoryDecorator.clearMessage(true);
 | 
				
			||||||
            informListener();
 | 
					            informListener();
 | 
				
			||||||
        } catch (IOException e) {
 | 
					        } catch (IOException e) {
 | 
				
			||||||
            e.printStackTrace();  //TODO handle and logging
 | 
					            e.printStackTrace();  //TODO handle and logging
 | 
				
			||||||
 | 
					            factoryDecorator.printMessageToFooter("Fehler bei Dateizugriff",true);
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public void createNewGameSchedule() throws Tournament.NumberOfParticipantInvalidException {
 | 
					    public void createNewGameSchedule() {
 | 
				
			||||||
        tournament.createGameSchedule();
 | 
					        //TODO: logging
 | 
				
			||||||
 | 
					        try {
 | 
				
			||||||
 | 
					            tournament.createGameSchedule();
 | 
				
			||||||
 | 
					            factoryDecorator.clearMessage(true);
 | 
				
			||||||
 | 
					        } catch (Tournament.NumberOfParticipantInvalidException e) {
 | 
				
			||||||
 | 
					            e.printStackTrace();
 | 
				
			||||||
 | 
					            factoryDecorator.printMessageToFooter("Anzahl Teilnehmer nicht vielfaches von 2",true);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
        informListener();
 | 
					        informListener();
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public void savePlayer(String firstName, String name, String phoneNumber, String dateOfBirth){
 | 
					    public void savePlayer(String firstName, String name, String phoneNumber, String dateOfBirth){
 | 
				
			||||||
        try {
 | 
					        try {
 | 
				
			||||||
            tournament.saveParticipant(new Player(firstName, name, phoneNumber, dateOfBirth));
 | 
					            tournament.saveParticipant(new Player(firstName, name, phoneNumber, dateOfBirth));
 | 
				
			||||||
 | 
					            factoryDecorator.clearMessage(true);
 | 
				
			||||||
            informListener();
 | 
					            informListener();
 | 
				
			||||||
        } catch (Tournament.ParticipantExistsException e) {
 | 
					 | 
				
			||||||
            e.printStackTrace(); //TODO handle and logging
 | 
					 | 
				
			||||||
        } catch (InvalidNameException e) {
 | 
					        } catch (InvalidNameException e) {
 | 
				
			||||||
            e.printStackTrace(); //TODO handle and logging
 | 
					            e.printStackTrace(); //TODO handle and logging
 | 
				
			||||||
 | 
					            factoryDecorator.printMessageToFooter("Invalider Teilnehmername",true);
 | 
				
			||||||
        } catch (Person.InvalidPhoneNumberException e) {
 | 
					        } catch (Person.InvalidPhoneNumberException e) {
 | 
				
			||||||
            e.printStackTrace(); //TODO handle and logging
 | 
					            e.printStackTrace(); //TODO handle and logging
 | 
				
			||||||
 | 
					            factoryDecorator.printMessageToFooter("Invalide Telefonnummer",true);
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public void deleteParticipant(Participant participant){
 | 
					    public void deleteParticipant(Participant participant){
 | 
				
			||||||
        try {
 | 
					        try {
 | 
				
			||||||
            tournament.removeParticipant(participant);
 | 
					            tournament.removeParticipant(participant);
 | 
				
			||||||
 | 
					            factoryDecorator.clearMessage(true);
 | 
				
			||||||
            informListener();
 | 
					            informListener();
 | 
				
			||||||
        } catch (Tournament.ParticipantNotExistsException e) {
 | 
					        } catch (Tournament.ParticipantNotExistsException e) {
 | 
				
			||||||
            e.printStackTrace(); //TODO handle and logging
 | 
					            e.printStackTrace(); //TODO handle and logging
 | 
				
			||||||
 | 
					            factoryDecorator.printMessageToFooter("Teilnehmer existiert nicht",true);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public void savePlace(String name){
 | 
					    public void savePlace(String name){
 | 
				
			||||||
        try {
 | 
					        try {
 | 
				
			||||||
            tournament.addPlace(new Place(name));
 | 
					            tournament.addPlace(new Place(name));
 | 
				
			||||||
 | 
					            factoryDecorator.clearMessage(true);
 | 
				
			||||||
            informListener();
 | 
					            informListener();
 | 
				
			||||||
        } catch (Tournament.PlaceExistsException e) {
 | 
					        } catch (Tournament.PlaceExistsException e) {
 | 
				
			||||||
            e.printStackTrace(); //TODO handle and logging
 | 
					            e.printStackTrace(); //TODO handle and logging
 | 
				
			||||||
 | 
					            factoryDecorator.printMessageToFooter("Ort existiert bereits",true);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        } catch (InvalidNameException e) {
 | 
					        } catch (InvalidNameException e) {
 | 
				
			||||||
            e.printStackTrace(); //TODO handle and logging
 | 
					            e.printStackTrace(); //TODO handle and logging
 | 
				
			||||||
 | 
					            factoryDecorator.printMessageToFooter("Invalider Ortsname",true);
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public void deletePlace(Place place){
 | 
					    public void deletePlace(Place place){
 | 
				
			||||||
        try {
 | 
					        try {
 | 
				
			||||||
            tournament.removePlace(place);
 | 
					            tournament.removePlace(place);
 | 
				
			||||||
 | 
					            factoryDecorator.clearMessage(true);
 | 
				
			||||||
            informListener();
 | 
					            informListener();
 | 
				
			||||||
        } catch (Tournament.PlaceNotExistsException e) {
 | 
					        } catch (Tournament.PlaceNotExistsException e) {
 | 
				
			||||||
            e.printStackTrace(); //TODO handle and logging
 | 
					            e.printStackTrace(); //TODO handle and logging
 | 
				
			||||||
 | 
					            factoryDecorator.printMessageToFooter("Ort existiert nicht",true);
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -143,7 +180,10 @@ public class TournamentDecorator implements IsObservable{
 | 
				
			||||||
            try {
 | 
					            try {
 | 
				
			||||||
                fileIO.saveTournament(tournament);
 | 
					                fileIO.saveTournament(tournament);
 | 
				
			||||||
            } catch (IOException e) {
 | 
					            } catch (IOException e) {
 | 
				
			||||||
                e.printStackTrace(); //TODO handle and logging
 | 
					                e.printStackTrace();
 | 
				
			||||||
 | 
					                Platform.runLater(() -> {
 | 
				
			||||||
 | 
					                    factoryDecorator.printMessageToFooter("Datenzugriff nicht moeglich",true);
 | 
				
			||||||
 | 
					                });
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -8,23 +8,21 @@ import javafx.application.Application;
 | 
				
			||||||
import javafx.fxml.FXMLLoader;
 | 
					import javafx.fxml.FXMLLoader;
 | 
				
			||||||
import javafx.scene.Scene;
 | 
					import javafx.scene.Scene;
 | 
				
			||||||
import javafx.scene.layout.BorderPane;
 | 
					import javafx.scene.layout.BorderPane;
 | 
				
			||||||
import javafx.scene.layout.Pane;
 | 
					 | 
				
			||||||
import javafx.stage.Stage;
 | 
					import javafx.stage.Stage;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import java.awt.*;
 | 
					 | 
				
			||||||
import java.io.IOException;
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
public class MainWindow extends Application {
 | 
					public class MainWindow extends Application {
 | 
				
			||||||
    private FileIO fileIO = new FileIO(System.getProperty("user.dir") + System.getProperty("file.separator") + "tournierverwaltung_angrynerds");
 | 
					    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 TournamentDecorator tournamentDecorator = new TournamentDecorator(fileIO);
 | 
				
			||||||
    private Factory factory = new Factory(fileIO, tournamentDecorator); //TODO make it private!
 | 
					    private Factory factory = new Factory(fileIO, tournamentDecorator); //TODO make it private!
 | 
				
			||||||
    private FactoryDecorator factoryDecorator;
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
    @Override
 | 
					    @Override
 | 
				
			||||||
    public void start(Stage primaryStage) throws Exception {
 | 
					    public void start(Stage primaryStage) throws Exception {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        BorderPane pane = factory.loadMainWindow();
 | 
					        BorderPane pane = factory.loadMainWindow();
 | 
				
			||||||
        factoryDecorator = new FactoryDecorator(fileIO, factory, pane);
 | 
					        factoryDecorator = new FactoryDecorator(fileIO, factory, pane);
 | 
				
			||||||
 | 
					        tournamentDecorator.setFactoryDecorator(factoryDecorator);
 | 
				
			||||||
        factoryDecorator.openTournamentList();
 | 
					        factoryDecorator.openTournamentList();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -30,12 +30,7 @@ public class GameScheduleController extends FXController {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    @FXML
 | 
					    @FXML
 | 
				
			||||||
    void createNewSchedule(ActionEvent event) {
 | 
					    void createNewSchedule(ActionEvent event) {
 | 
				
			||||||
        try {
 | 
					        getTournamentDecorator().createNewGameSchedule();
 | 
				
			||||||
            getTournamentDecorator().createNewGameSchedule();
 | 
					 | 
				
			||||||
        } catch (Tournament.NumberOfParticipantInvalidException e) {
 | 
					 | 
				
			||||||
            //TODO Method in FactoryDecorater to show msg
 | 
					 | 
				
			||||||
            e.printStackTrace();
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    @FXML
 | 
					    @FXML
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -2,6 +2,7 @@ package ch.zhaw.projekt2.turnierverwaltung.main.tournamentList;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import ch.zhaw.projekt2.turnierverwaltung.FXController;
 | 
					import ch.zhaw.projekt2.turnierverwaltung.FXController;
 | 
				
			||||||
import ch.zhaw.projekt2.turnierverwaltung.FileIO;
 | 
					import ch.zhaw.projekt2.turnierverwaltung.FileIO;
 | 
				
			||||||
 | 
					import ch.zhaw.projekt2.turnierverwaltung.InvalidNameException;
 | 
				
			||||||
import ch.zhaw.projekt2.turnierverwaltung.Tournament;
 | 
					import ch.zhaw.projekt2.turnierverwaltung.Tournament;
 | 
				
			||||||
import javafx.collections.FXCollections;
 | 
					import javafx.collections.FXCollections;
 | 
				
			||||||
import javafx.collections.ObservableList;
 | 
					import javafx.collections.ObservableList;
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -8,7 +8,7 @@
 | 
				
			||||||
<?import javafx.scene.layout.VBox?>
 | 
					<?import javafx.scene.layout.VBox?>
 | 
				
			||||||
<?import javafx.scene.text.Font?>
 | 
					<?import javafx.scene.text.Font?>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
<BorderPane maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="400.0" prefWidth="600.0" xmlns="http://javafx.com/javafx/17" xmlns:fx="http://javafx.com/fxml/1" fx:controller="ch.zhaw.projekt2.turnierverwaltung.main.MainWindowController">
 | 
					<BorderPane maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="400.0" prefWidth="600.0" xmlns="http://javafx.com/javafx/18" xmlns:fx="http://javafx.com/fxml/1" fx:controller="ch.zhaw.projekt2.turnierverwaltung.main.MainWindowController">
 | 
				
			||||||
   <top>
 | 
					   <top>
 | 
				
			||||||
      <VBox alignment="TOP_CENTER" prefHeight="86.0" prefWidth="600.0" BorderPane.alignment="CENTER">
 | 
					      <VBox alignment="TOP_CENTER" prefHeight="86.0" prefWidth="600.0" BorderPane.alignment="CENTER">
 | 
				
			||||||
         <children>
 | 
					         <children>
 | 
				
			||||||
| 
						 | 
					@ -34,4 +34,12 @@
 | 
				
			||||||
         </children>
 | 
					         </children>
 | 
				
			||||||
      </VBox>
 | 
					      </VBox>
 | 
				
			||||||
   </top>
 | 
					   </top>
 | 
				
			||||||
 | 
					   <bottom>
 | 
				
			||||||
 | 
					      <VBox prefHeight="49.0" prefWidth="600.0" BorderPane.alignment="CENTER">
 | 
				
			||||||
 | 
					         <children>
 | 
				
			||||||
 | 
					            <VBox alignment="CENTER" prefHeight="200.0" prefWidth="100.0" />
 | 
				
			||||||
 | 
					            <VBox alignment="CENTER_RIGHT" prefHeight="200.0" prefWidth="100.0" />
 | 
				
			||||||
 | 
					         </children>
 | 
				
			||||||
 | 
					      </VBox>
 | 
				
			||||||
 | 
					   </bottom>
 | 
				
			||||||
</BorderPane>
 | 
					</BorderPane>
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue