From e9b816fb87e4bc2115e5528c18706275752c11cc Mon Sep 17 00:00:00 2001 From: yushijinhun Date: Sun, 18 Feb 2018 15:15:28 +0800 Subject: [PATCH 01/12] Change Lang.EMPTY_CONSUMER to emptyConsumer() --- .../org/jackhuang/hmcl/util/ImmediateBooleanProperty.java | 2 +- .../org/jackhuang/hmcl/util/ImmediateDoubleProperty.java | 2 +- .../org/jackhuang/hmcl/util/ImmediateIntegerProperty.java | 2 +- .../org/jackhuang/hmcl/util/ImmediateObjectProperty.java | 2 +- HMCLCore/src/main/java/org/jackhuang/hmcl/util/Lang.java | 5 +++-- 5 files changed, 7 insertions(+), 6 deletions(-) diff --git a/HMCLCore/src/main/java/org/jackhuang/hmcl/util/ImmediateBooleanProperty.java b/HMCLCore/src/main/java/org/jackhuang/hmcl/util/ImmediateBooleanProperty.java index af637d310..63b6edf85 100644 --- a/HMCLCore/src/main/java/org/jackhuang/hmcl/util/ImmediateBooleanProperty.java +++ b/HMCLCore/src/main/java/org/jackhuang/hmcl/util/ImmediateBooleanProperty.java @@ -48,7 +48,7 @@ public class ImmediateBooleanProperty extends SimpleBooleanProperty { super.unbind(); } - private Consumer listener = Lang.EMPTY_CONSUMER; + private Consumer listener = Lang.emptyConsumer(); private final ChangeListener changeListener = (a, b, newValue) -> listener.accept(newValue); public void setChangedListener(Consumer listener) { diff --git a/HMCLCore/src/main/java/org/jackhuang/hmcl/util/ImmediateDoubleProperty.java b/HMCLCore/src/main/java/org/jackhuang/hmcl/util/ImmediateDoubleProperty.java index eb63b057d..2568c7c2f 100644 --- a/HMCLCore/src/main/java/org/jackhuang/hmcl/util/ImmediateDoubleProperty.java +++ b/HMCLCore/src/main/java/org/jackhuang/hmcl/util/ImmediateDoubleProperty.java @@ -49,7 +49,7 @@ public class ImmediateDoubleProperty extends SimpleDoubleProperty { super.unbind(); } - private Consumer listener = Lang.EMPTY_CONSUMER; + private Consumer listener = Lang.emptyConsumer(); private final ChangeListener changeListener = (a, b, newValue) -> listener.accept(newValue.doubleValue()); public void setChangedListener(Consumer listener) { diff --git a/HMCLCore/src/main/java/org/jackhuang/hmcl/util/ImmediateIntegerProperty.java b/HMCLCore/src/main/java/org/jackhuang/hmcl/util/ImmediateIntegerProperty.java index 485c2f0be..2e5d8be18 100644 --- a/HMCLCore/src/main/java/org/jackhuang/hmcl/util/ImmediateIntegerProperty.java +++ b/HMCLCore/src/main/java/org/jackhuang/hmcl/util/ImmediateIntegerProperty.java @@ -48,7 +48,7 @@ public class ImmediateIntegerProperty extends SimpleIntegerProperty { super.unbind(); } - private Consumer listener = Lang.EMPTY_CONSUMER; + private Consumer listener = Lang.emptyConsumer(); private final ChangeListener changeListener = (a, b, newValue) -> listener.accept(newValue.intValue()); public void setChangedListener(Consumer listener) { diff --git a/HMCLCore/src/main/java/org/jackhuang/hmcl/util/ImmediateObjectProperty.java b/HMCLCore/src/main/java/org/jackhuang/hmcl/util/ImmediateObjectProperty.java index 54361523e..8c565cb92 100644 --- a/HMCLCore/src/main/java/org/jackhuang/hmcl/util/ImmediateObjectProperty.java +++ b/HMCLCore/src/main/java/org/jackhuang/hmcl/util/ImmediateObjectProperty.java @@ -48,7 +48,7 @@ public class ImmediateObjectProperty extends SimpleObjectProperty { super.unbind(); } - private Consumer listener = Lang.EMPTY_CONSUMER; + private Consumer listener = Lang.emptyConsumer(); private final ChangeListener changeListener = (a, b, newValue) -> listener.accept(newValue); public void setChangedListener(Consumer listener) { diff --git a/HMCLCore/src/main/java/org/jackhuang/hmcl/util/Lang.java b/HMCLCore/src/main/java/org/jackhuang/hmcl/util/Lang.java index c41211ed9..9ff2e8554 100644 --- a/HMCLCore/src/main/java/org/jackhuang/hmcl/util/Lang.java +++ b/HMCLCore/src/main/java/org/jackhuang/hmcl/util/Lang.java @@ -22,8 +22,9 @@ public final class Lang { private Lang() { } - public static final Consumer EMPTY_CONSUMER = a -> { - }; + public static Consumer emptyConsumer() { + return x -> {}; + } public static T requireJsonNonNull(T obj) throws JsonParseException { return requireJsonNonNull(obj, "Json object cannot be null."); From dcea76bcd334cad93148a9a52ca00df536a5e8ba Mon Sep 17 00:00:00 2001 From: yushijinhun Date: Sun, 18 Feb 2018 15:17:17 +0800 Subject: [PATCH 02/12] Add missing @SafeVarargs in Lang --- HMCLCore/src/main/java/org/jackhuang/hmcl/util/Lang.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/HMCLCore/src/main/java/org/jackhuang/hmcl/util/Lang.java b/HMCLCore/src/main/java/org/jackhuang/hmcl/util/Lang.java index 9ff2e8554..0a44f5562 100644 --- a/HMCLCore/src/main/java/org/jackhuang/hmcl/util/Lang.java +++ b/HMCLCore/src/main/java/org/jackhuang/hmcl/util/Lang.java @@ -36,6 +36,7 @@ public final class Lang { return obj; } + @SafeVarargs public static Map mapOf(Pair... pairs) { HashMap map = new HashMap<>(); for (Pair pair : pairs) @@ -323,6 +324,7 @@ public final class Lang { } } + @SafeVarargs public static T nonNull(T... t) { for (T a : t) if (a != null) return a; return null; From 95f404bb6421e5ea8b727afc49333abe8e4ac1e0 Mon Sep 17 00:00:00 2001 From: yushijinhun Date: Sun, 18 Feb 2018 15:20:00 +0800 Subject: [PATCH 03/12] move emptyConsumer() to Constants --- HMCLCore/src/main/java/org/jackhuang/hmcl/util/Constants.java | 4 ++++ .../org/jackhuang/hmcl/util/ImmediateBooleanProperty.java | 2 +- .../java/org/jackhuang/hmcl/util/ImmediateDoubleProperty.java | 2 +- .../org/jackhuang/hmcl/util/ImmediateIntegerProperty.java | 2 +- .../java/org/jackhuang/hmcl/util/ImmediateObjectProperty.java | 2 +- HMCLCore/src/main/java/org/jackhuang/hmcl/util/Lang.java | 4 ---- 6 files changed, 8 insertions(+), 8 deletions(-) diff --git a/HMCLCore/src/main/java/org/jackhuang/hmcl/util/Constants.java b/HMCLCore/src/main/java/org/jackhuang/hmcl/util/Constants.java index 08ac96a2e..5526708e6 100644 --- a/HMCLCore/src/main/java/org/jackhuang/hmcl/util/Constants.java +++ b/HMCLCore/src/main/java/org/jackhuang/hmcl/util/Constants.java @@ -94,4 +94,8 @@ public final class Constants { public static Predicate falsePredicate() { return s -> false; } + + public static Consumer emptyConsumer() { + return x -> {}; + } } diff --git a/HMCLCore/src/main/java/org/jackhuang/hmcl/util/ImmediateBooleanProperty.java b/HMCLCore/src/main/java/org/jackhuang/hmcl/util/ImmediateBooleanProperty.java index 63b6edf85..54ca83039 100644 --- a/HMCLCore/src/main/java/org/jackhuang/hmcl/util/ImmediateBooleanProperty.java +++ b/HMCLCore/src/main/java/org/jackhuang/hmcl/util/ImmediateBooleanProperty.java @@ -48,7 +48,7 @@ public class ImmediateBooleanProperty extends SimpleBooleanProperty { super.unbind(); } - private Consumer listener = Lang.emptyConsumer(); + private Consumer listener = Constants.emptyConsumer(); private final ChangeListener changeListener = (a, b, newValue) -> listener.accept(newValue); public void setChangedListener(Consumer listener) { diff --git a/HMCLCore/src/main/java/org/jackhuang/hmcl/util/ImmediateDoubleProperty.java b/HMCLCore/src/main/java/org/jackhuang/hmcl/util/ImmediateDoubleProperty.java index 2568c7c2f..f6937c132 100644 --- a/HMCLCore/src/main/java/org/jackhuang/hmcl/util/ImmediateDoubleProperty.java +++ b/HMCLCore/src/main/java/org/jackhuang/hmcl/util/ImmediateDoubleProperty.java @@ -49,7 +49,7 @@ public class ImmediateDoubleProperty extends SimpleDoubleProperty { super.unbind(); } - private Consumer listener = Lang.emptyConsumer(); + private Consumer listener = Constants.emptyConsumer(); private final ChangeListener changeListener = (a, b, newValue) -> listener.accept(newValue.doubleValue()); public void setChangedListener(Consumer listener) { diff --git a/HMCLCore/src/main/java/org/jackhuang/hmcl/util/ImmediateIntegerProperty.java b/HMCLCore/src/main/java/org/jackhuang/hmcl/util/ImmediateIntegerProperty.java index 2e5d8be18..49c4dea81 100644 --- a/HMCLCore/src/main/java/org/jackhuang/hmcl/util/ImmediateIntegerProperty.java +++ b/HMCLCore/src/main/java/org/jackhuang/hmcl/util/ImmediateIntegerProperty.java @@ -48,7 +48,7 @@ public class ImmediateIntegerProperty extends SimpleIntegerProperty { super.unbind(); } - private Consumer listener = Lang.emptyConsumer(); + private Consumer listener = Constants.emptyConsumer(); private final ChangeListener changeListener = (a, b, newValue) -> listener.accept(newValue.intValue()); public void setChangedListener(Consumer listener) { diff --git a/HMCLCore/src/main/java/org/jackhuang/hmcl/util/ImmediateObjectProperty.java b/HMCLCore/src/main/java/org/jackhuang/hmcl/util/ImmediateObjectProperty.java index 8c565cb92..d18f2c559 100644 --- a/HMCLCore/src/main/java/org/jackhuang/hmcl/util/ImmediateObjectProperty.java +++ b/HMCLCore/src/main/java/org/jackhuang/hmcl/util/ImmediateObjectProperty.java @@ -48,7 +48,7 @@ public class ImmediateObjectProperty extends SimpleObjectProperty { super.unbind(); } - private Consumer listener = Lang.emptyConsumer(); + private Consumer listener = Constants.emptyConsumer(); private final ChangeListener changeListener = (a, b, newValue) -> listener.accept(newValue); public void setChangedListener(Consumer listener) { diff --git a/HMCLCore/src/main/java/org/jackhuang/hmcl/util/Lang.java b/HMCLCore/src/main/java/org/jackhuang/hmcl/util/Lang.java index 0a44f5562..96486d321 100644 --- a/HMCLCore/src/main/java/org/jackhuang/hmcl/util/Lang.java +++ b/HMCLCore/src/main/java/org/jackhuang/hmcl/util/Lang.java @@ -22,10 +22,6 @@ public final class Lang { private Lang() { } - public static Consumer emptyConsumer() { - return x -> {}; - } - public static T requireJsonNonNull(T obj) throws JsonParseException { return requireJsonNonNull(obj, "Json object cannot be null."); } From d081a6ee92db02408eb23001a2c952dbb40a9ada Mon Sep 17 00:00:00 2001 From: yushijinhun Date: Sun, 18 Feb 2018 15:28:48 +0800 Subject: [PATCH 04/12] Remove Lang.requireJsonNonNull(), use JsonUtils.fromNonNullJson() instead --- .../jackhuang/hmcl/game/HMCLModpackManager.java | 7 +++---- .../auth/yggdrasil/AuthlibInjectorBuildInfo.java | 5 ++--- .../org/jackhuang/hmcl/mod/CurseManifest.java | 6 ++---- .../java/org/jackhuang/hmcl/util/JsonUtils.java | 15 +++++++++++++++ .../main/java/org/jackhuang/hmcl/util/Lang.java | 12 ------------ 5 files changed, 22 insertions(+), 23 deletions(-) create mode 100644 HMCLCore/src/main/java/org/jackhuang/hmcl/util/JsonUtils.java diff --git a/HMCL/src/main/java/org/jackhuang/hmcl/game/HMCLModpackManager.java b/HMCL/src/main/java/org/jackhuang/hmcl/game/HMCLModpackManager.java index cc4d38111..b247a2c01 100644 --- a/HMCL/src/main/java/org/jackhuang/hmcl/game/HMCLModpackManager.java +++ b/HMCL/src/main/java/org/jackhuang/hmcl/game/HMCLModpackManager.java @@ -20,8 +20,7 @@ package org.jackhuang.hmcl.game; import com.google.gson.JsonParseException; import org.jackhuang.hmcl.mod.Modpack; import org.jackhuang.hmcl.util.CompressingUtils; -import org.jackhuang.hmcl.util.Constants; -import org.jackhuang.hmcl.util.Lang; +import org.jackhuang.hmcl.util.JsonUtils; import org.jackhuang.hmcl.util.StringUtils; import java.io.File; @@ -82,9 +81,9 @@ public final class HMCLModpackManager { */ public static Modpack readHMCLModpackManifest(File file) throws IOException, JsonParseException { String manifestJson = CompressingUtils.readTextZipEntry(file, "modpack.json"); - Modpack manifest = Lang.requireJsonNonNull(Constants.GSON.fromJson(manifestJson, Modpack.class)); + Modpack manifest = JsonUtils.fromNonNullJson(manifestJson, Modpack.class); String gameJson = CompressingUtils.readTextZipEntry(file, "minecraft/pack.json"); - Version game = Lang.requireJsonNonNull(Constants.GSON.fromJson(gameJson, Version.class)); + Version game = JsonUtils.fromNonNullJson(gameJson, Version.class); if (game.getJar() == null) if (StringUtils.isBlank(manifest.getVersion())) throw new JsonParseException("Cannot recognize the game version of modpack " + file + "."); diff --git a/HMCLCore/src/main/java/org/jackhuang/hmcl/auth/yggdrasil/AuthlibInjectorBuildInfo.java b/HMCLCore/src/main/java/org/jackhuang/hmcl/auth/yggdrasil/AuthlibInjectorBuildInfo.java index f27b9650b..0d3ed21f8 100644 --- a/HMCLCore/src/main/java/org/jackhuang/hmcl/auth/yggdrasil/AuthlibInjectorBuildInfo.java +++ b/HMCLCore/src/main/java/org/jackhuang/hmcl/auth/yggdrasil/AuthlibInjectorBuildInfo.java @@ -1,9 +1,8 @@ package org.jackhuang.hmcl.auth.yggdrasil; import com.google.gson.JsonParseException; -import org.jackhuang.hmcl.util.Constants; import org.jackhuang.hmcl.util.Immutable; -import org.jackhuang.hmcl.util.Lang; +import org.jackhuang.hmcl.util.JsonUtils; import org.jackhuang.hmcl.util.NetworkUtils; import java.io.IOException; @@ -36,7 +35,7 @@ public final class AuthlibInjectorBuildInfo { } public static AuthlibInjectorBuildInfo requestBuildInfo(String updateUrl) throws IOException, JsonParseException { - return Lang.requireJsonNonNull(Constants.GSON.fromJson(NetworkUtils.doGet(NetworkUtils.toURL(updateUrl)), AuthlibInjectorBuildInfo.class)); + return JsonUtils.fromNonNullJson(NetworkUtils.doGet(NetworkUtils.toURL(updateUrl)), AuthlibInjectorBuildInfo.class); } public static final String UPDATE_URL = "https://authlib-injector.to2mbn.org/api/buildInfo"; diff --git a/HMCLCore/src/main/java/org/jackhuang/hmcl/mod/CurseManifest.java b/HMCLCore/src/main/java/org/jackhuang/hmcl/mod/CurseManifest.java index 90b9ecab6..1e013dbaf 100644 --- a/HMCLCore/src/main/java/org/jackhuang/hmcl/mod/CurseManifest.java +++ b/HMCLCore/src/main/java/org/jackhuang/hmcl/mod/CurseManifest.java @@ -20,15 +20,13 @@ package org.jackhuang.hmcl.mod; import com.google.gson.JsonParseException; import com.google.gson.annotations.SerializedName; import org.jackhuang.hmcl.util.CompressingUtils; -import org.jackhuang.hmcl.util.Constants; import org.jackhuang.hmcl.util.Immutable; -import org.jackhuang.hmcl.util.Lang; +import org.jackhuang.hmcl.util.JsonUtils; import java.io.File; import java.io.IOException; import java.util.Collections; import java.util.List; -import java.util.Optional; /** * @@ -120,7 +118,7 @@ public final class CurseManifest { */ public static Modpack readCurseForgeModpackManifest(File f) throws IOException, JsonParseException { String json = CompressingUtils.readTextZipEntry(f, "manifest.json"); - CurseManifest manifest = Lang.requireJsonNonNull(Constants.GSON.fromJson(json, CurseManifest.class)); + CurseManifest manifest = JsonUtils.fromNonNullJson(json, CurseManifest.class); return new Modpack(manifest.getName(), manifest.getAuthor(), manifest.getVersion(), manifest.getMinecraft().getGameVersion(), CompressingUtils.readTextZipEntryQuietly(f, "modlist.html").orElse( "No description"), manifest); } diff --git a/HMCLCore/src/main/java/org/jackhuang/hmcl/util/JsonUtils.java b/HMCLCore/src/main/java/org/jackhuang/hmcl/util/JsonUtils.java new file mode 100644 index 000000000..de5fe0a0b --- /dev/null +++ b/HMCLCore/src/main/java/org/jackhuang/hmcl/util/JsonUtils.java @@ -0,0 +1,15 @@ +package org.jackhuang.hmcl.util; + +import com.google.gson.JsonParseException; + +public final class JsonUtils { + + private JsonUtils() {} + + public static T fromNonNullJson(String json, Class classOfT) throws JsonParseException { + T parsed = Constants.GSON.fromJson(json, classOfT); + if (parsed == null) + throw new JsonParseException("Json object cannot be null."); + return parsed; + } +} diff --git a/HMCLCore/src/main/java/org/jackhuang/hmcl/util/Lang.java b/HMCLCore/src/main/java/org/jackhuang/hmcl/util/Lang.java index 96486d321..57e08b095 100644 --- a/HMCLCore/src/main/java/org/jackhuang/hmcl/util/Lang.java +++ b/HMCLCore/src/main/java/org/jackhuang/hmcl/util/Lang.java @@ -5,8 +5,6 @@ */ package org.jackhuang.hmcl.util; -import com.google.gson.JsonParseException; - import java.util.*; import java.util.concurrent.TimeUnit; import java.util.function.Consumer; @@ -22,16 +20,6 @@ public final class Lang { private Lang() { } - public static T requireJsonNonNull(T obj) throws JsonParseException { - return requireJsonNonNull(obj, "Json object cannot be null."); - } - - public static T requireJsonNonNull(T obj, String message) throws JsonParseException { - if (obj == null) - throw new JsonParseException(message); - return obj; - } - @SafeVarargs public static Map mapOf(Pair... pairs) { HashMap map = new HashMap<>(); From 470045f228c56f6be419abdfe1b0168484dfb566 Mon Sep 17 00:00:00 2001 From: yushijinhun Date: Sun, 18 Feb 2018 15:33:58 +0800 Subject: [PATCH 05/12] Rename Lang.getOrPut() to computeIfAbsent() See Map.computeIfAbsent() in java9 --- .../src/main/java/org/jackhuang/hmcl/util/Lang.java | 12 ++++++------ .../java/org/jackhuang/hmcl/util/SimpleMultimap.java | 2 +- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/HMCLCore/src/main/java/org/jackhuang/hmcl/util/Lang.java b/HMCLCore/src/main/java/org/jackhuang/hmcl/util/Lang.java index 57e08b095..0dd671af8 100644 --- a/HMCLCore/src/main/java/org/jackhuang/hmcl/util/Lang.java +++ b/HMCLCore/src/main/java/org/jackhuang/hmcl/util/Lang.java @@ -28,14 +28,14 @@ public final class Lang { return map; } - public static V getOrPut(Map map, K key, Supplier defaultValue) { + public static V computeIfAbsent(Map map, K key, Supplier computingFunction) { V value = map.get(key); if (value == null) { - V answer = defaultValue.get(); - map.put(key, answer); - return answer; - } else - return value; + V newValue = computingFunction.get(); + map.put(key, newValue); + return newValue; + } + return value; } public static void throwable(Throwable exception) throws E { diff --git a/HMCLCore/src/main/java/org/jackhuang/hmcl/util/SimpleMultimap.java b/HMCLCore/src/main/java/org/jackhuang/hmcl/util/SimpleMultimap.java index 65e3cc6e9..9f83dc2c8 100644 --- a/HMCLCore/src/main/java/org/jackhuang/hmcl/util/SimpleMultimap.java +++ b/HMCLCore/src/main/java/org/jackhuang/hmcl/util/SimpleMultimap.java @@ -62,7 +62,7 @@ public final class SimpleMultimap { } public Collection get(K key) { - return Lang.getOrPut(map, key, valuer); + return Lang.computeIfAbsent(map, key, valuer); } public void put(K key, V value) { From 65491ef18eeda045898c4833c2448907f0fee1ec Mon Sep 17 00:00:00 2001 From: yushijinhun Date: Sun, 18 Feb 2018 15:44:32 +0800 Subject: [PATCH 06/12] Remove 3-arg Lang.merge() --- .../main/java/org/jackhuang/hmcl/util/Lang.java | 15 ++------------- 1 file changed, 2 insertions(+), 13 deletions(-) diff --git a/HMCLCore/src/main/java/org/jackhuang/hmcl/util/Lang.java b/HMCLCore/src/main/java/org/jackhuang/hmcl/util/Lang.java index 0dd671af8..3beebeeec 100644 --- a/HMCLCore/src/main/java/org/jackhuang/hmcl/util/Lang.java +++ b/HMCLCore/src/main/java/org/jackhuang/hmcl/util/Lang.java @@ -216,8 +216,8 @@ public final class Lang { return convert(map.get(key), clazz, defaultValue); } - public static List merge(Collection a, Collection b) { - LinkedList result = new LinkedList<>(); + public static List merge(Collection a, Collection b) { + List result = new ArrayList<>(); if (a != null) result.addAll(a); if (b != null) @@ -225,17 +225,6 @@ public final class Lang { return result; } - public static List merge(Collection a, Collection b, Collection c) { - LinkedList result = new LinkedList<>(); - if (a != null) - result.addAll(a); - if (b != null) - result.addAll(b); - if (c != null) - result.addAll(c); - return result; - } - public static void executeDelayed(Runnable runnable, TimeUnit timeUnit, long timeout, boolean isDaemon) { thread(() -> { try { From bde01af89d4597928aecb75b46ef1674c21cec7f Mon Sep 17 00:00:00 2001 From: yushijinhun Date: Sun, 18 Feb 2018 15:46:15 +0800 Subject: [PATCH 07/12] help compilers to infer types ecc cannot infer it --- .../main/java/org/jackhuang/hmcl/launch/DefaultLauncher.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/HMCLCore/src/main/java/org/jackhuang/hmcl/launch/DefaultLauncher.java b/HMCLCore/src/main/java/org/jackhuang/hmcl/launch/DefaultLauncher.java index bdf3ae488..bfdcc85e8 100644 --- a/HMCLCore/src/main/java/org/jackhuang/hmcl/launch/DefaultLauncher.java +++ b/HMCLCore/src/main/java/org/jackhuang/hmcl/launch/DefaultLauncher.java @@ -198,7 +198,7 @@ public class DefaultLauncher extends Launcher { } private final Map> forbiddens = Lang.mapOf( - new Pair<>("-Xincgc", () -> options.getJava().getParsedVersion() >= JavaVersion.JAVA_9) + new Pair>("-Xincgc", () -> options.getJava().getParsedVersion() >= JavaVersion.JAVA_9) ); protected Map> getForbiddens() { From 126b2a19e7e5b27d67c1357a617cadbe28564bc5 Mon Sep 17 00:00:00 2001 From: yushijinhun Date: Sun, 18 Feb 2018 16:01:21 +0800 Subject: [PATCH 08/12] =?UTF-8?q?ReflectionHelper=E4=B8=AD=E4=BD=BF?= =?UTF-8?q?=E7=94=A8=E5=8F=82=E6=95=B0=E5=8C=96=E7=B1=BB=E5=9E=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../jackhuang/hmcl/util/ReflectionHelper.java | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/HMCLCore/src/main/java/org/jackhuang/hmcl/util/ReflectionHelper.java b/HMCLCore/src/main/java/org/jackhuang/hmcl/util/ReflectionHelper.java index f2eb46ffe..3fb336020 100644 --- a/HMCLCore/src/main/java/org/jackhuang/hmcl/util/ReflectionHelper.java +++ b/HMCLCore/src/main/java/org/jackhuang/hmcl/util/ReflectionHelper.java @@ -52,14 +52,14 @@ public final class ReflectionHelper { } PRIMITIVES = Lang.mapOf( - new Pair("byte", Byte.class), - new Pair("short", Short.class), - new Pair("int", Integer.class), - new Pair("long", Long.class), - new Pair("char", Character.class), - new Pair("float", Float.class), - new Pair("double", Double.class), - new Pair("boolean", Boolean.class) + new Pair<>("byte", Byte.class), + new Pair<>("short", Short.class), + new Pair<>("int", Integer.class), + new Pair<>("long", Long.class), + new Pair<>("char", Character.class), + new Pair<>("float", Float.class), + new Pair<>("double", Double.class), + new Pair<>("boolean", Boolean.class) ); } From 8fd9395e23cf11ea1bc18776f0b77d86b440b64c Mon Sep 17 00:00:00 2001 From: yushijinhun Date: Sun, 18 Feb 2018 16:03:13 +0800 Subject: [PATCH 09/12] =?UTF-8?q?=E5=88=A0=E9=99=A4=E5=AF=B9SSL=E7=9A=84?= =?UTF-8?q?=E5=B9=B2=E6=B6=89=EF=BC=88=E5=87=BA=E4=BA=8E=E5=AE=89=E5=85=A8?= =?UTF-8?q?=E8=80=83=E8=99=91=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../org/jackhuang/hmcl/util/NetworkUtils.java | 43 ------------------- .../jackhuang/hmcl/util/RandomUserAgent.java | 3 ++ 2 files changed, 3 insertions(+), 43 deletions(-) diff --git a/HMCLCore/src/main/java/org/jackhuang/hmcl/util/NetworkUtils.java b/HMCLCore/src/main/java/org/jackhuang/hmcl/util/NetworkUtils.java index 6bdc7f104..98806ad3e 100644 --- a/HMCLCore/src/main/java/org/jackhuang/hmcl/util/NetworkUtils.java +++ b/HMCLCore/src/main/java/org/jackhuang/hmcl/util/NetworkUtils.java @@ -17,10 +17,6 @@ */ package org.jackhuang.hmcl.util; -import javax.net.ssl.HostnameVerifier; -import javax.net.ssl.HttpsURLConnection; -import javax.net.ssl.SSLContext; -import javax.net.ssl.X509TrustManager; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; @@ -28,9 +24,6 @@ import java.net.HttpURLConnection; import java.net.MalformedURLException; import java.net.Proxy; import java.net.URL; -import java.security.GeneralSecurityException; -import java.security.SecureRandom; -import java.security.cert.X509Certificate; import java.util.Map; import java.util.Objects; import java.util.function.Supplier; @@ -46,41 +39,6 @@ public final class NetworkUtils { private NetworkUtils() { } - private static final X509TrustManager XTM = new X509TrustManager() { - @Override - public void checkClientTrusted(X509Certificate[] xcs, String string) { - } - - @Override - public void checkServerTrusted(X509Certificate[] xcs, String string) { - } - - @Override - public X509Certificate[] getAcceptedIssuers() { - return new X509Certificate[0]; - } - }; - - private static final HostnameVerifier HNV = (a, b) -> true; - - private static volatile boolean initHttps = false; - - private static synchronized void initHttps() { - if (initHttps) - return; - - initHttps = true; - - System.setProperty("https.protocols", "SSLv3,TLSv1"); - try { - SSLContext c = SSLContext.getInstance("SSL"); - c.init(null, new X509TrustManager[] { XTM }, new SecureRandom()); - HttpsURLConnection.setDefaultSSLSocketFactory(c.getSocketFactory()); - } catch (GeneralSecurityException ignore) { - } - HttpsURLConnection.setDefaultHostnameVerifier(HNV); - } - private static Supplier userAgentSupplier = RandomUserAgent::randomUserAgent; public static String getUserAgent() { @@ -92,7 +50,6 @@ public final class NetworkUtils { } public static HttpURLConnection createConnection(URL url, Proxy proxy) throws IOException { - initHttps(); HttpURLConnection connection = (HttpURLConnection) url.openConnection(proxy); connection.setDoInput(true); connection.setUseCaches(false); diff --git a/HMCLCore/src/main/java/org/jackhuang/hmcl/util/RandomUserAgent.java b/HMCLCore/src/main/java/org/jackhuang/hmcl/util/RandomUserAgent.java index 3795779e1..4aaf3731f 100644 --- a/HMCLCore/src/main/java/org/jackhuang/hmcl/util/RandomUserAgent.java +++ b/HMCLCore/src/main/java/org/jackhuang/hmcl/util/RandomUserAgent.java @@ -3,6 +3,9 @@ package org.jackhuang.hmcl.util; import java.util.HashMap; import java.util.Map; +/** + * Optifine has blocked Java's useragent, so we have to make up one. + */ public class RandomUserAgent { private static final HashMap uaMap = new HashMap<>(); From b45907a9f6fd503a0f3978bb229ca770bf65aef3 Mon Sep 17 00:00:00 2001 From: yushijinhun Date: Sun, 18 Feb 2018 16:23:12 +0800 Subject: [PATCH 10/12] =?UTF-8?q?Polish,=20=E5=A4=84=E7=90=86=E9=83=A8?= =?UTF-8?q?=E5=88=86=E8=AD=A6=E5=91=8A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../org/jackhuang/hmcl/game/ModpackHelper.java | 2 +- .../java/org/jackhuang/hmcl/setting/Accounts.java | 9 ++++----- .../java/org/jackhuang/hmcl/setting/Settings.java | 2 +- .../org/jackhuang/hmcl/setting/VersionSetting.java | 2 +- .../java/org/jackhuang/hmcl/ui/AccountsPage.java | 14 +++++++------- .../ui/construct/NoneMultipleSelectionModel.java | 8 ++------ .../hmcl/ui/construct/RipplerContainer.java | 8 +++++--- .../hmcl/ui/export/ExportWizardProvider.java | 7 +++++-- .../hmcl/ui/export/ModpackFileSelectionPage.java | 2 +- .../jackhuang/hmcl/upgrade/AppDataUpgrader.java | 2 +- .../org/jackhuang/hmcl/auth/OfflineAccount.java | 1 + 11 files changed, 29 insertions(+), 28 deletions(-) diff --git a/HMCL/src/main/java/org/jackhuang/hmcl/game/ModpackHelper.java b/HMCL/src/main/java/org/jackhuang/hmcl/game/ModpackHelper.java index a79a1ebd1..f12f6a861 100644 --- a/HMCL/src/main/java/org/jackhuang/hmcl/game/ModpackHelper.java +++ b/HMCL/src/main/java/org/jackhuang/hmcl/game/ModpackHelper.java @@ -106,7 +106,7 @@ public final class ModpackHelper { else throw new IllegalStateException("Unrecognized modpack: " + modpack); } - public static Task getUpdateTask(Profile profile, File zipFile, String name, ModpackConfiguration configuration) throws UnsupportedModpackException, MismatchedModpackTypeException, IOException { + public static Task getUpdateTask(Profile profile, File zipFile, String name, ModpackConfiguration configuration) throws UnsupportedModpackException, MismatchedModpackTypeException, IOException { Modpack modpack = ModpackHelper.readModpackManifest(zipFile); switch (configuration.getType()) { 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 dccc1d195..a0b8eceed 100644 --- a/HMCL/src/main/java/org/jackhuang/hmcl/setting/Accounts.java +++ b/HMCL/src/main/java/org/jackhuang/hmcl/setting/Accounts.java @@ -72,11 +72,10 @@ public final class Accounts { .orElseThrow(() -> new IllegalArgumentException("Account " + account + " has not set current character.")); } - public static Optional getCurrentCharacter(Map storage) { - Optional properties = Lang.get(storage, "properties", Map.class); - if (!properties.isPresent()) return Optional.empty(); - return Lang.get(properties.get(), "character", String.class); - } + public static Optional getCurrentCharacter(Map storage) { + return Lang.get(storage, "properties", Map.class) + .flatMap(properties -> Lang.get(properties, "character", String.class)); + } static String getAccountId(Account account) { return getAccountId(account.getUsername(), getCurrentCharacter(account)); 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 047d97f7a..7146156ea 100644 --- a/HMCL/src/main/java/org/jackhuang/hmcl/setting/Settings.java +++ b/HMCL/src/main/java/org/jackhuang/hmcl/setting/Settings.java @@ -69,7 +69,7 @@ public class Settings { { for (Map settings : SETTINGS.getAccounts()) { Optional characterName = Accounts.getCurrentCharacter(settings); - AccountFactory factory = Accounts.ACCOUNT_FACTORY.get(Lang.get(settings, "type", String.class, "")); + AccountFactory factory = Accounts.ACCOUNT_FACTORY.get(Lang.get(settings, "type", String.class, "")); if (factory == null || !characterName.isPresent()) { // unrecognized account type, so remove it. SETTINGS.getAccounts().remove(settings); 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 6bc4a7c0c..b79465121 100644 --- a/HMCL/src/main/java/org/jackhuang/hmcl/setting/VersionSetting.java +++ b/HMCL/src/main/java/org/jackhuang/hmcl/setting/VersionSetting.java @@ -138,7 +138,7 @@ public final class VersionSetting { permSizeProperty.set(permSize); } - private final ImmediateIntegerProperty maxMemoryProperty = new ImmediateIntegerProperty(this, "maxMemory", (int) OperatingSystem.SUGGESTED_MEMORY); + private final ImmediateIntegerProperty maxMemoryProperty = new ImmediateIntegerProperty(this, "maxMemory", OperatingSystem.SUGGESTED_MEMORY); public ImmediateIntegerProperty maxMemoryProperty() { return maxMemoryProperty; diff --git a/HMCL/src/main/java/org/jackhuang/hmcl/ui/AccountsPage.java b/HMCL/src/main/java/org/jackhuang/hmcl/ui/AccountsPage.java index 5d9c8ac1e..36b7b8ca8 100644 --- a/HMCL/src/main/java/org/jackhuang/hmcl/ui/AccountsPage.java +++ b/HMCL/src/main/java/org/jackhuang/hmcl/ui/AccountsPage.java @@ -214,19 +214,19 @@ public final class AccountsPage extends StackPane implements DecoratorPage { this.title.set(title); } - public static String accountException(Exception account) { - if (account instanceof InvalidCredentialsException) { + public static String accountException(Exception exception) { + if (exception instanceof InvalidCredentialsException) { return Main.i18n("account.failed.invalid_credentials"); - } else if (account instanceof NoCharacterException) { + } else if (exception instanceof NoCharacterException) { return Main.i18n("account.failed.no_charactor"); - } else if (account instanceof ServerDisconnectException) { + } else if (exception instanceof ServerDisconnectException) { return Main.i18n("account.failed.connect_authentication_server"); - } else if (account instanceof InvalidTokenException) { + } else if (exception instanceof InvalidTokenException) { return Main.i18n("account.failed.invalid_token"); - } else if (account instanceof InvalidPasswordException) { + } else if (exception instanceof InvalidPasswordException) { return Main.i18n("account.failed.invalid_password"); } else { - return account.getClass() + ": " + ((Exception) account).getLocalizedMessage(); + return exception.getClass() + ": " + exception.getLocalizedMessage(); } } diff --git a/HMCL/src/main/java/org/jackhuang/hmcl/ui/construct/NoneMultipleSelectionModel.java b/HMCL/src/main/java/org/jackhuang/hmcl/ui/construct/NoneMultipleSelectionModel.java index 91418fbbc..c91691ae4 100644 --- a/HMCL/src/main/java/org/jackhuang/hmcl/ui/construct/NoneMultipleSelectionModel.java +++ b/HMCL/src/main/java/org/jackhuang/hmcl/ui/construct/NoneMultipleSelectionModel.java @@ -21,13 +21,9 @@ import javafx.collections.FXCollections; import javafx.collections.ObservableList; import javafx.scene.control.MultipleSelectionModel; -public final class NoneMultipleSelectionModel extends MultipleSelectionModel { - private static final NoneMultipleSelectionModel INSTANCE = new NoneMultipleSelectionModel(); - private NoneMultipleSelectionModel() {} +public class NoneMultipleSelectionModel extends MultipleSelectionModel { - @SuppressWarnings("unchecked") - public static NoneMultipleSelectionModel getInstance() { - return (NoneMultipleSelectionModel) INSTANCE; + public NoneMultipleSelectionModel() { } @Override diff --git a/HMCL/src/main/java/org/jackhuang/hmcl/ui/construct/RipplerContainer.java b/HMCL/src/main/java/org/jackhuang/hmcl/ui/construct/RipplerContainer.java index 0f91804c9..d50a5f2d3 100644 --- a/HMCL/src/main/java/org/jackhuang/hmcl/ui/construct/RipplerContainer.java +++ b/HMCL/src/main/java/org/jackhuang/hmcl/ui/construct/RipplerContainer.java @@ -217,11 +217,13 @@ public class RipplerContainer extends StackPane { private static class StyleableProperties { private static final CssMetaData RIPPLER_FILL = new CssMetaData("-jfx-rippler-fill", StyleConverter.getPaintConverter(), Color.rgb(0, 200, 255)) { - public boolean isSettable(RipplerContainer control) { + @Override + public boolean isSettable(RipplerContainer control) { return control.ripplerFill == null || !control.ripplerFill.isBound(); } - public StyleableProperty getStyleableProperty(RipplerContainer control) { + @Override + public StyleableProperty getStyleableProperty(RipplerContainer control) { return control.ripplerFillProperty(); } }; @@ -232,7 +234,7 @@ public class RipplerContainer extends StackPane { } static { - List> styleables = new ArrayList<>(Parent.getClassCssMetaData()); + List> styleables = new ArrayList<>(Node.getClassCssMetaData()); Collections.addAll(styleables, RIPPLER_FILL); STYLEABLES = Collections.unmodifiableList(styleables); } 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 5fdb9c969..362395e6d 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 @@ -44,8 +44,11 @@ public final class ExportWizardProvider implements WizardProvider { @Override public Object finish(Map settings) { - return new HMCLModpackExportTask(profile.getRepository(), version, (List) settings.get(ModpackFileSelectionPage.MODPACK_FILE_SELECTION), - new Modpack( + @SuppressWarnings("unchecked") + List whitelist = (List) settings.get(ModpackFileSelectionPage.MODPACK_FILE_SELECTION); + + return new HMCLModpackExportTask(profile.getRepository(), version, whitelist, + new Modpack( (String) settings.get(ModpackInfoPage.MODPACK_NAME), (String) settings.get(ModpackInfoPage.MODPACK_AUTHOR), (String) settings.get(ModpackInfoPage.MODPACK_VERSION), diff --git a/HMCL/src/main/java/org/jackhuang/hmcl/ui/export/ModpackFileSelectionPage.java b/HMCL/src/main/java/org/jackhuang/hmcl/ui/export/ModpackFileSelectionPage.java index ee0dbfcad..1f8f1e025 100644 --- a/HMCL/src/main/java/org/jackhuang/hmcl/ui/export/ModpackFileSelectionPage.java +++ b/HMCL/src/main/java/org/jackhuang/hmcl/ui/export/ModpackFileSelectionPage.java @@ -62,7 +62,7 @@ public final class ModpackFileSelectionPage extends StackPane implements WizardP FXUtils.loadFXML(this, "/assets/fxml/modpack/selection.fxml"); rootNode = getTreeItem(profile.getRepository().getRunDirectory(version), "minecraft"); treeView.setRoot(rootNode); - treeView.setSelectionModel(NoneMultipleSelectionModel.getInstance()); + treeView.setSelectionModel(new NoneMultipleSelectionModel<>()); } private CheckBoxTreeItem getTreeItem(File file, String basePath) { diff --git a/HMCL/src/main/java/org/jackhuang/hmcl/upgrade/AppDataUpgrader.java b/HMCL/src/main/java/org/jackhuang/hmcl/upgrade/AppDataUpgrader.java index 8d36d8e25..a7e60e87f 100644 --- a/HMCL/src/main/java/org/jackhuang/hmcl/upgrade/AppDataUpgrader.java +++ b/HMCL/src/main/java/org/jackhuang/hmcl/upgrade/AppDataUpgrader.java @@ -56,7 +56,7 @@ public class AppDataUpgrader extends IUpgrader { al.add("--noupdate"); AccessController.doPrivileged((PrivilegedExceptionAction) () -> { new URLClassLoader(new URL[]{jar.toURI().toURL()}, - URLClassLoader.getSystemClassLoader().getParent()).loadClass(mainClass) + ClassLoader.getSystemClassLoader().getParent()).loadClass(mainClass) .getMethod("main", String[].class).invoke(null, new Object[]{al.toArray(new String[0])}); return null; }); diff --git a/HMCLCore/src/main/java/org/jackhuang/hmcl/auth/OfflineAccount.java b/HMCLCore/src/main/java/org/jackhuang/hmcl/auth/OfflineAccount.java index 8090c9401..f3c65e610 100644 --- a/HMCLCore/src/main/java/org/jackhuang/hmcl/auth/OfflineAccount.java +++ b/HMCLCore/src/main/java/org/jackhuang/hmcl/auth/OfflineAccount.java @@ -47,6 +47,7 @@ public class OfflineAccount extends Account { throw new IllegalArgumentException("Username cannot be blank"); } + @Override public UUID getUUID() { return UUIDTypeAdapter.fromString(uuid); } From 3cfcf1e772c4a88ddd574e7fd722ba3a331edded Mon Sep 17 00:00:00 2001 From: yushijinhun Date: Sun, 18 Feb 2018 16:47:00 +0800 Subject: [PATCH 11/12] =?UTF-8?q?=E7=94=A8=E5=AE=9A=E4=B9=89=E7=9A=84?= =?UTF-8?q?=E7=B1=BB=E5=9E=8B=E4=BB=A3=E6=9B=BFFXUtils.addListener?= =?UTF-8?q?=E4=B8=AD=E7=9A=84Pair?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/org/jackhuang/hmcl/ui/FXUtils.java | 43 +++++++++++++------ 1 file changed, 30 insertions(+), 13 deletions(-) diff --git a/HMCL/src/main/java/org/jackhuang/hmcl/ui/FXUtils.java b/HMCL/src/main/java/org/jackhuang/hmcl/ui/FXUtils.java index e7861c399..d58db81c9 100644 --- a/HMCL/src/main/java/org/jackhuang/hmcl/ui/FXUtils.java +++ b/HMCL/src/main/java/org/jackhuang/hmcl/ui/FXUtils.java @@ -94,20 +94,37 @@ public final class FXUtils { }); } - public static void addListener(Node node, String key, ObservableValue value, Consumer callback) { - ChangeListener listener = (a, b, newValue) -> callback.accept(newValue); - node.getProperties().put(key, new Pair<>(callback, listener)); - value.addListener(listener); - } + private static class ListenerPair { + ObservableValue value; + ChangeListener listener; - public static void removeListener(Node node, String key) { - if (node.getProperties().get(key) instanceof Pair) { - Pair pair = (Pair) node.getProperties().get(key); - if (pair.getValue() instanceof ObservableValue && pair.getKey() instanceof ChangeListener) { - ((ObservableValue) pair.getValue()).removeListener((ChangeListener) pair.getKey()); - } - } - } + ListenerPair(ObservableValue value, ChangeListener listener) { + this.value = value; + this.listener = listener; + } + + void bind() { + value.addListener(listener); + } + + void unbind() { + value.removeListener(listener); + } + } + + public static void addListener(Node node, String key, ObservableValue value, Consumer callback) { + ListenerPair pair = new ListenerPair<>(value, (a, b, newValue) -> callback.accept(newValue)); + node.getProperties().put(key, pair); + pair.bind(); + } + + public static void removeListener(Node node, String key) { + Lang.convert(node.getProperties().get(key), ListenerPair.class) + .ifPresent(info -> { + info.unbind(); + node.getProperties().remove(key); + }); + } public static void setValidateWhileTextChanged(Node field, boolean validate) { if (field instanceof JFXTextField) { From a5f3ec7b9bc75321dfd9521eb32b04d49c8dbf86 Mon Sep 17 00:00:00 2001 From: yushijinhun Date: Sun, 18 Feb 2018 17:07:54 +0800 Subject: [PATCH 12/12] fix indents --- .../org/jackhuang/hmcl/setting/Accounts.java | 8 +-- .../java/org/jackhuang/hmcl/ui/FXUtils.java | 52 +++++++++---------- .../construct/NoneMultipleSelectionModel.java | 2 +- .../hmcl/ui/construct/RipplerContainer.java | 4 +- .../hmcl/ui/export/ExportWizardProvider.java | 8 +-- 5 files changed, 37 insertions(+), 37 deletions(-) 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 a0b8eceed..e12700207 100644 --- a/HMCL/src/main/java/org/jackhuang/hmcl/setting/Accounts.java +++ b/HMCL/src/main/java/org/jackhuang/hmcl/setting/Accounts.java @@ -72,10 +72,10 @@ public final class Accounts { .orElseThrow(() -> new IllegalArgumentException("Account " + account + " has not set current character.")); } - public static Optional getCurrentCharacter(Map storage) { - return Lang.get(storage, "properties", Map.class) - .flatMap(properties -> Lang.get(properties, "character", String.class)); - } + public static Optional getCurrentCharacter(Map storage) { + return Lang.get(storage, "properties", Map.class) + .flatMap(properties -> Lang.get(properties, "character", String.class)); + } static String getAccountId(Account account) { return getAccountId(account.getUsername(), getCurrentCharacter(account)); diff --git a/HMCL/src/main/java/org/jackhuang/hmcl/ui/FXUtils.java b/HMCL/src/main/java/org/jackhuang/hmcl/ui/FXUtils.java index d58db81c9..8eef22adc 100644 --- a/HMCL/src/main/java/org/jackhuang/hmcl/ui/FXUtils.java +++ b/HMCL/src/main/java/org/jackhuang/hmcl/ui/FXUtils.java @@ -94,37 +94,37 @@ public final class FXUtils { }); } - private static class ListenerPair { - ObservableValue value; - ChangeListener listener; + private static class ListenerPair { + ObservableValue value; + ChangeListener listener; - ListenerPair(ObservableValue value, ChangeListener listener) { - this.value = value; - this.listener = listener; - } + ListenerPair(ObservableValue value, ChangeListener listener) { + this.value = value; + this.listener = listener; + } - void bind() { - value.addListener(listener); - } + void bind() { + value.addListener(listener); + } - void unbind() { - value.removeListener(listener); - } - } + void unbind() { + value.removeListener(listener); + } + } - public static void addListener(Node node, String key, ObservableValue value, Consumer callback) { - ListenerPair pair = new ListenerPair<>(value, (a, b, newValue) -> callback.accept(newValue)); - node.getProperties().put(key, pair); - pair.bind(); - } + public static void addListener(Node node, String key, ObservableValue value, Consumer callback) { + ListenerPair pair = new ListenerPair<>(value, (a, b, newValue) -> callback.accept(newValue)); + node.getProperties().put(key, pair); + pair.bind(); + } - public static void removeListener(Node node, String key) { - Lang.convert(node.getProperties().get(key), ListenerPair.class) - .ifPresent(info -> { - info.unbind(); - node.getProperties().remove(key); - }); - } + public static void removeListener(Node node, String key) { + Lang.convert(node.getProperties().get(key), ListenerPair.class) + .ifPresent(info -> { + info.unbind(); + node.getProperties().remove(key); + }); + } public static void setValidateWhileTextChanged(Node field, boolean validate) { if (field instanceof JFXTextField) { diff --git a/HMCL/src/main/java/org/jackhuang/hmcl/ui/construct/NoneMultipleSelectionModel.java b/HMCL/src/main/java/org/jackhuang/hmcl/ui/construct/NoneMultipleSelectionModel.java index c91691ae4..cbebe3e2c 100644 --- a/HMCL/src/main/java/org/jackhuang/hmcl/ui/construct/NoneMultipleSelectionModel.java +++ b/HMCL/src/main/java/org/jackhuang/hmcl/ui/construct/NoneMultipleSelectionModel.java @@ -23,7 +23,7 @@ import javafx.scene.control.MultipleSelectionModel; public class NoneMultipleSelectionModel extends MultipleSelectionModel { - public NoneMultipleSelectionModel() { + public NoneMultipleSelectionModel() { } @Override diff --git a/HMCL/src/main/java/org/jackhuang/hmcl/ui/construct/RipplerContainer.java b/HMCL/src/main/java/org/jackhuang/hmcl/ui/construct/RipplerContainer.java index d50a5f2d3..df7073f5a 100644 --- a/HMCL/src/main/java/org/jackhuang/hmcl/ui/construct/RipplerContainer.java +++ b/HMCL/src/main/java/org/jackhuang/hmcl/ui/construct/RipplerContainer.java @@ -218,12 +218,12 @@ public class RipplerContainer extends StackPane { private static final CssMetaData RIPPLER_FILL = new CssMetaData("-jfx-rippler-fill", StyleConverter.getPaintConverter(), Color.rgb(0, 200, 255)) { @Override - public boolean isSettable(RipplerContainer control) { + public boolean isSettable(RipplerContainer control) { return control.ripplerFill == null || !control.ripplerFill.isBound(); } @Override - public StyleableProperty getStyleableProperty(RipplerContainer control) { + public StyleableProperty getStyleableProperty(RipplerContainer control) { return control.ripplerFillProperty(); } }; 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 362395e6d..8686237bf 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 @@ -44,11 +44,11 @@ public final class ExportWizardProvider implements WizardProvider { @Override public Object finish(Map settings) { - @SuppressWarnings("unchecked") - List whitelist = (List) settings.get(ModpackFileSelectionPage.MODPACK_FILE_SELECTION); + @SuppressWarnings("unchecked") + List whitelist = (List) settings.get(ModpackFileSelectionPage.MODPACK_FILE_SELECTION); - return new HMCLModpackExportTask(profile.getRepository(), version, whitelist, - new Modpack( + return new HMCLModpackExportTask(profile.getRepository(), version, whitelist, + new Modpack( (String) settings.get(ModpackInfoPage.MODPACK_NAME), (String) settings.get(ModpackInfoPage.MODPACK_AUTHOR), (String) settings.get(ModpackInfoPage.MODPACK_VERSION),