diff --git a/app/src/main/java/ch/zhaw/projekt2/turnierverwaltung/Factory.java b/app/src/main/java/ch/zhaw/projekt2/turnierverwaltung/Factory.java index f93c403..b3b22f1 100644 --- a/app/src/main/java/ch/zhaw/projekt2/turnierverwaltung/Factory.java +++ b/app/src/main/java/ch/zhaw/projekt2/turnierverwaltung/Factory.java @@ -133,6 +133,10 @@ public class Factory { vBox.setBorder(null); } + public LanguageConfigurator getLanguageConfigurator() { + return languageConfigurator; + } + public enum View { tournamentList("tournamentList/tournamentList.fxml"), participantFormular("participantAddFormular/participantFormular.fxml"), diff --git a/app/src/main/java/ch/zhaw/projekt2/turnierverwaltung/FactoryDecorator.java b/app/src/main/java/ch/zhaw/projekt2/turnierverwaltung/FactoryDecorator.java index 5ab8da7..04c8104 100644 --- a/app/src/main/java/ch/zhaw/projekt2/turnierverwaltung/FactoryDecorator.java +++ b/app/src/main/java/ch/zhaw/projekt2/turnierverwaltung/FactoryDecorator.java @@ -54,7 +54,8 @@ public class FactoryDecorator implements IsObservable{ clearMessage(false); } catch (IOException | ClassNotFoundException e) { e.printStackTrace(); - printMessageToFooter("Fehler beim lesen der Datei.", true); + String msg = factory.getLanguageConfigurator().getSelectedLanguage("IOException"); + printMessageToFooter(msg, true); } //TODO handle and logging } @@ -169,6 +170,10 @@ public class FactoryDecorator implements IsObservable{ factory.resetFooter((BorderPane) pane, error); } + public LanguageConfigurator getLanguageConfigurator() { + return factory.getLanguageConfigurator(); + } + public void informListener() { for(IsObserver observer : listener) { observer.update(); diff --git a/app/src/main/java/ch/zhaw/projekt2/turnierverwaltung/LanguageConfigurator.java b/app/src/main/java/ch/zhaw/projekt2/turnierverwaltung/LanguageConfigurator.java index 3be0d7c..396fa7c 100644 --- a/app/src/main/java/ch/zhaw/projekt2/turnierverwaltung/LanguageConfigurator.java +++ b/app/src/main/java/ch/zhaw/projekt2/turnierverwaltung/LanguageConfigurator.java @@ -80,10 +80,52 @@ public class LanguageConfigurator { germanDictionary.put("phoneNumberLabel","Telefon:"); englishDictionary.put("phoneNumberLabel","Phone:"); germanDictionary.put("birthDateLabel","Geb. Datum:"); - englishDictionary.put("birthDateLabel","Birthday:"); + englishDictionary.put("birthDateLabel","Birthdate:"); //Game germanDictionary.put("locationLabel","Ort:"); englishDictionary.put("locationLabel","Location:"); + //Error + germanDictionary.put("IOException","Fehler beim lesen der Datei"); + englishDictionary.put("IOException","Could not read file"); + germanDictionary.put("tournamentExists","Turniername vergeben"); + englishDictionary.put("tournamentExists","Tournament exists already"); + germanDictionary.put("invalidName","Name nicht gueltig"); + englishDictionary.put("invalidName","Name not valid"); + germanDictionary.put("invalidMode","Modus nicht gueltig"); + englishDictionary.put("invalidMode","Mode not valid"); + germanDictionary.put("numberParticipant","Anzahl Spieler muss mindestens 4 sein und eine Potenz von 2"); + englishDictionary.put("numberParticipant","Number of players must be greater than 3 and power of 2"); + germanDictionary.put("invalidPhone","Telefonnummer nicht gueltig"); + englishDictionary.put("invalidPhone","Phonenumber not valid"); + germanDictionary.put("invalidDate","Geburtsdatum nicht gueltig"); + englishDictionary.put("invalidDate","Birthdate not valid"); + germanDictionary.put("participantNotExist","Teilnehmer existiert nicht"); + englishDictionary.put("participantNotExist","Participant does not exist"); + germanDictionary.put("placeNotExist","Teilnehmer existiert nicht"); + englishDictionary.put("placeNotExist","Participant does not exist"); + + //SaveMsg + germanDictionary.put("save","Zuletzt gespeichert: "); + englishDictionary.put("save","Last saved: "); + + //Alert + germanDictionary.put("yes","Ja"); + englishDictionary.put("yes","Yes"); + germanDictionary.put("no","Nein"); + englishDictionary.put("no","No"); + germanDictionary.put("titleDelete","Entfernen"); + englishDictionary.put("titleDelete","Remove"); + germanDictionary.put("headerDelete","Turnier entfernen?"); + englishDictionary.put("headerDelete","Delete Tournament?"); + germanDictionary.put("contentDelete","Sind Sie sicher, dass sie das Turnier entfernen wollen?\nNach diesem Vorgang kann es nicht wiederhergestellt werden."); + englishDictionary.put("contentDelete","Are you shure you want to delete the tournament?\nAfter that there is no way to restore."); + + germanDictionary.put("titleSchedule","Neu erstellen"); + englishDictionary.put("titleSchedule","Create new"); + germanDictionary.put("headerSchedule","Spielplan neu erstellen?"); + englishDictionary.put("headerSchedule","Create new Schedule?"); + germanDictionary.put("contentSchedule","Sind Sie sicher, dass Sie den Spielplan neu erstellen moechten?\nAlle Spielfortschritte gehen daraufhin verloren!"); + englishDictionary.put("contentSchedule","Are you shure you want to create a new game schedule?\nAll results will be lost!"); } public void translateGUI() { @@ -136,6 +178,18 @@ public class LanguageConfigurator { translateGUI(); } + public String getSelectedLanguage(String getMsg) { + String word = ""; + switch (selectedLanguage) { + case GERMAN -> word = germanDictionary.getOrDefault(getMsg,"check Logs"); + case ENGLISH -> word = englishDictionary.getOrDefault(getMsg,"check Logs"); + } + if (word.equals("check Logs")) { + //TODO Log + } + return word; + } + public enum Language { ENGLISH,GERMAN } 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 2e53ec6..b50f401 100644 --- a/app/src/main/java/ch/zhaw/projekt2/turnierverwaltung/TournamentDecorator.java +++ b/app/src/main/java/ch/zhaw/projekt2/turnierverwaltung/TournamentDecorator.java @@ -61,7 +61,8 @@ public class TournamentDecorator implements IsObservable{ public void saveTournament(){ executorService.execute(new saveTask()); factoryDecorator.clearMessage(false); - factoryDecorator.printMessageToFooter("Zuletzt gespeichert: " + new Date().toString(),false); + String msg = factoryDecorator.getLanguageConfigurator().getSelectedLanguage("save"); + factoryDecorator.printMessageToFooter(msg + new Date().toString(),false); } @@ -71,7 +72,8 @@ public class TournamentDecorator implements IsObservable{ try { if(fileIO.tournamentExists(name)){ //TODO:Logger - factoryDecorator.printMessageToFooter("Turniername existiert bereits",true); + String msg = factoryDecorator.getLanguageConfigurator().getSelectedLanguage("tournamentExists"); + factoryDecorator.printMessageToFooter(msg, true); return; } Tournament tournament = new Tournament(name, type); @@ -81,16 +83,19 @@ public class TournamentDecorator implements IsObservable{ } catch (InvalidNameException e) { e.printStackTrace(); //TODO: Logger - factoryDecorator.printMessageToFooter("Invalider Turniername",true); + String msg = factoryDecorator.getLanguageConfigurator().getSelectedLanguage("invalidName"); + factoryDecorator.printMessageToFooter(msg, true); } catch (Tournament.InvalidTypeException e) { e.printStackTrace(); //TODO: Logger - factoryDecorator.printMessageToFooter("Turniermodus nicht moeglich",true); + String msg = factoryDecorator.getLanguageConfigurator().getSelectedLanguage("invalidMode"); + factoryDecorator.printMessageToFooter(msg, true); } catch (IOException e) { e.printStackTrace(); //TODO: Logger - factoryDecorator.printMessageToFooter("Fehler bei Dateizugriff",true); + String msg = factoryDecorator.getLanguageConfigurator().getSelectedLanguage("IOException"); + factoryDecorator.printMessageToFooter(msg, true); } } @@ -102,7 +107,8 @@ public class TournamentDecorator implements IsObservable{ informListener(); } catch (IOException e) { e.printStackTrace(); //TODO handle and logging - factoryDecorator.printMessageToFooter("Fehler bei Dateizugriff",true); + String msg = factoryDecorator.getLanguageConfigurator().getSelectedLanguage("IOException"); + factoryDecorator.printMessageToFooter(msg, true); } } @@ -113,7 +119,8 @@ public class TournamentDecorator implements IsObservable{ factoryDecorator.clearMessage(true); } catch (Tournament.NumberOfParticipantInvalidException e) { e.printStackTrace(); - factoryDecorator.printMessageToFooter("Anzahl Teilnehmer muss mindestens 4 betragen und eine Potenz von 2 sein.",true); + String msg = factoryDecorator.getLanguageConfigurator().getSelectedLanguage("numberParticipant"); + factoryDecorator.printMessageToFooter(msg, true); } informListener(); } @@ -125,13 +132,16 @@ public class TournamentDecorator implements IsObservable{ informListener(); } catch (InvalidNameException e) { e.printStackTrace(); //TODO handle and logging - factoryDecorator.printMessageToFooter("Invalider Teilnehmername",true); + String msg = factoryDecorator.getLanguageConfigurator().getSelectedLanguage("invalidName"); + factoryDecorator.printMessageToFooter(msg, true); } catch (Person.InvalidPhoneNumberException e) { e.printStackTrace(); //TODO handle and logging - factoryDecorator.printMessageToFooter("Invalide Telefonnummer",true); + String msg = factoryDecorator.getLanguageConfigurator().getSelectedLanguage("invalidPhone"); + factoryDecorator.printMessageToFooter(msg, true); } catch (Player.InvalidDateException e) { e.printStackTrace(); - factoryDecorator.printMessageToFooter("Ungueltiges Geburtsdatum", true); + String msg = factoryDecorator.getLanguageConfigurator().getSelectedLanguage("invalidDate"); + factoryDecorator.printMessageToFooter(msg, true); } } @@ -142,8 +152,8 @@ public class TournamentDecorator implements IsObservable{ informListener(); } catch (Tournament.ParticipantNotExistsException e) { e.printStackTrace(); //TODO handle and logging - factoryDecorator.printMessageToFooter("Teilnehmer existiert nicht",true); - + String msg = factoryDecorator.getLanguageConfigurator().getSelectedLanguage("participantNotExist"); + factoryDecorator.printMessageToFooter(msg, true); } } @@ -154,7 +164,8 @@ public class TournamentDecorator implements IsObservable{ informListener(); } catch (InvalidNameException e) { e.printStackTrace(); //TODO handle and logging - factoryDecorator.printMessageToFooter("Invalider Ortsname",true); + String msg = factoryDecorator.getLanguageConfigurator().getSelectedLanguage("invalidName"); + factoryDecorator.printMessageToFooter(msg, true); } } @@ -165,7 +176,8 @@ public class TournamentDecorator implements IsObservable{ informListener(); } catch (Tournament.PlaceNotExistsException e) { e.printStackTrace(); //TODO handle and logging - factoryDecorator.printMessageToFooter("Ort existiert nicht",true); + String msg = factoryDecorator.getLanguageConfigurator().getSelectedLanguage("placeNotExist"); + factoryDecorator.printMessageToFooter(msg, true); } } @@ -190,7 +202,8 @@ public class TournamentDecorator implements IsObservable{ } catch (IOException e) { e.printStackTrace(); Platform.runLater(() -> { - factoryDecorator.printMessageToFooter("Datenzugriff nicht moeglich",true); + String msg = factoryDecorator.getLanguageConfigurator().getSelectedLanguage("IOException"); + factoryDecorator.printMessageToFooter(msg, true); }); } } diff --git a/app/src/main/java/ch/zhaw/projekt2/turnierverwaltung/main/gameScheduleView/AlertNewSchedule.java b/app/src/main/java/ch/zhaw/projekt2/turnierverwaltung/main/gameScheduleView/AlertNewSchedule.java index 17a823d..aedfb1a 100644 --- a/app/src/main/java/ch/zhaw/projekt2/turnierverwaltung/main/gameScheduleView/AlertNewSchedule.java +++ b/app/src/main/java/ch/zhaw/projekt2/turnierverwaltung/main/gameScheduleView/AlertNewSchedule.java @@ -1,20 +1,33 @@ package ch.zhaw.projekt2.turnierverwaltung.main.gameScheduleView; +import ch.zhaw.projekt2.turnierverwaltung.LanguageConfigurator; 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; + private ButtonType yesButton; + private ButtonType noButton; + private Boolean result; + private String yes; + private String no; + private String titleDelete; + private String headerDelete; + private String contentDelete; - 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 AlertNewSchedule(LanguageConfigurator languageConfigurator){ + super(Alert.AlertType.WARNING); + yes = languageConfigurator.getSelectedLanguage("yes"); + no = languageConfigurator.getSelectedLanguage("no"); + titleDelete = languageConfigurator.getSelectedLanguage("titleSchedule"); + headerDelete = languageConfigurator.getSelectedLanguage("headerSchedule"); + contentDelete = languageConfigurator.getSelectedLanguage("contentSchedule"); + yesButton = new ButtonType(yes, ButtonBar.ButtonData.YES); + noButton = new ButtonType(no, ButtonBar.ButtonData.NO); + setTitle(titleDelete); + setHeaderText(headerDelete); + setContentText(contentDelete); + getButtonTypes().setAll(yesButton, noButton); } public boolean showAndGetResult() { diff --git a/app/src/main/java/ch/zhaw/projekt2/turnierverwaltung/main/gameScheduleView/GameScheduleController.java b/app/src/main/java/ch/zhaw/projekt2/turnierverwaltung/main/gameScheduleView/GameScheduleController.java index 5fe3a34..6a9a543 100644 --- a/app/src/main/java/ch/zhaw/projekt2/turnierverwaltung/main/gameScheduleView/GameScheduleController.java +++ b/app/src/main/java/ch/zhaw/projekt2/turnierverwaltung/main/gameScheduleView/GameScheduleController.java @@ -40,7 +40,7 @@ public class GameScheduleController extends FXController { @FXML void createNewSchedule(ActionEvent event) { if (getTournamentDecorator().getTournament().getGameList().size() > 0) { - AlertNewSchedule alert = new AlertNewSchedule(); + AlertNewSchedule alert = new AlertNewSchedule(getLanguageConfigurator()); if (alert.showAndGetResult()) { getTournamentDecorator().createNewGameSchedule(); } diff --git a/app/src/main/java/ch/zhaw/projekt2/turnierverwaltung/main/tournamentList/AlertDelete.java b/app/src/main/java/ch/zhaw/projekt2/turnierverwaltung/main/tournamentList/AlertDelete.java index 8aada10..5b3f650 100644 --- a/app/src/main/java/ch/zhaw/projekt2/turnierverwaltung/main/tournamentList/AlertDelete.java +++ b/app/src/main/java/ch/zhaw/projekt2/turnierverwaltung/main/tournamentList/AlertDelete.java @@ -1,20 +1,32 @@ package ch.zhaw.projekt2.turnierverwaltung.main.tournamentList; +import ch.zhaw.projekt2.turnierverwaltung.LanguageConfigurator; import javafx.scene.control.Alert; import javafx.scene.control.ButtonBar; import javafx.scene.control.ButtonType; public class AlertDelete extends Alert { - ButtonType yesButton = new ButtonType("Ja", ButtonBar.ButtonData.YES); - ButtonType noButton = new ButtonType("Nein", ButtonBar.ButtonData.NO); + ButtonType yesButton; + ButtonType noButton; Boolean result; + String yes; + String no; + String titleDelete; + String headerDelete; + String contentDelete; - public AlertDelete(String name){ + public AlertDelete(LanguageConfigurator languageConfigurator){ super(Alert.AlertType.WARNING); - setTitle("Entfernen"); - setHeaderText("Turnier entfernen?"); - setContentText("Sind Sie sicher, dass sie das Turnier " + name + " entfernen wollen?\n" + - "Nach diesem Vorgang kann es nicht wiederhergestellt werden."); + yes = languageConfigurator.getSelectedLanguage("yes"); + no = languageConfigurator.getSelectedLanguage("no"); + titleDelete = languageConfigurator.getSelectedLanguage("titleDelete"); + headerDelete = languageConfigurator.getSelectedLanguage("headerDelete"); + contentDelete = languageConfigurator.getSelectedLanguage("contentDelete"); + yesButton = new ButtonType(yes, ButtonBar.ButtonData.YES); + noButton = new ButtonType(no, ButtonBar.ButtonData.NO); + setTitle(titleDelete); + setHeaderText(headerDelete); + setContentText(contentDelete); getButtonTypes().setAll(yesButton, noButton); } diff --git a/app/src/main/java/ch/zhaw/projekt2/turnierverwaltung/main/tournamentList/TournamentListController.java b/app/src/main/java/ch/zhaw/projekt2/turnierverwaltung/main/tournamentList/TournamentListController.java index a1c85e9..d97c66b 100644 --- a/app/src/main/java/ch/zhaw/projekt2/turnierverwaltung/main/tournamentList/TournamentListController.java +++ b/app/src/main/java/ch/zhaw/projekt2/turnierverwaltung/main/tournamentList/TournamentListController.java @@ -78,7 +78,7 @@ public class TournamentListController extends FXController { @FXML void deleteTournament(ActionEvent event) { FileIO.TournamentFile tournamentFile = tournamentListView.getSelectionModel().getSelectedItems().get(0); - AlertDelete alert = new AlertDelete(tournamentFile.toString()); + AlertDelete alert = new AlertDelete(getLanguageConfigurator()); if(alert.showAndGetResult()){ getTournamentDecorator().deleteTournament(tournamentFile); }