From 45c7e0c231e9be4d9822297726ebc35604c7dcc3 Mon Sep 17 00:00:00 2001 From: yushijinhun Date: Sun, 29 Jul 2018 12:16:16 +0800 Subject: [PATCH 01/10] Remove Settings.save() --- .../java/org/jackhuang/hmcl/setting/ConfigHolder.java | 9 +++++---- .../java/org/jackhuang/hmcl/setting/Settings.java | 11 ++--------- 2 files changed, 7 insertions(+), 13 deletions(-) diff --git a/HMCL/src/main/java/org/jackhuang/hmcl/setting/ConfigHolder.java b/HMCL/src/main/java/org/jackhuang/hmcl/setting/ConfigHolder.java index c07bf7ec6..59e199874 100644 --- a/HMCL/src/main/java/org/jackhuang/hmcl/setting/ConfigHolder.java +++ b/HMCL/src/main/java/org/jackhuang/hmcl/setting/ConfigHolder.java @@ -38,7 +38,7 @@ public final class ConfigHolder { public static final Path CONFIG_PATH = Paths.get(CONFIG_FILENAME).toAbsolutePath(); public static final Config CONFIG = initSettings(); - private static Config upgradeSettings(Config deserialized, Map rawJson) { + private static Config upgradeSettings(Config deserialized, Map rawJson) { if (!rawJson.containsKey("commonDirType")) deserialized.setCommonDirType(deserialized.getCommonDirectory().equals(Settings.getDefaultCommonDirectory()) ? EnumCommonDirectory.DEFAULT : EnumCommonDirectory.CUSTOM); return deserialized; @@ -49,7 +49,7 @@ public final class ConfigHolder { if (Files.exists(CONFIG_PATH)) { try { String json = new String(Files.readAllBytes(CONFIG_PATH), UTF_8); - Map raw = new Gson().fromJson(json, Map.class); + Map raw = new Gson().fromJson(json, Map.class); Config deserialized = Config.fromJson(json); if (deserialized == null) { LOG.finer("Settings file is empty, use the default settings."); @@ -64,9 +64,10 @@ public final class ConfigHolder { return config; } - static void saveConfig(Config config) { + static void saveConfig() { + LOG.info("Saving config"); try { - Files.write(CONFIG_PATH, config.toJson().getBytes(UTF_8)); + Files.write(CONFIG_PATH, CONFIG.toJson().getBytes(UTF_8)); } catch (IOException ex) { LOG.log(Level.SEVERE, "Failed to save config", ex); } diff --git a/HMCL/src/main/java/org/jackhuang/hmcl/setting/Settings.java b/HMCL/src/main/java/org/jackhuang/hmcl/setting/Settings.java index a59c95b62..c6130c656 100644 --- a/HMCL/src/main/java/org/jackhuang/hmcl/setting/Settings.java +++ b/HMCL/src/main/java/org/jackhuang/hmcl/setting/Settings.java @@ -27,12 +27,10 @@ import org.jackhuang.hmcl.task.Schedulers; import org.jackhuang.hmcl.util.*; import org.jackhuang.hmcl.util.i18n.Locales; -import java.io.File; import java.util.*; import java.util.stream.Collectors; import static org.jackhuang.hmcl.setting.ConfigHolder.CONFIG; -import static org.jackhuang.hmcl.util.Logging.LOG; public class Settings { @@ -51,18 +49,13 @@ public class Settings { for (Map.Entry profileEntry : getProfileMap().entrySet()) { profileEntry.getValue().setName(profileEntry.getKey()); profileEntry.getValue().nameProperty().setChangedListener(this::profileNameChanged); - profileEntry.getValue().addPropertyChangedListener(e -> save()); + profileEntry.getValue().addPropertyChangedListener(e -> ConfigHolder.saveConfig()); } - CONFIG.addListener(source -> save()); + CONFIG.addListener(source -> ConfigHolder.saveConfig()); CONFIG.setFirstLaunch(false); } - private void save() { - LOG.info("Saving config"); - ConfigHolder.saveConfig(CONFIG); - } - public boolean isFirstLaunch() { return firstLaunch; } From 82a62e73c16e6df0f43712c7176cdbcc7c0bbc35 Mon Sep 17 00:00:00 2001 From: yushijinhun Date: Sun, 29 Jul 2018 12:21:30 +0800 Subject: [PATCH 02/10] Replace CONFIG with config() --- .../hmcl/game/HMCLGameDownloadTask.java | 2 +- .../hmcl/game/HMCLGameRepository.java | 2 +- .../org/jackhuang/hmcl/setting/Accounts.java | 20 ++++----- .../jackhuang/hmcl/setting/ConfigHolder.java | 11 ++++- .../jackhuang/hmcl/setting/ProxyManager.java | 24 +++++----- .../org/jackhuang/hmcl/setting/Settings.java | 44 +++++++++---------- .../org/jackhuang/hmcl/setting/Theme.java | 4 +- .../hmcl/setting/VersionSetting.java | 10 ++--- .../org/jackhuang/hmcl/ui/AddAccountPane.java | 4 +- .../hmcl/ui/AddAuthlibInjectorServerPane.java | 6 +-- .../hmcl/ui/AuthlibInjectorServersPage.java | 6 +-- .../org/jackhuang/hmcl/ui/Controllers.java | 4 +- .../java/org/jackhuang/hmcl/ui/Decorator.java | 10 ++--- .../java/org/jackhuang/hmcl/ui/LogWindow.java | 4 +- .../org/jackhuang/hmcl/ui/SettingsPage.java | 32 +++++++------- .../java/org/jackhuang/hmcl/ui/WebStage.java | 4 +- .../hmcl/ui/export/ExportWizardProvider.java | 12 ++--- 17 files changed, 103 insertions(+), 96 deletions(-) diff --git a/HMCL/src/main/java/org/jackhuang/hmcl/game/HMCLGameDownloadTask.java b/HMCL/src/main/java/org/jackhuang/hmcl/game/HMCLGameDownloadTask.java index 33935476b..18e31d4ad 100644 --- a/HMCL/src/main/java/org/jackhuang/hmcl/game/HMCLGameDownloadTask.java +++ b/HMCL/src/main/java/org/jackhuang/hmcl/game/HMCLGameDownloadTask.java @@ -33,7 +33,7 @@ import java.util.List; import java.util.Optional; import java.util.logging.Level; -import static org.jackhuang.hmcl.setting.ConfigHolder.CONFIG; +import static org.jackhuang.hmcl.setting.ConfigHolder.config; /** * @author huangyuhui diff --git a/HMCL/src/main/java/org/jackhuang/hmcl/game/HMCLGameRepository.java b/HMCL/src/main/java/org/jackhuang/hmcl/game/HMCLGameRepository.java index c2a3717c9..8155fff0f 100644 --- a/HMCL/src/main/java/org/jackhuang/hmcl/game/HMCLGameRepository.java +++ b/HMCL/src/main/java/org/jackhuang/hmcl/game/HMCLGameRepository.java @@ -34,7 +34,7 @@ import java.io.IOException; import java.util.*; import java.util.logging.Level; -import static org.jackhuang.hmcl.setting.ConfigHolder.CONFIG; +import static org.jackhuang.hmcl.setting.ConfigHolder.config; public class HMCLGameRepository extends DefaultGameRepository { private final Profile profile; diff --git a/HMCL/src/main/java/org/jackhuang/hmcl/setting/Accounts.java b/HMCL/src/main/java/org/jackhuang/hmcl/setting/Accounts.java index 17e6a6551..44a58ce80 100644 --- a/HMCL/src/main/java/org/jackhuang/hmcl/setting/Accounts.java +++ b/HMCL/src/main/java/org/jackhuang/hmcl/setting/Accounts.java @@ -44,7 +44,7 @@ import java.util.logging.Level; import static java.util.stream.Collectors.toList; import static javafx.collections.FXCollections.observableArrayList; -import static org.jackhuang.hmcl.setting.ConfigHolder.CONFIG; +import static org.jackhuang.hmcl.setting.ConfigHolder.config; import static org.jackhuang.hmcl.ui.FXUtils.onInvalidating; import static org.jackhuang.hmcl.util.Lang.mapOf; import static org.jackhuang.hmcl.util.Logging.LOG; @@ -125,7 +125,7 @@ public final class Accounts { // selection is valid, store it if (!initialized) return; - CONFIG.setSelectedAccount(selected == null ? "" : accountId(selected)); + config().setSelectedAccount(selected == null ? "" : accountId(selected)); } }; @@ -144,7 +144,7 @@ public final class Accounts { if (!initialized) return; // update storage - CONFIG.getAccountStorages().setAll( + config().getAccountStorages().setAll( accounts.stream() .map(account -> { Map storage = account.toStorage(); @@ -155,14 +155,14 @@ public final class Accounts { } /** - * Called when it's ready to load accounts from {@link ConfigHolder#CONFIG}. + * Called when it's ready to load accounts from {@link ConfigHolder#config()}. */ static void init() { if (initialized) throw new IllegalStateException("Already initialized"); // load accounts - CONFIG.getAccountStorages().forEach(storage -> { + config().getAccountStorages().forEach(storage -> { AccountFactory factory = type2factory.get(storage.get("type")); if (factory == null) { LOG.warning("Unrecognized account type: " + storage); @@ -180,12 +180,12 @@ public final class Accounts { initialized = true; - CONFIG.getAuthlibInjectorServers().addListener(onInvalidating(Accounts::removeDanglingAuthlibInjectorAccounts)); + config().getAuthlibInjectorServers().addListener(onInvalidating(Accounts::removeDanglingAuthlibInjectorAccounts)); // load selected account selectedAccount.set( accounts.stream() - .filter(it -> accountId(it).equals(CONFIG.getSelectedAccount())) + .filter(it -> accountId(it).equals(config().getSelectedAccount())) .findFirst() .orElse(null)); } @@ -212,7 +212,7 @@ public final class Accounts { // ==== authlib-injector ==== private static AuthlibInjectorServer getOrCreateAuthlibInjectorServer(String url) { - return CONFIG.getAuthlibInjectorServers().stream() + return config().getAuthlibInjectorServers().stream() .filter(server -> url.equals(server.getUrl())) .findFirst() .orElseGet(() -> { @@ -226,7 +226,7 @@ public final class Accounts { LOG.log(Level.WARNING, "Failed to migrate authlib injector server " + url, e); } - CONFIG.getAuthlibInjectorServers().add(server); + config().getAuthlibInjectorServers().add(server); return server; }); } @@ -239,7 +239,7 @@ public final class Accounts { accounts.stream() .filter(AuthlibInjectorAccount.class::isInstance) .map(AuthlibInjectorAccount.class::cast) - .filter(it -> !CONFIG.getAuthlibInjectorServers().contains(it.getServer())) + .filter(it -> !config().getAuthlibInjectorServers().contains(it.getServer())) .collect(toList()) .forEach(accounts::remove); } diff --git a/HMCL/src/main/java/org/jackhuang/hmcl/setting/ConfigHolder.java b/HMCL/src/main/java/org/jackhuang/hmcl/setting/ConfigHolder.java index 59e199874..5837af89d 100644 --- a/HMCL/src/main/java/org/jackhuang/hmcl/setting/ConfigHolder.java +++ b/HMCL/src/main/java/org/jackhuang/hmcl/setting/ConfigHolder.java @@ -36,7 +36,14 @@ public final class ConfigHolder { public static final String CONFIG_FILENAME = "hmcl.json"; public static final Path CONFIG_PATH = Paths.get(CONFIG_FILENAME).toAbsolutePath(); - public static final Config CONFIG = initSettings(); + private static Config configInstance = initSettings(); + + public static Config config() { + if (configInstance == null) { + throw new IllegalStateException("Configuration hasn't been loaded"); + } + return configInstance; + } private static Config upgradeSettings(Config deserialized, Map rawJson) { if (!rawJson.containsKey("commonDirType")) @@ -67,7 +74,7 @@ public final class ConfigHolder { static void saveConfig() { LOG.info("Saving config"); try { - Files.write(CONFIG_PATH, CONFIG.toJson().getBytes(UTF_8)); + Files.write(CONFIG_PATH, configInstance.toJson().getBytes(UTF_8)); } catch (IOException ex) { LOG.log(Level.SEVERE, "Failed to save config", ex); } diff --git a/HMCL/src/main/java/org/jackhuang/hmcl/setting/ProxyManager.java b/HMCL/src/main/java/org/jackhuang/hmcl/setting/ProxyManager.java index b856bd4ca..0cababf5f 100644 --- a/HMCL/src/main/java/org/jackhuang/hmcl/setting/ProxyManager.java +++ b/HMCL/src/main/java/org/jackhuang/hmcl/setting/ProxyManager.java @@ -17,7 +17,7 @@ */ package org.jackhuang.hmcl.setting; -import static org.jackhuang.hmcl.setting.ConfigHolder.CONFIG; +import static org.jackhuang.hmcl.setting.ConfigHolder.config; import java.net.Authenticator; import java.net.InetSocketAddress; @@ -38,18 +38,18 @@ public final class ProxyManager { private static ObjectBinding proxyProperty = Bindings.createObjectBinding( () -> { - String host = CONFIG.getProxyHost(); - Integer port = Lang.toIntOrNull(CONFIG.getProxyPort()); - if (!CONFIG.hasProxy() || StringUtils.isBlank(host) || port == null || CONFIG.getProxyType() == Proxy.Type.DIRECT) { + String host = config().getProxyHost(); + Integer port = Lang.toIntOrNull(config().getProxyPort()); + if (!config().hasProxy() || StringUtils.isBlank(host) || port == null || config().getProxyType() == Proxy.Type.DIRECT) { return Proxy.NO_PROXY; } else { - return new Proxy(CONFIG.getProxyType(), new InetSocketAddress(host, port)); + return new Proxy(config().getProxyType(), new InetSocketAddress(host, port)); } }, - CONFIG.proxyTypeProperty(), - CONFIG.proxyHostProperty(), - CONFIG.proxyPortProperty(), - CONFIG.hasProxyProperty()); + config().proxyTypeProperty(), + config().proxyHostProperty(), + config().proxyPortProperty(), + config().hasProxyProperty()); public static Proxy getProxy() { return proxyProperty.get(); @@ -68,9 +68,9 @@ public final class ProxyManager { @Override protected PasswordAuthentication getPasswordAuthentication() { - if (CONFIG.hasProxyAuth()) { - String username = CONFIG.getProxyUser(); - String password = CONFIG.getProxyPass(); + if (config().hasProxyAuth()) { + String username = config().getProxyUser(); + String password = config().getProxyPass(); if (username != null && password != null) { return new PasswordAuthentication(username, password.toCharArray()); } diff --git a/HMCL/src/main/java/org/jackhuang/hmcl/setting/Settings.java b/HMCL/src/main/java/org/jackhuang/hmcl/setting/Settings.java index c6130c656..d79581ddc 100644 --- a/HMCL/src/main/java/org/jackhuang/hmcl/setting/Settings.java +++ b/HMCL/src/main/java/org/jackhuang/hmcl/setting/Settings.java @@ -30,7 +30,7 @@ import org.jackhuang.hmcl.util.i18n.Locales; import java.util.*; import java.util.stream.Collectors; -import static org.jackhuang.hmcl.setting.ConfigHolder.CONFIG; +import static org.jackhuang.hmcl.setting.ConfigHolder.config; public class Settings { @@ -39,7 +39,7 @@ public class Settings { private final boolean firstLaunch; private Settings() { - firstLaunch = CONFIG.isFirstLaunch(); + firstLaunch = config().isFirstLaunch(); ProxyManager.init(); Accounts.init(); @@ -52,15 +52,15 @@ public class Settings { profileEntry.getValue().addPropertyChangedListener(e -> ConfigHolder.saveConfig()); } - CONFIG.addListener(source -> ConfigHolder.saveConfig()); - CONFIG.setFirstLaunch(false); + config().addListener(source -> ConfigHolder.saveConfig()); + config().setFirstLaunch(false); } public boolean isFirstLaunch() { return firstLaunch; } - private Locales.SupportedLocale locale = Locales.getLocaleByName(CONFIG.getLocalization()); + private Locales.SupportedLocale locale = Locales.getLocaleByName(config().getLocalization()); public Locales.SupportedLocale getLocale() { return locale; @@ -68,28 +68,28 @@ public class Settings { public void setLocale(Locales.SupportedLocale locale) { this.locale = locale; - CONFIG.setLocalization(Locales.getNameByLocale(locale)); + config().setLocalization(Locales.getNameByLocale(locale)); } public Font getFont() { - return Font.font(CONFIG.getFontFamily(), CONFIG.getFontSize()); + return Font.font(config().getFontFamily(), config().getFontSize()); } public void setFont(Font font) { - CONFIG.setFontFamily(font.getFamily()); - CONFIG.setFontSize(font.getSize()); + config().setFontFamily(font.getFamily()); + config().setFontSize(font.getSize()); } public int getLogLines() { - return Math.max(CONFIG.getLogLines(), 100); + return Math.max(config().getLogLines(), 100); } public void setLogLines(int logLines) { - CONFIG.setLogLines(logLines); + config().setLogLines(logLines); } public boolean isCommonDirectoryDisabled() { - return CONFIG.getCommonDirType() == EnumCommonDirectory.DISABLED; + return config().getCommonDirType() == EnumCommonDirectory.DISABLED; } public static String getDefaultCommonDirectory() { @@ -97,13 +97,13 @@ public class Settings { } public String getCommonDirectory() { - switch (CONFIG.getCommonDirType()) { + switch (config().getCommonDirType()) { case DISABLED: return null; case DEFAULT: return getDefaultCommonDirectory(); case CUSTOM: - return CONFIG.getCommonDirectory(); + return config().getCommonDirectory(); default: return null; } @@ -114,14 +114,14 @@ public class Settings { ****************************************/ public DownloadProvider getDownloadProvider() { - return DownloadProviders.getDownloadProvider(CONFIG.getDownloadType()); + return DownloadProviders.getDownloadProvider(config().getDownloadType()); } public void setDownloadProvider(DownloadProvider downloadProvider) { int index = DownloadProviders.DOWNLOAD_PROVIDERS.indexOf(downloadProvider); if (index == -1) throw new IllegalArgumentException("Unknown download provider: " + downloadProvider); - CONFIG.setDownloadType(index); + config().setDownloadType(index); } /**************************************** @@ -131,18 +131,18 @@ public class Settings { public Profile getSelectedProfile() { checkProfileMap(); - if (!hasProfile(CONFIG.getSelectedProfile())) { + if (!hasProfile(config().getSelectedProfile())) { getProfileMap().keySet().stream().findFirst().ifPresent(selectedProfile -> { - CONFIG.setSelectedProfile(selectedProfile); + config().setSelectedProfile(selectedProfile); }); Schedulers.computation().schedule(this::onProfileChanged); } - return getProfile(CONFIG.getSelectedProfile()); + return getProfile(config().getSelectedProfile()); } public void setSelectedProfile(Profile selectedProfile) { - if (hasProfile(selectedProfile.getName()) && !Objects.equals(selectedProfile.getName(), CONFIG.getSelectedProfile())) { - CONFIG.setSelectedProfile(selectedProfile.getName()); + if (hasProfile(selectedProfile.getName()) && !Objects.equals(selectedProfile.getName(), config().getSelectedProfile())) { + config().setSelectedProfile(selectedProfile.getName()); Schedulers.computation().schedule(this::onProfileChanged); } } @@ -159,7 +159,7 @@ public class Settings { } public Map getProfileMap() { - return CONFIG.getConfigurations(); + return config().getConfigurations(); } public Collection getProfiles() { diff --git a/HMCL/src/main/java/org/jackhuang/hmcl/setting/Theme.java b/HMCL/src/main/java/org/jackhuang/hmcl/setting/Theme.java index d3ee6ba6d..5aea647a6 100644 --- a/HMCL/src/main/java/org/jackhuang/hmcl/setting/Theme.java +++ b/HMCL/src/main/java/org/jackhuang/hmcl/setting/Theme.java @@ -27,7 +27,7 @@ import org.jackhuang.hmcl.util.Logging; import com.google.gson.stream.JsonReader; import com.google.gson.stream.JsonWriter; -import static org.jackhuang.hmcl.setting.ConfigHolder.CONFIG; +import static org.jackhuang.hmcl.setting.ConfigHolder.config; import java.io.File; import java.io.IOException; @@ -120,7 +120,7 @@ public class Theme { } public static ObjectBinding foregroundFillBinding() { - return Bindings.createObjectBinding(() -> CONFIG.getTheme().getForegroundColor(), CONFIG.themeProperty()); + return Bindings.createObjectBinding(() -> config().getTheme().getForegroundColor(), config().themeProperty()); } public static ObjectBinding blackFillBinding() { diff --git a/HMCL/src/main/java/org/jackhuang/hmcl/setting/VersionSetting.java b/HMCL/src/main/java/org/jackhuang/hmcl/setting/VersionSetting.java index 761dce2bf..061639a6e 100644 --- a/HMCL/src/main/java/org/jackhuang/hmcl/setting/VersionSetting.java +++ b/HMCL/src/main/java/org/jackhuang/hmcl/setting/VersionSetting.java @@ -30,7 +30,7 @@ import java.util.List; import java.util.Optional; import java.util.stream.Collectors; -import static org.jackhuang.hmcl.setting.ConfigHolder.CONFIG; +import static org.jackhuang.hmcl.setting.ConfigHolder.config; /** * @@ -515,10 +515,10 @@ public final class VersionSetting { .setFullscreen(isFullscreen()) .setServerIp(getServerIp()) .setWrapper(getWrapper()) - .setProxyHost(CONFIG.getProxyHost()) - .setProxyPort(CONFIG.getProxyPort()) - .setProxyUser(CONFIG.getProxyUser()) - .setProxyPass(CONFIG.getProxyPass()) + .setProxyHost(config().getProxyHost()) + .setProxyPort(config().getProxyPort()) + .setProxyUser(config().getProxyUser()) + .setProxyPass(config().getProxyPass()) .setPrecalledCommand(getPreLaunchCommand()) .setNoGeneratedJVMArgs(isNoJVMArgs()) .create(); diff --git a/HMCL/src/main/java/org/jackhuang/hmcl/ui/AddAccountPane.java b/HMCL/src/main/java/org/jackhuang/hmcl/ui/AddAccountPane.java index c6f4775bf..ab2bbf599 100644 --- a/HMCL/src/main/java/org/jackhuang/hmcl/ui/AddAccountPane.java +++ b/HMCL/src/main/java/org/jackhuang/hmcl/ui/AddAccountPane.java @@ -54,7 +54,7 @@ import java.util.concurrent.CountDownLatch; import java.util.logging.Level; import static java.util.Objects.requireNonNull; -import static org.jackhuang.hmcl.setting.ConfigHolder.CONFIG; +import static org.jackhuang.hmcl.setting.ConfigHolder.config; import static org.jackhuang.hmcl.ui.FXUtils.jfxListCellFactory; import static org.jackhuang.hmcl.ui.FXUtils.onInvalidating; import static org.jackhuang.hmcl.ui.FXUtils.stringConverter; @@ -79,7 +79,7 @@ public class AddAccountPane extends StackPane { cboServers.setCellFactory(jfxListCellFactory(server -> new TwoLineListItem(server.getName(), server.getUrl()))); cboServers.setConverter(stringConverter(AuthlibInjectorServer::getName)); - Bindings.bindContent(cboServers.getItems(), CONFIG.getAuthlibInjectorServers()); + Bindings.bindContent(cboServers.getItems(), config().getAuthlibInjectorServers()); cboServers.getItems().addListener(onInvalidating(this::selectDefaultServer)); selectDefaultServer(); diff --git a/HMCL/src/main/java/org/jackhuang/hmcl/ui/AddAuthlibInjectorServerPane.java b/HMCL/src/main/java/org/jackhuang/hmcl/ui/AddAuthlibInjectorServerPane.java index 2fbf48b94..61dd9d52d 100644 --- a/HMCL/src/main/java/org/jackhuang/hmcl/ui/AddAuthlibInjectorServerPane.java +++ b/HMCL/src/main/java/org/jackhuang/hmcl/ui/AddAuthlibInjectorServerPane.java @@ -39,7 +39,7 @@ import javafx.fxml.FXML; import javafx.scene.control.Label; import javafx.scene.layout.StackPane; -import static org.jackhuang.hmcl.setting.ConfigHolder.CONFIG; +import static org.jackhuang.hmcl.setting.ConfigHolder.config; public class AddAuthlibInjectorServerPane extends StackPane { @@ -133,8 +133,8 @@ public class AddAuthlibInjectorServerPane extends StackPane { @FXML private void onAddFinish() { - if (!CONFIG.getAuthlibInjectorServers().contains(serverBeingAdded)) { - CONFIG.getAuthlibInjectorServers().add(serverBeingAdded); + if (!config().getAuthlibInjectorServers().contains(serverBeingAdded)) { + config().getAuthlibInjectorServers().add(serverBeingAdded); } fireEvent(new DialogCloseEvent()); } diff --git a/HMCL/src/main/java/org/jackhuang/hmcl/ui/AuthlibInjectorServersPage.java b/HMCL/src/main/java/org/jackhuang/hmcl/ui/AuthlibInjectorServersPage.java index 96efa7727..02e02ad30 100644 --- a/HMCL/src/main/java/org/jackhuang/hmcl/ui/AuthlibInjectorServersPage.java +++ b/HMCL/src/main/java/org/jackhuang/hmcl/ui/AuthlibInjectorServersPage.java @@ -34,7 +34,7 @@ import javafx.scene.control.ScrollPane; import javafx.scene.layout.StackPane; import javafx.scene.layout.VBox; -import static org.jackhuang.hmcl.setting.ConfigHolder.CONFIG; +import static org.jackhuang.hmcl.setting.ConfigHolder.config; public class AuthlibInjectorServersPage extends StackPane implements DecoratorPage { private final StringProperty title = new SimpleStringProperty(this, "title", i18n("account.injector.manage.title")); @@ -49,13 +49,13 @@ public class AuthlibInjectorServersPage extends StackPane implements DecoratorPa loadFXML(this, "/assets/fxml/authlib-injector-servers.fxml"); smoothScrolling(scrollPane); - serverItems = MappedObservableList.create(CONFIG.getAuthlibInjectorServers(), this::createServerItem); + serverItems = MappedObservableList.create(config().getAuthlibInjectorServers(), this::createServerItem); Bindings.bindContent(listPane.getChildren(), serverItems); } private AuthlibInjectorServerItem createServerItem(AuthlibInjectorServer server) { return new AuthlibInjectorServerItem(server, - item -> CONFIG.getAuthlibInjectorServers().remove(item.getServer())); + item -> config().getAuthlibInjectorServers().remove(item.getServer())); } @FXML diff --git a/HMCL/src/main/java/org/jackhuang/hmcl/ui/Controllers.java b/HMCL/src/main/java/org/jackhuang/hmcl/ui/Controllers.java index e2abc47d5..63495c4b0 100644 --- a/HMCL/src/main/java/org/jackhuang/hmcl/ui/Controllers.java +++ b/HMCL/src/main/java/org/jackhuang/hmcl/ui/Controllers.java @@ -34,7 +34,7 @@ import org.jackhuang.hmcl.ui.construct.TaskExecutorDialogPane; import org.jackhuang.hmcl.util.FutureCallback; import org.jackhuang.hmcl.util.JavaVersion; -import static org.jackhuang.hmcl.setting.ConfigHolder.CONFIG; +import static org.jackhuang.hmcl.setting.ConfigHolder.config; import java.util.function.Consumer; @@ -108,7 +108,7 @@ public final class Controllers { decorator.setCustomMaximize(false); scene = new Scene(decorator, 804, 521); - scene.getStylesheets().setAll(CONFIG.getTheme().getStylesheets()); + scene.getStylesheets().setAll(config().getTheme().getStylesheets()); stage.setMinWidth(804); stage.setMaxWidth(804); stage.setMinHeight(521); diff --git a/HMCL/src/main/java/org/jackhuang/hmcl/ui/Decorator.java b/HMCL/src/main/java/org/jackhuang/hmcl/ui/Decorator.java index 5acc657cc..c2bbb588e 100644 --- a/HMCL/src/main/java/org/jackhuang/hmcl/ui/Decorator.java +++ b/HMCL/src/main/java/org/jackhuang/hmcl/ui/Decorator.java @@ -81,7 +81,7 @@ import java.util.concurrent.ConcurrentLinkedQueue; import java.util.logging.Level; import static java.util.stream.Collectors.toList; -import static org.jackhuang.hmcl.setting.ConfigHolder.CONFIG; +import static org.jackhuang.hmcl.setting.ConfigHolder.config; import static org.jackhuang.hmcl.util.Logging.LOG; public final class Decorator extends StackPane implements TaskExecutorDialogWizardDisplayer { @@ -228,8 +228,8 @@ public final class Decorator extends StackPane implements TaskExecutorDialogWiza Bindings.createObjectBinding( () -> { Image image = null; - if (CONFIG.getBackgroundImageType() == EnumBackgroundImage.CUSTOM && CONFIG.getBackgroundImage() != null) { - image = tryLoadImage(Paths.get(CONFIG.getBackgroundImage())) + if (config().getBackgroundImageType() == EnumBackgroundImage.CUSTOM && config().getBackgroundImage() != null) { + image = tryLoadImage(Paths.get(config().getBackgroundImage())) .orElse(null); } if (image == null) { @@ -237,8 +237,8 @@ public final class Decorator extends StackPane implements TaskExecutorDialogWiza } return new Background(new BackgroundImage(image, BackgroundRepeat.NO_REPEAT, BackgroundRepeat.NO_REPEAT, BackgroundPosition.DEFAULT, new BackgroundSize(800, 480, false, false, true, true))); }, - CONFIG.backgroundImageTypeProperty(), - CONFIG.backgroundImageProperty())); + config().backgroundImageTypeProperty(), + config().backgroundImageProperty())); } private Image defaultBackground = new Image("/assets/img/background.jpg"); diff --git a/HMCL/src/main/java/org/jackhuang/hmcl/ui/LogWindow.java b/HMCL/src/main/java/org/jackhuang/hmcl/ui/LogWindow.java index 4cc24c1b2..f7925e0d0 100644 --- a/HMCL/src/main/java/org/jackhuang/hmcl/ui/LogWindow.java +++ b/HMCL/src/main/java/org/jackhuang/hmcl/ui/LogWindow.java @@ -43,7 +43,7 @@ import org.w3c.dom.Document; import org.w3c.dom.Element; import org.w3c.dom.Node; -import static org.jackhuang.hmcl.setting.ConfigHolder.CONFIG; +import static org.jackhuang.hmcl.setting.ConfigHolder.config; import static org.jackhuang.hmcl.util.i18n.I18n.i18n; import java.util.concurrent.CountDownLatch; @@ -65,7 +65,7 @@ public final class LogWindow extends Stage { public LogWindow() { setScene(new Scene(impl, 800, 480)); - getScene().getStylesheets().addAll(CONFIG.getTheme().getStylesheets()); + getScene().getStylesheets().addAll(config().getTheme().getStylesheets()); setTitle(i18n("logwindow.title")); getIcons().add(new Image("/assets/img/icon.png")); } diff --git a/HMCL/src/main/java/org/jackhuang/hmcl/ui/SettingsPage.java b/HMCL/src/main/java/org/jackhuang/hmcl/ui/SettingsPage.java index 8ff2a3d94..b87710ca9 100644 --- a/HMCL/src/main/java/org/jackhuang/hmcl/ui/SettingsPage.java +++ b/HMCL/src/main/java/org/jackhuang/hmcl/ui/SettingsPage.java @@ -47,7 +47,7 @@ import org.jackhuang.hmcl.ui.wizard.DecoratorPage; import org.jackhuang.hmcl.util.Lang; import org.jackhuang.hmcl.util.i18n.Locales; -import static org.jackhuang.hmcl.setting.ConfigHolder.CONFIG; +import static org.jackhuang.hmcl.setting.ConfigHolder.config; import static org.jackhuang.hmcl.util.i18n.I18n.i18n; import java.net.Proxy; @@ -142,16 +142,16 @@ public final class SettingsPage extends StackPane implements DecoratorPage { cboLanguage.getSelectionModel().selectedIndexProperty().addListener((a, b, newValue) -> Settings.INSTANCE.setLocale(Locales.getLocale(newValue.intValue()))); // ==== Proxy ==== - txtProxyHost.textProperty().bindBidirectional(CONFIG.proxyHostProperty()); - txtProxyPort.textProperty().bindBidirectional(CONFIG.proxyPortProperty()); - txtProxyUsername.textProperty().bindBidirectional(CONFIG.proxyUserProperty()); - txtProxyPassword.textProperty().bindBidirectional(CONFIG.proxyPassProperty()); + txtProxyHost.textProperty().bindBidirectional(config().proxyHostProperty()); + txtProxyPort.textProperty().bindBidirectional(config().proxyPortProperty()); + txtProxyUsername.textProperty().bindBidirectional(config().proxyUserProperty()); + txtProxyPassword.textProperty().bindBidirectional(config().proxyPassProperty()); proxyPane.disableProperty().bind(chkEnableProxy.selectedProperty().not()); authPane.disableProperty().bind(chkProxyAuthentication.selectedProperty().not()); - chkEnableProxy.selectedProperty().bindBidirectional(CONFIG.hasProxyProperty()); - chkProxyAuthentication.selectedProperty().bindBidirectional(CONFIG.hasProxyAuthProperty()); + chkEnableProxy.selectedProperty().bindBidirectional(config().hasProxyProperty()); + chkProxyAuthentication.selectedProperty().bindBidirectional(config().hasProxyAuthProperty()); selectedProxyType = new SimpleObjectProperty(Proxy.Type.HTTP) { { @@ -169,7 +169,7 @@ public final class SettingsPage extends StackPane implements DecoratorPage { } } }; - selectedProxyType.bindBidirectional(CONFIG.proxyTypeProperty()); + selectedProxyType.bindBidirectional(config().proxyTypeProperty()); ToggleGroup proxyConfigurationGroup = new ToggleGroup(); chkProxyHttp.setUserData(Proxy.Type.HTTP); @@ -188,12 +188,12 @@ public final class SettingsPage extends StackPane implements DecoratorPage { fileCommonLocation.createChildren(i18n("launcher.common_directory.disabled"), EnumCommonDirectory.DISABLED), fileCommonLocation.createChildren(i18n("launcher.common_directory.default"), EnumCommonDirectory.DEFAULT) ), EnumCommonDirectory.CUSTOM); - fileCommonLocation.selectedDataProperty().bindBidirectional(CONFIG.commonDirTypeProperty()); - fileCommonLocation.customTextProperty().bindBidirectional(CONFIG.commonDirectoryProperty()); + fileCommonLocation.selectedDataProperty().bindBidirectional(config().commonDirTypeProperty()); + fileCommonLocation.customTextProperty().bindBidirectional(config().commonDirectoryProperty()); fileCommonLocation.subtitleProperty().bind( Bindings.createObjectBinding(() -> Optional.ofNullable(Settings.INSTANCE.getCommonDirectory()) .orElse(i18n("launcher.common_directory.disabled")), - CONFIG.commonDirectoryProperty(), CONFIG.commonDirTypeProperty())); + config().commonDirectoryProperty(), config().commonDirTypeProperty())); FXUtils.installTooltip(btnUpdate, i18n("update.tooltip")); checkUpdate(); @@ -202,22 +202,22 @@ public final class SettingsPage extends StackPane implements DecoratorPage { backgroundItem.loadChildren(Collections.singletonList( backgroundItem.createChildren(i18n("launcher.background.default"), EnumBackgroundImage.DEFAULT) ), EnumBackgroundImage.CUSTOM); - backgroundItem.customTextProperty().bindBidirectional(CONFIG.backgroundImageProperty()); - backgroundItem.selectedDataProperty().bindBidirectional(CONFIG.backgroundImageTypeProperty()); + backgroundItem.customTextProperty().bindBidirectional(config().backgroundImageProperty()); + backgroundItem.selectedDataProperty().bindBidirectional(config().backgroundImageTypeProperty()); backgroundItem.subtitleProperty().bind( new When(backgroundItem.selectedDataProperty().isEqualTo(EnumBackgroundImage.DEFAULT)) .then(i18n("launcher.background.default")) - .otherwise(CONFIG.backgroundImageProperty())); + .otherwise(config().backgroundImageProperty())); // ==== // ==== Theme ==== - JFXColorPicker picker = new JFXColorPicker(Color.web(CONFIG.getTheme().getColor()), null); + JFXColorPicker picker = new JFXColorPicker(Color.web(config().getTheme().getColor()), null); picker.setCustomColorText(i18n("color.custom")); picker.setRecentColorsText(i18n("color.recent")); picker.getCustomColors().setAll(Theme.SUGGESTED_COLORS); picker.setOnAction(e -> { Theme theme = Theme.custom(Theme.getColorDisplayName(picker.getValue())); - CONFIG.setTheme(theme); + config().setTheme(theme); Controllers.getScene().getStylesheets().setAll(theme.getStylesheets()); }); themeColorPickerContainer.getChildren().setAll(picker); diff --git a/HMCL/src/main/java/org/jackhuang/hmcl/ui/WebStage.java b/HMCL/src/main/java/org/jackhuang/hmcl/ui/WebStage.java index 3d9217fb3..46b05493a 100644 --- a/HMCL/src/main/java/org/jackhuang/hmcl/ui/WebStage.java +++ b/HMCL/src/main/java/org/jackhuang/hmcl/ui/WebStage.java @@ -22,14 +22,14 @@ import javafx.scene.image.Image; import javafx.scene.web.WebView; import javafx.stage.Stage; -import static org.jackhuang.hmcl.setting.ConfigHolder.CONFIG; +import static org.jackhuang.hmcl.setting.ConfigHolder.config; public class WebStage extends Stage { private final WebView webView = new WebView(); public WebStage() { setScene(new Scene(webView, 800, 480)); - getScene().getStylesheets().addAll(CONFIG.getTheme().getStylesheets()); + getScene().getStylesheets().addAll(config().getTheme().getStylesheets()); getIcons().add(new Image("/assets/img/icon.png")); } diff --git a/HMCL/src/main/java/org/jackhuang/hmcl/ui/export/ExportWizardProvider.java b/HMCL/src/main/java/org/jackhuang/hmcl/ui/export/ExportWizardProvider.java index 713d4431b..f495340a6 100644 --- a/HMCL/src/main/java/org/jackhuang/hmcl/ui/export/ExportWizardProvider.java +++ b/HMCL/src/main/java/org/jackhuang/hmcl/ui/export/ExportWizardProvider.java @@ -37,7 +37,7 @@ import java.util.Collections; import java.util.List; import java.util.Map; -import static org.jackhuang.hmcl.setting.ConfigHolder.CONFIG; +import static org.jackhuang.hmcl.setting.ConfigHolder.config; public final class ExportWizardProvider implements WizardProvider { private final Profile profile; @@ -83,11 +83,11 @@ public final class ExportWizardProvider implements WizardProvider { try (ZipEngine zip = new ZipEngine(modpackFile)) { Config exported = new Config(); - exported.setBackgroundImageType(CONFIG.getBackgroundImageType()); - exported.setBackgroundImage(CONFIG.getBackgroundImage()); - exported.setTheme(CONFIG.getTheme()); - exported.setDownloadType(CONFIG.getDownloadType()); - exported.getAuthlibInjectorServers().setAll(CONFIG.getAuthlibInjectorServers()); + exported.setBackgroundImageType(config().getBackgroundImageType()); + exported.setBackgroundImage(config().getBackgroundImage()); + exported.setTheme(config().getTheme()); + exported.setDownloadType(config().getDownloadType()); + exported.getAuthlibInjectorServers().setAll(config().getAuthlibInjectorServers()); zip.putTextFile(exported.toJson(), ConfigHolder.CONFIG_FILENAME); zip.putFile(tempModpack, "modpack.zip"); From d549a300ab588f0d3532695dc31b67f1d6d626c4 Mon Sep 17 00:00:00 2001 From: yushijinhun Date: Sun, 29 Jul 2018 12:51:16 +0800 Subject: [PATCH 03/10] Replace Settings.INSTANCE with Settings.instance() --- .../hmcl/game/HMCLGameDownloadTask.java | 2 +- .../hmcl/game/HMCLGameRepository.java | 8 +++--- .../jackhuang/hmcl/game/LauncherHelper.java | 2 +- .../org/jackhuang/hmcl/setting/Accounts.java | 2 +- .../org/jackhuang/hmcl/setting/Profile.java | 2 +- .../org/jackhuang/hmcl/setting/Settings.java | 6 ++++- .../org/jackhuang/hmcl/ui/Controllers.java | 2 +- .../java/org/jackhuang/hmcl/ui/Decorator.java | 2 +- .../jackhuang/hmcl/ui/LeftPaneController.java | 4 +-- .../java/org/jackhuang/hmcl/ui/LogWindow.java | 10 +++---- .../java/org/jackhuang/hmcl/ui/MainPage.java | 2 +- .../org/jackhuang/hmcl/ui/ProfilePage.java | 6 ++--- .../org/jackhuang/hmcl/ui/SettingsPage.java | 26 +++++++++---------- .../ui/download/DownloadWizardProvider.java | 2 +- .../org/jackhuang/hmcl/util/i18n/I18n.java | 2 +- 15 files changed, 41 insertions(+), 37 deletions(-) diff --git a/HMCL/src/main/java/org/jackhuang/hmcl/game/HMCLGameDownloadTask.java b/HMCL/src/main/java/org/jackhuang/hmcl/game/HMCLGameDownloadTask.java index 18e31d4ad..e1e15a72d 100644 --- a/HMCL/src/main/java/org/jackhuang/hmcl/game/HMCLGameDownloadTask.java +++ b/HMCL/src/main/java/org/jackhuang/hmcl/game/HMCLGameDownloadTask.java @@ -63,7 +63,7 @@ public class HMCLGameDownloadTask extends Task { // Force using common directory will not affect the behaviour that repository acts // Since we always copy the downloaded jar to .minecraft/versions// - File cache = new File(Optional.ofNullable(Settings.INSTANCE.getCommonDirectory()) + File cache = new File(Optional.ofNullable(Settings.instance().getCommonDirectory()) .orElse(Settings.getDefaultCommonDirectory()), "jars/" + gameVersion + ".jar"); if (cache.exists()) diff --git a/HMCL/src/main/java/org/jackhuang/hmcl/game/HMCLGameRepository.java b/HMCL/src/main/java/org/jackhuang/hmcl/game/HMCLGameRepository.java index 8155fff0f..0033ae6bd 100644 --- a/HMCL/src/main/java/org/jackhuang/hmcl/game/HMCLGameRepository.java +++ b/HMCL/src/main/java/org/jackhuang/hmcl/game/HMCLGameRepository.java @@ -58,10 +58,10 @@ public class HMCLGameRepository extends DefaultGameRepository { @Override public File getAssetDirectory(String version, String assetId) { - if (Settings.INSTANCE.isCommonDirectoryDisabled() || useSelf(assetId)) + if (Settings.instance().isCommonDirectoryDisabled() || useSelf(assetId)) return super.getAssetDirectory(version, assetId); else - return new File(Settings.INSTANCE.getCommonDirectory(), "assets"); + return new File(Settings.instance().getCommonDirectory(), "assets"); } @Override @@ -83,10 +83,10 @@ public class HMCLGameRepository extends DefaultGameRepository { public File getLibraryFile(Version version, Library lib) { VersionSetting vs = profile.getVersionSetting(version.getId()); File self = super.getLibraryFile(version, lib); - if (Settings.INSTANCE.isCommonDirectoryDisabled() || self.exists()) + if (Settings.instance().isCommonDirectoryDisabled() || self.exists()) return self; else - return new File(Settings.INSTANCE.getCommonDirectory(), "libraries/" + lib.getPath()); + return new File(Settings.instance().getCommonDirectory(), "libraries/" + lib.getPath()); } diff --git a/HMCL/src/main/java/org/jackhuang/hmcl/game/LauncherHelper.java b/HMCL/src/main/java/org/jackhuang/hmcl/game/LauncherHelper.java index e17bd7823..d36cc3d0e 100644 --- a/HMCL/src/main/java/org/jackhuang/hmcl/game/LauncherHelper.java +++ b/HMCL/src/main/java/org/jackhuang/hmcl/game/LauncherHelper.java @@ -378,7 +378,7 @@ public final class LauncherHelper { System.out.print(log); logs.add(pair(log, level)); - if (logs.size() > Settings.INSTANCE.getLogLines()) + if (logs.size() > Settings.instance().getLogLines()) logs.removeFirst(); if (setting.isShowLogs()) { diff --git a/HMCL/src/main/java/org/jackhuang/hmcl/setting/Accounts.java b/HMCL/src/main/java/org/jackhuang/hmcl/setting/Accounts.java index 44a58ce80..5ac018d9c 100644 --- a/HMCL/src/main/java/org/jackhuang/hmcl/setting/Accounts.java +++ b/HMCL/src/main/java/org/jackhuang/hmcl/setting/Accounts.java @@ -60,7 +60,7 @@ public final class Accounts { public static final OfflineAccountFactory FACTORY_OFFLINE = OfflineAccountFactory.INSTANCE; public static final YggdrasilAccountFactory FACTORY_YGGDRASIL = new YggdrasilAccountFactory(MojangYggdrasilProvider.INSTANCE); public static final AuthlibInjectorAccountFactory FACTORY_AUTHLIB_INJECTOR = new AuthlibInjectorAccountFactory( - new AuthlibInjectorDownloader(Launcher.HMCL_DIRECTORY.toPath(), () -> Settings.INSTANCE.getDownloadProvider())::getArtifactInfo, + new AuthlibInjectorDownloader(Launcher.HMCL_DIRECTORY.toPath(), () -> Settings.instance().getDownloadProvider())::getArtifactInfo, Accounts::getOrCreateAuthlibInjectorServer); private static final String TYPE_OFFLINE = "offline"; diff --git a/HMCL/src/main/java/org/jackhuang/hmcl/setting/Profile.java b/HMCL/src/main/java/org/jackhuang/hmcl/setting/Profile.java index e6b134098..ffff683cd 100644 --- a/HMCL/src/main/java/org/jackhuang/hmcl/setting/Profile.java +++ b/HMCL/src/main/java/org/jackhuang/hmcl/setting/Profile.java @@ -122,7 +122,7 @@ public final class Profile { } public HMCLDependencyManager getDependency() { - return new HMCLDependencyManager(this, Settings.INSTANCE.getDownloadProvider()); + return new HMCLDependencyManager(this, Settings.instance().getDownloadProvider()); } public VersionSetting getVersionSetting(String id) { diff --git a/HMCL/src/main/java/org/jackhuang/hmcl/setting/Settings.java b/HMCL/src/main/java/org/jackhuang/hmcl/setting/Settings.java index d79581ddc..fd21827b7 100644 --- a/HMCL/src/main/java/org/jackhuang/hmcl/setting/Settings.java +++ b/HMCL/src/main/java/org/jackhuang/hmcl/setting/Settings.java @@ -34,7 +34,11 @@ import static org.jackhuang.hmcl.setting.ConfigHolder.config; public class Settings { - public static final Settings INSTANCE = new Settings(); + private static Settings instance = new Settings(); + + public static Settings instance() { + return instance; + } private final boolean firstLaunch; diff --git a/HMCL/src/main/java/org/jackhuang/hmcl/ui/Controllers.java b/HMCL/src/main/java/org/jackhuang/hmcl/ui/Controllers.java index 63495c4b0..99fb168ba 100644 --- a/HMCL/src/main/java/org/jackhuang/hmcl/ui/Controllers.java +++ b/HMCL/src/main/java/org/jackhuang/hmcl/ui/Controllers.java @@ -102,7 +102,7 @@ public final class Controllers { decorator.showPage(null); leftPaneController = new LeftPaneController(decorator.getLeftPane()); - Settings.INSTANCE.onProfileLoading(); + Settings.instance().onProfileLoading(); Task.of(JavaVersion::initialize).start(); decorator.setCustomMaximize(false); diff --git a/HMCL/src/main/java/org/jackhuang/hmcl/ui/Decorator.java b/HMCL/src/main/java/org/jackhuang/hmcl/ui/Decorator.java index c2bbb588e..519cd8f90 100644 --- a/HMCL/src/main/java/org/jackhuang/hmcl/ui/Decorator.java +++ b/HMCL/src/main/java/org/jackhuang/hmcl/ui/Decorator.java @@ -200,7 +200,7 @@ public final class Decorator extends StackPane implements TaskExecutorDialogWiza ); nowAnimation.play(); }); - if (!Settings.INSTANCE.isFirstLaunch() || Settings.INSTANCE.getLocale().getLocale() != Locale.CHINA) + if (!Settings.instance().isFirstLaunch() || Settings.instance().getLocale().getLocale() != Locale.CHINA) drawerWrapper.getChildren().remove(welcomeView); if (!min) buttonsContainer.getChildren().remove(btnMin); diff --git a/HMCL/src/main/java/org/jackhuang/hmcl/ui/LeftPaneController.java b/HMCL/src/main/java/org/jackhuang/hmcl/ui/LeftPaneController.java index 06d0beb70..343041dd1 100644 --- a/HMCL/src/main/java/org/jackhuang/hmcl/ui/LeftPaneController.java +++ b/HMCL/src/main/java/org/jackhuang/hmcl/ui/LeftPaneController.java @@ -216,11 +216,11 @@ public final class LeftPaneController { private void onProfilesLoading() { LinkedList list = new LinkedList<>(); - for (Profile profile : Settings.INSTANCE.getProfiles()) { + for (Profile profile : Settings.instance().getProfiles()) { VersionListItem item = new VersionListItem(Profiles.getProfileDisplayName(profile)); RipplerContainer ripplerContainer = new RipplerContainer(item); item.setOnSettingsButtonClicked(e -> Controllers.getDecorator().showPage(new ProfilePage(profile))); - ripplerContainer.setOnMouseClicked(e -> Settings.INSTANCE.setSelectedProfile(profile)); + ripplerContainer.setOnMouseClicked(e -> Settings.instance().setSelectedProfile(profile)); ripplerContainer.getProperties().put("profile", profile.getName()); ripplerContainer.maxWidthProperty().bind(leftPane.widthProperty()); list.add(ripplerContainer); diff --git a/HMCL/src/main/java/org/jackhuang/hmcl/ui/LogWindow.java b/HMCL/src/main/java/org/jackhuang/hmcl/ui/LogWindow.java index f7925e0d0..ac835799d 100644 --- a/HMCL/src/main/java/org/jackhuang/hmcl/ui/LogWindow.java +++ b/HMCL/src/main/java/org/jackhuang/hmcl/ui/LogWindow.java @@ -177,12 +177,12 @@ public final class LogWindow extends Stage { engine = webView.getEngine(); engine.loadContent(Lang.ignoringException(() -> IOUtils.readFullyAsString(getClass().getResourceAsStream("/assets/log-window-content.html"))) - .replace("${FONT}", Settings.INSTANCE.getFont().getSize() + "px \"" + Settings.INSTANCE.getFont().getFamily() + "\"")); + .replace("${FONT}", Settings.instance().getFont().getSize() + "px \"" + Settings.instance().getFont().getFamily() + "\"")); engine.getLoadWorker().stateProperty().addListener((a, b, newValue) -> { if (newValue == Worker.State.SUCCEEDED) { document = engine.getDocument(); body = document.getElementsByTagName("body").item(0); - engine.executeScript("limitedLogs=" + Settings.INSTANCE.getLogLines()); + engine.executeScript("limitedLogs=" + Settings.instance().getLogLines()); latch.countDown(); onDone.fireEvent(new Event(LogWindow.this)); } @@ -190,14 +190,14 @@ public final class LogWindow extends Stage { boolean flag = false; for (String i : cboLines.getItems()) - if (Integer.toString(Settings.INSTANCE.getLogLines()).equals(i)) { + if (Integer.toString(Settings.instance().getLogLines()).equals(i)) { cboLines.getSelectionModel().select(i); flag = true; } cboLines.getSelectionModel().selectedItemProperty().addListener((a, b, newValue) -> { - Settings.INSTANCE.setLogLines(newValue == null ? 100 : Integer.parseInt(newValue)); - engine.executeScript("limitedLogs=" + Settings.INSTANCE.getLogLines()); + Settings.instance().setLogLines(newValue == null ? 100 : Integer.parseInt(newValue)); + engine.executeScript("limitedLogs=" + Settings.instance().getLogLines()); }); if (!flag) diff --git a/HMCL/src/main/java/org/jackhuang/hmcl/ui/MainPage.java b/HMCL/src/main/java/org/jackhuang/hmcl/ui/MainPage.java index 8c973a6f8..1acbd7a67 100644 --- a/HMCL/src/main/java/org/jackhuang/hmcl/ui/MainPage.java +++ b/HMCL/src/main/java/org/jackhuang/hmcl/ui/MainPage.java @@ -101,7 +101,7 @@ public final class MainPage extends StackPane implements DecoratorPage { btnAdd.setOnMouseClicked(e -> Controllers.getDecorator().startWizard(new DownloadWizardProvider(), i18n("install"))); FXUtils.installTooltip(btnAdd, i18n("install")); - btnRefresh.setOnMouseClicked(e -> Settings.INSTANCE.getSelectedProfile().getRepository().refreshVersionsAsync().start()); + btnRefresh.setOnMouseClicked(e -> Settings.instance().getSelectedProfile().getRepository().refreshVersionsAsync().start()); FXUtils.installTooltip(btnRefresh, i18n("button.refresh")); } diff --git a/HMCL/src/main/java/org/jackhuang/hmcl/ui/ProfilePage.java b/HMCL/src/main/java/org/jackhuang/hmcl/ui/ProfilePage.java index deface84d..c50b96c08 100644 --- a/HMCL/src/main/java/org/jackhuang/hmcl/ui/ProfilePage.java +++ b/HMCL/src/main/java/org/jackhuang/hmcl/ui/ProfilePage.java @@ -80,7 +80,7 @@ public final class ProfilePage extends StackPane implements DecoratorPage { @FXML private void onDelete() { if (profile != null) { - Settings.INSTANCE.deleteProfile(profile); + Settings.instance().deleteProfile(profile); Controllers.navigate(null); } } @@ -99,10 +99,10 @@ public final class ProfilePage extends StackPane implements DecoratorPage { } Profile newProfile = new Profile(txtProfileName.getText(), new File(getLocation())); newProfile.setUseRelativePath(toggleUseRelativePath.isSelected()); - Settings.INSTANCE.putProfile(newProfile); + Settings.instance().putProfile(newProfile); } - Settings.INSTANCE.onProfileLoading(); + Settings.instance().onProfileLoading(); Controllers.navigate(null); } diff --git a/HMCL/src/main/java/org/jackhuang/hmcl/ui/SettingsPage.java b/HMCL/src/main/java/org/jackhuang/hmcl/ui/SettingsPage.java index b87710ca9..7a4411a54 100644 --- a/HMCL/src/main/java/org/jackhuang/hmcl/ui/SettingsPage.java +++ b/HMCL/src/main/java/org/jackhuang/hmcl/ui/SettingsPage.java @@ -111,35 +111,35 @@ public final class SettingsPage extends StackPane implements DecoratorPage { FXUtils.smoothScrolling(scroll); - cboDownloadSource.getSelectionModel().select(DownloadProviders.DOWNLOAD_PROVIDERS.indexOf(Settings.INSTANCE.getDownloadProvider())); - cboDownloadSource.getSelectionModel().selectedIndexProperty().addListener((a, b, newValue) -> Settings.INSTANCE.setDownloadProvider(DownloadProviders.getDownloadProvider(newValue.intValue()))); + cboDownloadSource.getSelectionModel().select(DownloadProviders.DOWNLOAD_PROVIDERS.indexOf(Settings.instance().getDownloadProvider())); + cboDownloadSource.getSelectionModel().selectedIndexProperty().addListener((a, b, newValue) -> Settings.instance().setDownloadProvider(DownloadProviders.getDownloadProvider(newValue.intValue()))); - cboFont.getSelectionModel().select(Settings.INSTANCE.getFont().getFamily()); + cboFont.getSelectionModel().select(Settings.instance().getFont().getFamily()); cboFont.valueProperty().addListener((a, b, newValue) -> { - Font font = Font.font(newValue, Settings.INSTANCE.getFont().getSize()); - Settings.INSTANCE.setFont(font); + Font font = Font.font(newValue, Settings.instance().getFont().getSize()); + Settings.instance().setFont(font); lblDisplay.setStyle("-fx-font: " + font.getSize() + " \"" + font.getFamily() + "\";"); }); - txtFontSize.setText(Double.toString(Settings.INSTANCE.getFont().getSize())); + txtFontSize.setText(Double.toString(Settings.instance().getFont().getSize())); txtFontSize.getValidators().add(new Validator(it -> Lang.toDoubleOrNull(it) != null)); txtFontSize.textProperty().addListener((a, b, newValue) -> { if (txtFontSize.validate()) { - Font font = Font.font(Settings.INSTANCE.getFont().getFamily(), Double.parseDouble(newValue)); - Settings.INSTANCE.setFont(font); + Font font = Font.font(Settings.instance().getFont().getFamily(), Double.parseDouble(newValue)); + Settings.instance().setFont(font); lblDisplay.setStyle("-fx-font: " + font.getSize() + " \"" + font.getFamily() + "\";"); } }); - lblDisplay.setStyle("-fx-font: " + Settings.INSTANCE.getFont().getSize() + " \"" + Settings.INSTANCE.getFont().getFamily() + "\";"); + lblDisplay.setStyle("-fx-font: " + Settings.instance().getFont().getSize() + " \"" + Settings.instance().getFont().getFamily() + "\";"); ObservableList