From 95e15d7df468490cd3b80b05d6daa7626573ac82 Mon Sep 17 00:00:00 2001 From: Glavo Date: Fri, 25 Nov 2022 22:40:16 +0800 Subject: [PATCH] Replace ObservableMap with MapProperty (#1870) --- .../main/java/org/jackhuang/hmcl/setting/Config.java | 4 ++-- .../main/java/org/jackhuang/hmcl/setting/Profiles.java | 10 +++++++--- 2 files changed, 9 insertions(+), 5 deletions(-) diff --git a/HMCL/src/main/java/org/jackhuang/hmcl/setting/Config.java b/HMCL/src/main/java/org/jackhuang/hmcl/setting/Config.java index d699291c2..310b3867c 100644 --- a/HMCL/src/main/java/org/jackhuang/hmcl/setting/Config.java +++ b/HMCL/src/main/java/org/jackhuang/hmcl/setting/Config.java @@ -141,7 +141,7 @@ public final class Config implements Cloneable, Observable { private StringProperty versionListSource = new SimpleStringProperty("balanced"); @SerializedName("configurations") - private ObservableMap configurations = FXCollections.observableMap(new TreeMap<>()); + private SimpleMapProperty configurations = new SimpleMapProperty<>(FXCollections.observableMap(new TreeMap<>())); @SerializedName("accounts") private ObservableList> accountStorages = FXCollections.observableArrayList(); @@ -476,7 +476,7 @@ public final class Config implements Cloneable, Observable { return versionListSource; } - public ObservableMap getConfigurations() { + public MapProperty getConfigurations() { return configurations; } diff --git a/HMCL/src/main/java/org/jackhuang/hmcl/setting/Profiles.java b/HMCL/src/main/java/org/jackhuang/hmcl/setting/Profiles.java index 744b7ebed..fd4022ea4 100644 --- a/HMCL/src/main/java/org/jackhuang/hmcl/setting/Profiles.java +++ b/HMCL/src/main/java/org/jackhuang/hmcl/setting/Profiles.java @@ -20,6 +20,7 @@ package org.jackhuang.hmcl.setting; import javafx.application.Platform; import javafx.beans.Observable; import javafx.beans.property.*; +import javafx.collections.FXCollections; import javafx.collections.ObservableList; import org.jackhuang.hmcl.Metadata; import org.jackhuang.hmcl.event.EventBus; @@ -29,8 +30,8 @@ import java.io.File; import java.util.ArrayList; import java.util.HashSet; import java.util.List; +import java.util.TreeMap; import java.util.function.Consumer; -import java.util.stream.Collectors; import static javafx.collections.FXCollections.observableArrayList; import static org.jackhuang.hmcl.setting.ConfigHolder.config; @@ -130,8 +131,11 @@ public final class Profiles { if (!initialized) return; // update storage - config().getConfigurations().clear(); - config().getConfigurations().putAll(profiles.stream().collect(Collectors.toMap(Profile::getName, it -> it))); + TreeMap newConfigurations = new TreeMap<>(); + for (Profile profile : profiles) { + newConfigurations.put(profile.getName(), profile); + } + config().getConfigurations().setValue(FXCollections.observableMap(newConfigurations)); } /**