diff --git a/client/src/main/java/client/Main.java b/client/src/main/java/client/Main.java index 6b9db4f..e722b2d 100644 --- a/client/src/main/java/client/Main.java +++ b/client/src/main/java/client/Main.java @@ -53,6 +53,6 @@ public class Main extends Application { var addStep = FXML.load(AddStepsCtrl.class, "client", "scenes", "AddSteps.fxml"); var mainCtrl = INJECTOR.getInstance(MainCtrl.class); - mainCtrl.initialize(primaryStage, addName, foodpal, addIngredient, addStep); + mainCtrl.setup(primaryStage, addName, foodpal, addIngredient, addStep); } } \ No newline at end of file diff --git a/client/src/main/java/client/scenes/MainCtrl.java b/client/src/main/java/client/scenes/MainCtrl.java index 018eec1..1f73925 100644 --- a/client/src/main/java/client/scenes/MainCtrl.java +++ b/client/src/main/java/client/scenes/MainCtrl.java @@ -15,6 +15,10 @@ */ package client.scenes; +import client.utils.LocaleAware; +import client.utils.LocaleManager; +import jakarta.inject.Inject; +import javafx.fxml.FXML; import javafx.scene.Parent; import javafx.scene.Scene; import javafx.stage.Stage; @@ -22,28 +26,42 @@ import javafx.util.Pair; import java.io.IOException; -public class MainCtrl { +public class MainCtrl implements LocaleAware { + private final LocaleManager localeManager; + @FXML private Stage primaryStage; + @FXML private AddNameCtrl addNameCtrl; private Scene addName; + @FXML private FoodpalApplicationCtrl foodpalCtrl; private Scene foodpal; + @FXML private AddIngredientCtrl addIngredientCtrl; private Scene addIngredient; + @FXML private AddStepsCtrl addStepsCtrl; private Scene addStep; - public void initialize(Stage primaryStage, - Pair addName, - Pair foodpal, - Pair addIngredient, - Pair addStep - ) throws IOException, InterruptedException { + private String addNameTitle = "Naming recipes (default)"; + private String addIngredientTitle = "To add ingredients (default)"; + private String addStepTitle = "To add preparation steps (default)"; + + @Inject + public MainCtrl(LocaleManager localeManager) { + this.localeManager = localeManager; + } + + public void setup(Stage primaryStage, + Pair addName, + Pair foodpal, + Pair addIngredient, + Pair addStep) throws IOException, InterruptedException { this.primaryStage = primaryStage; @@ -59,14 +77,26 @@ public class MainCtrl { this.addStepsCtrl = addStep.getKey(); this.addStep = new Scene(addStep.getValue()); - showFoodpal(); primaryStage.show(); + + initialize(); // Initialize LocaleManager stuff manually since MainCtrl isn't loaded from FXML. } + @Override + public void updateText() { + addNameTitle = getLocaleString("add.recipe.title"); + addStepTitle = getLocaleString("add.step.title"); + addIngredientTitle = getLocaleString("add.ingredient.title"); + } + + @Override + public LocaleManager getLocaleManager() { + return localeManager; + } public void showAddName() { - primaryStage.setTitle("Naming recipes"); + primaryStage.setTitle(addNameTitle); primaryStage.setScene(addName); addName.setOnKeyPressed(e -> { try { @@ -84,7 +114,7 @@ public class MainCtrl { } public void showAddIngredient() { - primaryStage.setTitle("To add ingredients"); + primaryStage.setTitle(addIngredientTitle); primaryStage.setScene(addIngredient); addIngredient.setOnKeyPressed(e -> { try { @@ -97,7 +127,7 @@ public class MainCtrl { } public void showAddSteps() { - primaryStage.setTitle("To add preparation steps"); + primaryStage.setTitle(addStepTitle); primaryStage.setScene(addStep); addStep.setOnKeyPressed(e -> { try { diff --git a/client/src/main/java/client/utils/LocaleAware.java b/client/src/main/java/client/utils/LocaleAware.java index 72bf3dd..c5bf9d6 100644 --- a/client/src/main/java/client/utils/LocaleAware.java +++ b/client/src/main/java/client/utils/LocaleAware.java @@ -27,6 +27,10 @@ public interface LocaleAware extends Initializable { initializeComponents(); } + default void initialize() { + initialize(null, null); + } + default String getLocaleString(String key) { return getLocaleManager().getBundle().getString(key); } diff --git a/client/src/main/java/client/utils/LocaleManager.java b/client/src/main/java/client/utils/LocaleManager.java index f3c388b..edf342a 100644 --- a/client/src/main/java/client/utils/LocaleManager.java +++ b/client/src/main/java/client/utils/LocaleManager.java @@ -25,18 +25,22 @@ public class LocaleManager { currentBundle.set(bundle); } + @SuppressWarnings("unused") public void setLocale(Locale locale) { currentLocale.set(locale); } + @SuppressWarnings("unused") public Locale getLocale() { return currentLocale.get(); } + @SuppressWarnings("unused") public ResourceBundle getBundle() { return currentBundle.get(); } + @SuppressWarnings("unused") public ObjectProperty getBundleProperty() { return currentBundle; } diff --git a/client/src/main/resources/locale/lang_pl.properties b/client/src/main/resources/locale/lang_pl.properties index 2d0274e..10076de 100644 --- a/client/src/main/resources/locale/lang_pl.properties +++ b/client/src/main/resources/locale/lang_pl.properties @@ -1,6 +1,6 @@ add.ingredient.title=Dodaj składnik add.recipe.title=Utwórz przepis -add.step.title=Dodaj instrukcje +add.step.title=Dodaj instrukcję add.ingredient.label=Składnik add.recipe.label=Nazwa przepisu diff --git a/client/src/test/java/client/scenes/MainCtrlTest.java b/client/src/test/java/client/scenes/MainCtrlTest.java index 7b4fb9f..0ed8ffd 100644 --- a/client/src/test/java/client/scenes/MainCtrlTest.java +++ b/client/src/test/java/client/scenes/MainCtrlTest.java @@ -15,6 +15,7 @@ */ package client.scenes; +import client.utils.LocaleManager; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; @@ -24,7 +25,7 @@ public class MainCtrlTest { @BeforeEach public void setup() { - sut = new MainCtrl(); + sut = new MainCtrl(new LocaleManager()); } @Test