From 652e0c3058b1846796dfe7985c5fe03e6411c9ee Mon Sep 17 00:00:00 2001 From: Bixilon Date: Mon, 7 Sep 2020 19:27:37 +0200 Subject: [PATCH] wip settings --- .../bixilon/minosoft/gui/main/GUITools.java | 3 ++ .../bixilon/minosoft/gui/main/MainWindow.java | 13 +++++ .../minosoft/gui/main/SettingsWindow.java | 49 +++++++++++++++++++ .../java/de/bixilon/minosoft/logging/Log.java | 1 + src/main/resources/layout/main.fxml | 2 +- src/main/resources/layout/settings.fxml | 35 +++++++++++++ 6 files changed, 102 insertions(+), 1 deletion(-) create mode 100644 src/main/java/de/bixilon/minosoft/gui/main/SettingsWindow.java create mode 100644 src/main/resources/layout/settings.fxml diff --git a/src/main/java/de/bixilon/minosoft/gui/main/GUITools.java b/src/main/java/de/bixilon/minosoft/gui/main/GUITools.java index b0ab91101..e5c0b37d7 100644 --- a/src/main/java/de/bixilon/minosoft/gui/main/GUITools.java +++ b/src/main/java/de/bixilon/minosoft/gui/main/GUITools.java @@ -14,18 +14,21 @@ package de.bixilon.minosoft.gui.main; import de.bixilon.minosoft.game.datatypes.objectLoader.versions.Version; +import de.bixilon.minosoft.logging.LogLevels; import javafx.collections.FXCollections; import javafx.collections.ObservableList; import javafx.scene.control.ComboBox; import javafx.scene.image.Image; import java.io.ByteArrayInputStream; +import java.util.Arrays; import java.util.Base64; public class GUITools { public final static Image logo = new Image(GUITools.class.getResourceAsStream("/icons/windowIcon.png")); public final static ObservableList versions = FXCollections.observableArrayList(); public final static ComboBox versionList = new ComboBox<>(GUITools.versions); + public final static ObservableList logLevels = FXCollections.observableList(Arrays.asList(LogLevels.values().clone())); public static Image getImageFromBase64(String base64) { if (base64 == null) { diff --git a/src/main/java/de/bixilon/minosoft/gui/main/MainWindow.java b/src/main/java/de/bixilon/minosoft/gui/main/MainWindow.java index 54d725afb..90dd48af8 100644 --- a/src/main/java/de/bixilon/minosoft/gui/main/MainWindow.java +++ b/src/main/java/de/bixilon/minosoft/gui/main/MainWindow.java @@ -147,4 +147,17 @@ public class MainWindow implements Initializable { public void manageAccounts(ActionEvent actionEvent) { manageAccounts(); } + + public void openSettings() { + try { + Parent parent = FXMLLoader.load(MainWindow.class.getResource("/layout/settings.fxml")); + Stage stage = new Stage(); + stage.initModality(Modality.APPLICATION_MODAL); + stage.setTitle("Settings - Minosoft"); + stage.setScene(new Scene(parent)); + stage.show(); + } catch (IOException e) { + e.printStackTrace(); + } + } } diff --git a/src/main/java/de/bixilon/minosoft/gui/main/SettingsWindow.java b/src/main/java/de/bixilon/minosoft/gui/main/SettingsWindow.java new file mode 100644 index 000000000..bd382f45f --- /dev/null +++ b/src/main/java/de/bixilon/minosoft/gui/main/SettingsWindow.java @@ -0,0 +1,49 @@ +/* + * Codename Minosoft + * Copyright (C) 2020 Moritz Zwerger + * + * This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along with this program. If not, see . + * + * This software is not affiliated with Mojang AB, the original developer of Minecraft. + */ + +package de.bixilon.minosoft.gui.main; + +import de.bixilon.minosoft.Config; +import de.bixilon.minosoft.Minosoft; +import de.bixilon.minosoft.config.GameConfiguration; +import de.bixilon.minosoft.logging.Log; +import de.bixilon.minosoft.logging.LogLevels; +import javafx.fxml.FXML; +import javafx.fxml.Initializable; +import javafx.scene.control.ComboBox; +import javafx.scene.layout.GridPane; + +import java.net.URL; +import java.util.ResourceBundle; + +public class SettingsWindow implements Initializable { + @FXML + public GridPane tabGeneral; + @FXML + public ComboBox generalLogLevel; + + @Override + public void initialize(URL url, ResourceBundle resourceBundle) { + generalLogLevel.setItems(GUITools.logLevels); + generalLogLevel.getSelectionModel().select(Log.getLevel()); + generalLogLevel.setOnAction((actionEvent -> { + LogLevels newLevel = generalLogLevel.getValue(); + if (Log.getLevel() == newLevel) { + return; + } + Log.setLevel(newLevel); + Minosoft.getConfig().putString(GameConfiguration.GENERAL_LOG_LEVEL, newLevel.name()); + Minosoft.getConfig().saveToFile(Config.configFileName); + })); + } +} diff --git a/src/main/java/de/bixilon/minosoft/logging/Log.java b/src/main/java/de/bixilon/minosoft/logging/Log.java index 082955c91..13c0216a9 100644 --- a/src/main/java/de/bixilon/minosoft/logging/Log.java +++ b/src/main/java/de/bixilon/minosoft/logging/Log.java @@ -145,6 +145,7 @@ public class Log { } public static void setLevel(LogLevels level) { + Log.info(String.format("Log level changed from %s to %s", Log.level, level)); Log.level = level; } } diff --git a/src/main/resources/layout/main.fxml b/src/main/resources/layout/main.fxml index ba6f64fd8..860cba009 100644 --- a/src/main/resources/layout/main.fxml +++ b/src/main/resources/layout/main.fxml @@ -7,7 +7,7 @@ fx:controller="de.bixilon.minosoft.gui.main.MainWindow"> - + diff --git a/src/main/resources/layout/settings.fxml b/src/main/resources/layout/settings.fxml new file mode 100644 index 000000000..aa9033be8 --- /dev/null +++ b/src/main/resources/layout/settings.fxml @@ -0,0 +1,35 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +