Changed bundled resources to use static base name instead.

Added options menu with selectable language
This commit is contained in:
lieght
2025-10-03 03:19:38 +02:00
parent 1dd345a290
commit 547ea55300
13 changed files with 228 additions and 33 deletions

View File

@@ -8,7 +8,7 @@ import java.util.Locale;
public final class CreditsMenu extends Menu {
private Locale currentLocale = AppContext.getLocale();
private LocalizationAsset loc = ResourceManager.get("localization.properties");
private LocalizationAsset loc = ResourceManager.get("localization_en_us.properties");
public CreditsMenu() {
}
}

View File

@@ -1,14 +1,84 @@
package org.toop.app.menu;
import javafx.geometry.Pos;
import javafx.scene.control.Button;
import javafx.scene.control.ChoiceBox;
import javafx.scene.control.Label;
import javafx.scene.layout.Region;
import javafx.scene.layout.StackPane;
import javafx.scene.layout.VBox;
import org.toop.app.App;
import org.toop.framework.asset.ResourceManager;
import org.toop.framework.asset.resources.LocalizationAsset;
import org.toop.local.AppContext;
import java.awt.GraphicsDevice;
import java.awt.GraphicsEnvironment;
import java.util.Locale;
public final class OptionsMenu extends Menu {
private Locale currentLocale = AppContext.getLocale();
private LocalizationAsset loc = ResourceManager.get("localization.properties");
private LocalizationAsset loc = ResourceManager.get("localization");
public OptionsMenu() {
}
final Region background = createBackground();
GraphicsDevice currentScreen = GraphicsEnvironment.getLocalGraphicsEnvironment().getScreenDevices()[0];
LocalizationAsset locFiles = ResourceManager.get(LocalizationAsset.class, "localization");
final Label selectLanguageLabel = new Label(loc.getString("optionsMenuLabelSelectLanguage", currentLocale));
final ChoiceBox<Locale> selectLanguage = new ChoiceBox<>();
selectLanguage.setValue(currentLocale);
for (Locale locFile : locFiles.getAvailableLocales()) {
selectLanguage.getItems().add(locFile);
}
selectLanguage.setOnAction((event) -> {
Locale selectedLocale = selectLanguage.getSelectionModel().getSelectedItem();
AppContext.setLocale(selectedLocale);
App.pop();
App.push(new OptionsMenu());
});
// GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment();
// GraphicsDevice[] devices = ge.getScreenDevices();
// final ChoiceBox<GraphicsDevice> selectScreen = new ChoiceBox<>();
// for (GraphicsDevice screen : devices) {
// selectScreen.getItems().add(screen);
// }
//
// selectScreen.setOnAction((event) -> {
// int selectedIndex = selectScreen.getSelectionModel().getSelectedIndex();
// Object selectedItem = selectScreen.getSelectionModel().getSelectedItem();
//
// System.out.println("Selection made: [" + selectedIndex + "] " + selectedItem);
// System.out.println(" ChoiceBox.getValue(): " + selectScreen.getValue());
// });
//
// final ChoiceBox<DisplayMode> selectWindowSize = new ChoiceBox<>();
// for (DisplayMode displayMode : currentScreen.getDisplayModes()) {
// selectWindowSize.getItems().add(displayMode);
// }
//
//// if (currentScreen.isFullScreenSupported()) {}
// final CheckBox setFullscreen = new CheckBox("Fullscreen");
final VBox optionsBox = new VBox(10, selectLanguageLabel, selectLanguage);
optionsBox.setAlignment(Pos.CENTER);
optionsBox.setPickOnBounds(false);
optionsBox.setTranslateY(50);
optionsBox.setTranslateX(25);
final Button credits = createButton("Credits", () -> { App.push(new CreditsMenu()); });
final Button options = createButton("Exit Options", () -> { App.push(new MainMenu()); });
final Button quit = createButton("Quit", () -> { App.quitPopup(); });
final VBox controlBox = new VBox(10, credits, options, quit);
controlBox.setAlignment(Pos.BOTTOM_LEFT);
controlBox.setPickOnBounds(false);
controlBox.setTranslateY(-50);
controlBox.setTranslateX(25);
pane = new StackPane(background, optionsBox, controlBox);
}
}

View File

@@ -5,9 +5,14 @@ import java.util.Locale;
public class AppContext {
private static Locale currentLocale = Locale.getDefault();
public static void setLocale(Locale locale) {
currentLocale = locale;
}
public static void setCurrentLocale(Locale locale) {
currentLocale = locale;
}
public static Locale getLocale() {
return currentLocale;
}

View File

@@ -14,4 +14,7 @@ mainMenuSelectQuit=Beenden
# Quit Menu text and buttons
quitMenuTextSure=Bist du sicher?
quitMenuButtonYes=Ja
quitMenuButtonNo=Nein
quitMenuButtonNo=Nein
# Options menu
optionsMenuLabelSelectLanguage=Sprache:

View File

@@ -2,8 +2,8 @@
windowTitle=ISY Games Selector
# Main Menu buttons
mainMenuSelectTicTacToe=Tic Tac Toe\u5426
mainMenuSelectReversi=Reversi\u5426
mainMenuSelectTicTacToe=Tic Tac Toe
mainMenuSelectReversi=Reversi
mainMenuSelectSudoku=Sudoku
mainMenuSelectBattleship=Battleship
mainMenuSelectOther=Other
@@ -14,4 +14,7 @@ mainMenuSelectQuit=Quit
# Quit Menu text and buttons
quitMenuTextSure=Are you sure?
quitMenuButtonYes=Yes
quitMenuButtonNo=No
quitMenuButtonNo=No
# Options menu
optionsMenuLabelSelectLanguage=Language:

View File

@@ -14,4 +14,7 @@ mainMenuSelectQuit=Salir
# Quit Menu text and buttons
quitMenuTextSure=\u00BFEst\u00E1s seguro?
quitMenuButtonYes=S\u00ED
quitMenuButtonNo=No
quitMenuButtonNo=No
# Options menu
optionsMenuLabelSelectLanguage=Idioma:

View File

@@ -14,4 +14,7 @@ mainMenuSelectQuit=Quitter
# Quit Menu text and buttons
quitMenuTextSure=\u00CAtes-vous s\u00FBr?
quitMenuButtonYes=Oui
quitMenuButtonNo=Non
quitMenuButtonNo=Non
# Options menu
optionsMenuLabelSelectLanguage=Langue:

View File

@@ -14,4 +14,7 @@ mainMenuSelectQuit=Esci
# Quit Menu text and buttons
quitMenuTextSure=Sei sicuro?
quitMenuButtonYes=S\u00EC
quitMenuButtonNo=No
quitMenuButtonNo=No
# Options menu
optionsMenuLabelSelectLanguage=Lingua:

View File

@@ -14,4 +14,7 @@ mainMenuSelectQuit=Afsluiten
# Quit Menu text and buttons
quitMenuTextSure=Weet je het zeker?
quitMenuButtonYes=Ja
quitMenuButtonNo=Nee
quitMenuButtonNo=Nee
# Options menu
optionsMenuLabelSelectLanguage=Taal:

View File

@@ -27,4 +27,7 @@ quitMenuTextSure=\u4F60\u786E\u5B9A\u5417\uFF1F
quitMenuButtonYes=\u662F
# ?
quitMenuButtonNo=\u5426
# ?
# ?
# Options menu
optionsMenuLabelSelectLanguage=\u8BED\u8A00: