diff --git a/pom.xml b/pom.xml
index a96cef90e..b9232b542 100644
--- a/pom.xml
+++ b/pom.xml
@@ -457,7 +457,7 @@
de.bixilon
kutil
- 1.4.1
+ 1.5
diff --git a/src/main/java/de/bixilon/minosoft/config/profile/ProfileManager.kt b/src/main/java/de/bixilon/minosoft/config/profile/ProfileManager.kt
index c7eb35ed7..268e851f4 100644
--- a/src/main/java/de/bixilon/minosoft/config/profile/ProfileManager.kt
+++ b/src/main/java/de/bixilon/minosoft/config/profile/ProfileManager.kt
@@ -1,6 +1,6 @@
package de.bixilon.minosoft.config.profile
-import com.google.common.collect.HashBiMap
+import de.bixilon.kutil.collections.map.bi.AbstractMutableBiMap
import de.bixilon.kutil.concurrent.pool.DefaultThreadPool
import de.bixilon.kutil.exception.ExceptionUtil.tryCatch
import de.bixilon.kutil.file.FileUtil
@@ -44,7 +44,7 @@ interface ProfileManager {
val icon: Ikon
get() = FontAwesomeSolid.QUESTION
- val profiles: HashBiMap
+ val profiles: AbstractMutableBiMap
var selected: T
@Deprecated("Should not be accessed") var currentLoadingPath: String?
@@ -195,7 +195,7 @@ interface ProfileManager {
}
fun getName(profile: T): String {
- return profiles.inverse()[profile] ?: "Unknown profile"
+ return profiles.getKey(profile) ?: "Unknown profile"
}
fun load(selected: String?) {
diff --git a/src/main/java/de/bixilon/minosoft/config/profile/profiles/account/AccountProfileManager.kt b/src/main/java/de/bixilon/minosoft/config/profile/profiles/account/AccountProfileManager.kt
index 23f7b195c..ec7407b6e 100644
--- a/src/main/java/de/bixilon/minosoft/config/profile/profiles/account/AccountProfileManager.kt
+++ b/src/main/java/de/bixilon/minosoft/config/profile/profiles/account/AccountProfileManager.kt
@@ -1,7 +1,9 @@
package de.bixilon.minosoft.config.profile.profiles.account
-import com.google.common.collect.HashBiMap
import de.bixilon.kutil.cast.CastUtil.unsafeCast
+import de.bixilon.kutil.collections.CollectionUtil.synchronizedBiMapOf
+import de.bixilon.kutil.collections.map.bi.AbstractMutableBiMap
+import de.bixilon.kutil.watcher.map.bi.BiMapDataWatcher.Companion.watchedBiMap
import de.bixilon.minosoft.config.profile.GlobalProfileManager
import de.bixilon.minosoft.config.profile.ProfileManager
import de.bixilon.minosoft.modding.event.master.GlobalEventMaster
@@ -18,7 +20,7 @@ object AccountProfileManager : ProfileManager {
override var currentLoadingPath: String? = null
- override val profiles: HashBiMap = HashBiMap.create()
+ override val profiles: AbstractMutableBiMap by watchedBiMap(synchronizedBiMapOf())
override var selected: AccountProfile = null.unsafeCast()
set(value) {
diff --git a/src/main/java/de/bixilon/minosoft/config/profile/profiles/audio/AudioProfileManager.kt b/src/main/java/de/bixilon/minosoft/config/profile/profiles/audio/AudioProfileManager.kt
index 0d4e08d9b..6156ae00a 100644
--- a/src/main/java/de/bixilon/minosoft/config/profile/profiles/audio/AudioProfileManager.kt
+++ b/src/main/java/de/bixilon/minosoft/config/profile/profiles/audio/AudioProfileManager.kt
@@ -1,7 +1,9 @@
package de.bixilon.minosoft.config.profile.profiles.audio
-import com.google.common.collect.HashBiMap
import de.bixilon.kutil.cast.CastUtil.unsafeCast
+import de.bixilon.kutil.collections.CollectionUtil.synchronizedBiMapOf
+import de.bixilon.kutil.collections.map.bi.AbstractMutableBiMap
+import de.bixilon.kutil.watcher.map.bi.BiMapDataWatcher.Companion.watchedBiMap
import de.bixilon.minosoft.config.profile.GlobalProfileManager
import de.bixilon.minosoft.config.profile.ProfileManager
import de.bixilon.minosoft.modding.event.master.GlobalEventMaster
@@ -19,7 +21,7 @@ object AudioProfileManager : ProfileManager {
override var currentLoadingPath: String? = null
- override val profiles: HashBiMap = HashBiMap.create()
+ override val profiles: AbstractMutableBiMap by watchedBiMap(synchronizedBiMapOf())
override var selected: AudioProfile = null.unsafeCast()
set(value) {
diff --git a/src/main/java/de/bixilon/minosoft/config/profile/profiles/block/BlockProfileManager.kt b/src/main/java/de/bixilon/minosoft/config/profile/profiles/block/BlockProfileManager.kt
index 79ad164ed..45697a46b 100644
--- a/src/main/java/de/bixilon/minosoft/config/profile/profiles/block/BlockProfileManager.kt
+++ b/src/main/java/de/bixilon/minosoft/config/profile/profiles/block/BlockProfileManager.kt
@@ -1,7 +1,9 @@
package de.bixilon.minosoft.config.profile.profiles.block
-import com.google.common.collect.HashBiMap
import de.bixilon.kutil.cast.CastUtil.unsafeCast
+import de.bixilon.kutil.collections.CollectionUtil.synchronizedBiMapOf
+import de.bixilon.kutil.collections.map.bi.AbstractMutableBiMap
+import de.bixilon.kutil.watcher.map.bi.BiMapDataWatcher.Companion.watchedBiMap
import de.bixilon.minosoft.config.profile.GlobalProfileManager
import de.bixilon.minosoft.config.profile.ProfileManager
import de.bixilon.minosoft.modding.event.master.GlobalEventMaster
@@ -18,7 +20,7 @@ object BlockProfileManager : ProfileManager {
override var currentLoadingPath: String? = null
- override val profiles: HashBiMap = HashBiMap.create()
+ override val profiles: AbstractMutableBiMap by watchedBiMap(synchronizedBiMapOf())
override var selected: BlockProfile = null.unsafeCast()
set(value) {
diff --git a/src/main/java/de/bixilon/minosoft/config/profile/profiles/connection/ConnectionProfileManager.kt b/src/main/java/de/bixilon/minosoft/config/profile/profiles/connection/ConnectionProfileManager.kt
index 5f49e1dce..180d6651e 100644
--- a/src/main/java/de/bixilon/minosoft/config/profile/profiles/connection/ConnectionProfileManager.kt
+++ b/src/main/java/de/bixilon/minosoft/config/profile/profiles/connection/ConnectionProfileManager.kt
@@ -1,7 +1,9 @@
package de.bixilon.minosoft.config.profile.profiles.connection
-import com.google.common.collect.HashBiMap
import de.bixilon.kutil.cast.CastUtil.unsafeCast
+import de.bixilon.kutil.collections.CollectionUtil.synchronizedBiMapOf
+import de.bixilon.kutil.collections.map.bi.AbstractMutableBiMap
+import de.bixilon.kutil.watcher.map.bi.BiMapDataWatcher.Companion.watchedBiMap
import de.bixilon.minosoft.config.profile.GlobalProfileManager
import de.bixilon.minosoft.config.profile.ProfileManager
import de.bixilon.minosoft.modding.event.master.GlobalEventMaster
@@ -18,7 +20,7 @@ object ConnectionProfileManager : ProfileManager {
override var currentLoadingPath: String? = null
- override val profiles: HashBiMap = HashBiMap.create()
+ override val profiles: AbstractMutableBiMap by watchedBiMap(synchronizedBiMapOf())
override var selected: ConnectionProfile = null.unsafeCast()
set(value) {
diff --git a/src/main/java/de/bixilon/minosoft/config/profile/profiles/controls/ControlsProfileManager.kt b/src/main/java/de/bixilon/minosoft/config/profile/profiles/controls/ControlsProfileManager.kt
index e543e6f6b..34e3261e1 100644
--- a/src/main/java/de/bixilon/minosoft/config/profile/profiles/controls/ControlsProfileManager.kt
+++ b/src/main/java/de/bixilon/minosoft/config/profile/profiles/controls/ControlsProfileManager.kt
@@ -1,7 +1,9 @@
package de.bixilon.minosoft.config.profile.profiles.controls
-import com.google.common.collect.HashBiMap
import de.bixilon.kutil.cast.CastUtil.unsafeCast
+import de.bixilon.kutil.collections.CollectionUtil.synchronizedBiMapOf
+import de.bixilon.kutil.collections.map.bi.AbstractMutableBiMap
+import de.bixilon.kutil.watcher.map.bi.BiMapDataWatcher.Companion.watchedBiMap
import de.bixilon.minosoft.config.profile.GlobalProfileManager
import de.bixilon.minosoft.config.profile.ProfileManager
import de.bixilon.minosoft.modding.event.master.GlobalEventMaster
@@ -18,7 +20,7 @@ object ControlsProfileManager : ProfileManager {
override var currentLoadingPath: String? = null
- override val profiles: HashBiMap = HashBiMap.create()
+ override val profiles: AbstractMutableBiMap by watchedBiMap(synchronizedBiMapOf())
override var selected: ControlsProfile = null.unsafeCast()
set(value) {
diff --git a/src/main/java/de/bixilon/minosoft/config/profile/profiles/entity/EntityProfileManager.kt b/src/main/java/de/bixilon/minosoft/config/profile/profiles/entity/EntityProfileManager.kt
index 018c91b06..a33e3979c 100644
--- a/src/main/java/de/bixilon/minosoft/config/profile/profiles/entity/EntityProfileManager.kt
+++ b/src/main/java/de/bixilon/minosoft/config/profile/profiles/entity/EntityProfileManager.kt
@@ -1,7 +1,9 @@
package de.bixilon.minosoft.config.profile.profiles.entity
-import com.google.common.collect.HashBiMap
import de.bixilon.kutil.cast.CastUtil.unsafeCast
+import de.bixilon.kutil.collections.CollectionUtil.synchronizedBiMapOf
+import de.bixilon.kutil.collections.map.bi.AbstractMutableBiMap
+import de.bixilon.kutil.watcher.map.bi.BiMapDataWatcher.Companion.watchedBiMap
import de.bixilon.minosoft.config.profile.GlobalProfileManager
import de.bixilon.minosoft.config.profile.ProfileManager
import de.bixilon.minosoft.modding.event.master.GlobalEventMaster
@@ -18,7 +20,7 @@ object EntityProfileManager : ProfileManager {
override var currentLoadingPath: String? = null
- override val profiles: HashBiMap = HashBiMap.create()
+ override val profiles: AbstractMutableBiMap by watchedBiMap(synchronizedBiMapOf())
override var selected: EntityProfile = null.unsafeCast()
set(value) {
diff --git a/src/main/java/de/bixilon/minosoft/config/profile/profiles/eros/ErosProfileManager.kt b/src/main/java/de/bixilon/minosoft/config/profile/profiles/eros/ErosProfileManager.kt
index 711eb41bb..a1dc0ab4e 100644
--- a/src/main/java/de/bixilon/minosoft/config/profile/profiles/eros/ErosProfileManager.kt
+++ b/src/main/java/de/bixilon/minosoft/config/profile/profiles/eros/ErosProfileManager.kt
@@ -1,7 +1,9 @@
package de.bixilon.minosoft.config.profile.profiles.eros
-import com.google.common.collect.HashBiMap
import de.bixilon.kutil.cast.CastUtil.unsafeCast
+import de.bixilon.kutil.collections.CollectionUtil.synchronizedBiMapOf
+import de.bixilon.kutil.collections.map.bi.AbstractMutableBiMap
+import de.bixilon.kutil.watcher.map.bi.BiMapDataWatcher.Companion.watchedBiMap
import de.bixilon.minosoft.config.profile.GlobalProfileManager
import de.bixilon.minosoft.config.profile.ProfileManager
import de.bixilon.minosoft.config.profile.delegate.delegate.BackingDelegate
@@ -29,7 +31,7 @@ object ErosProfileManager : ProfileManager {
override var currentLoadingPath: String? = null
- override val profiles: HashBiMap = HashBiMap.create()
+ override val profiles: AbstractMutableBiMap by watchedBiMap(synchronizedBiMapOf())
override var selected: ErosProfile = null.unsafeCast()
set(value) {
diff --git a/src/main/java/de/bixilon/minosoft/config/profile/profiles/hud/HUDProfileManager.kt b/src/main/java/de/bixilon/minosoft/config/profile/profiles/hud/HUDProfileManager.kt
index 6325d2701..87b44440c 100644
--- a/src/main/java/de/bixilon/minosoft/config/profile/profiles/hud/HUDProfileManager.kt
+++ b/src/main/java/de/bixilon/minosoft/config/profile/profiles/hud/HUDProfileManager.kt
@@ -1,7 +1,9 @@
package de.bixilon.minosoft.config.profile.profiles.hud
-import com.google.common.collect.HashBiMap
import de.bixilon.kutil.cast.CastUtil.unsafeCast
+import de.bixilon.kutil.collections.CollectionUtil.synchronizedBiMapOf
+import de.bixilon.kutil.collections.map.bi.AbstractMutableBiMap
+import de.bixilon.kutil.watcher.map.bi.BiMapDataWatcher.Companion.watchedBiMap
import de.bixilon.minosoft.config.profile.GlobalProfileManager
import de.bixilon.minosoft.config.profile.ProfileManager
import de.bixilon.minosoft.modding.event.master.GlobalEventMaster
@@ -18,7 +20,7 @@ object HUDProfileManager : ProfileManager {
override var currentLoadingPath: String? = null
- override val profiles: HashBiMap = HashBiMap.create()
+ override val profiles: AbstractMutableBiMap by watchedBiMap(synchronizedBiMapOf())
override var selected: HUDProfile = null.unsafeCast()
set(value) {
diff --git a/src/main/java/de/bixilon/minosoft/config/profile/profiles/other/OtherProfileManager.kt b/src/main/java/de/bixilon/minosoft/config/profile/profiles/other/OtherProfileManager.kt
index b1e1207a3..2b4abddc1 100644
--- a/src/main/java/de/bixilon/minosoft/config/profile/profiles/other/OtherProfileManager.kt
+++ b/src/main/java/de/bixilon/minosoft/config/profile/profiles/other/OtherProfileManager.kt
@@ -1,7 +1,9 @@
package de.bixilon.minosoft.config.profile.profiles.other
-import com.google.common.collect.HashBiMap
import de.bixilon.kutil.cast.CastUtil.unsafeCast
+import de.bixilon.kutil.collections.CollectionUtil.synchronizedBiMapOf
+import de.bixilon.kutil.collections.map.bi.AbstractMutableBiMap
+import de.bixilon.kutil.watcher.map.bi.BiMapDataWatcher.Companion.watchedBiMap
import de.bixilon.minosoft.config.profile.GlobalProfileManager
import de.bixilon.minosoft.config.profile.ProfileManager
import de.bixilon.minosoft.modding.event.master.GlobalEventMaster
@@ -18,7 +20,7 @@ object OtherProfileManager : ProfileManager {
override var currentLoadingPath: String? = null
- override val profiles: HashBiMap = HashBiMap.create()
+ override val profiles: AbstractMutableBiMap by watchedBiMap(synchronizedBiMapOf())
override var selected: OtherProfile = null.unsafeCast()
set(value) {
diff --git a/src/main/java/de/bixilon/minosoft/config/profile/profiles/particle/ParticleProfileManager.kt b/src/main/java/de/bixilon/minosoft/config/profile/profiles/particle/ParticleProfileManager.kt
index 2d7ccbcec..b77ea0b06 100644
--- a/src/main/java/de/bixilon/minosoft/config/profile/profiles/particle/ParticleProfileManager.kt
+++ b/src/main/java/de/bixilon/minosoft/config/profile/profiles/particle/ParticleProfileManager.kt
@@ -1,7 +1,9 @@
package de.bixilon.minosoft.config.profile.profiles.particle
-import com.google.common.collect.HashBiMap
import de.bixilon.kutil.cast.CastUtil.unsafeCast
+import de.bixilon.kutil.collections.CollectionUtil.synchronizedBiMapOf
+import de.bixilon.kutil.collections.map.bi.AbstractMutableBiMap
+import de.bixilon.kutil.watcher.map.bi.BiMapDataWatcher.Companion.watchedBiMap
import de.bixilon.minosoft.config.profile.GlobalProfileManager
import de.bixilon.minosoft.config.profile.ProfileManager
import de.bixilon.minosoft.modding.event.master.GlobalEventMaster
@@ -18,7 +20,7 @@ object ParticleProfileManager : ProfileManager {
override var currentLoadingPath: String? = null
- override val profiles: HashBiMap = HashBiMap.create()
+ override val profiles: AbstractMutableBiMap by watchedBiMap(synchronizedBiMapOf())
override var selected: ParticleProfile = null.unsafeCast()
set(value) {
diff --git a/src/main/java/de/bixilon/minosoft/config/profile/profiles/rendering/RenderingProfileManager.kt b/src/main/java/de/bixilon/minosoft/config/profile/profiles/rendering/RenderingProfileManager.kt
index ee878ab58..28a0cb000 100644
--- a/src/main/java/de/bixilon/minosoft/config/profile/profiles/rendering/RenderingProfileManager.kt
+++ b/src/main/java/de/bixilon/minosoft/config/profile/profiles/rendering/RenderingProfileManager.kt
@@ -1,7 +1,9 @@
package de.bixilon.minosoft.config.profile.profiles.rendering
-import com.google.common.collect.HashBiMap
import de.bixilon.kutil.cast.CastUtil.unsafeCast
+import de.bixilon.kutil.collections.CollectionUtil.synchronizedBiMapOf
+import de.bixilon.kutil.collections.map.bi.AbstractMutableBiMap
+import de.bixilon.kutil.watcher.map.bi.BiMapDataWatcher.Companion.watchedBiMap
import de.bixilon.minosoft.config.profile.GlobalProfileManager
import de.bixilon.minosoft.config.profile.ProfileManager
import de.bixilon.minosoft.modding.event.master.GlobalEventMaster
@@ -18,7 +20,7 @@ object RenderingProfileManager : ProfileManager {
override var currentLoadingPath: String? = null
- override val profiles: HashBiMap = HashBiMap.create()
+ override val profiles: AbstractMutableBiMap by watchedBiMap(synchronizedBiMapOf())
override var selected: RenderingProfile = null.unsafeCast()
set(value) {
diff --git a/src/main/java/de/bixilon/minosoft/config/profile/profiles/resources/ResourcesProfileManager.kt b/src/main/java/de/bixilon/minosoft/config/profile/profiles/resources/ResourcesProfileManager.kt
index 93d307d8c..dfa456d8c 100644
--- a/src/main/java/de/bixilon/minosoft/config/profile/profiles/resources/ResourcesProfileManager.kt
+++ b/src/main/java/de/bixilon/minosoft/config/profile/profiles/resources/ResourcesProfileManager.kt
@@ -1,7 +1,9 @@
package de.bixilon.minosoft.config.profile.profiles.resources
-import com.google.common.collect.HashBiMap
import de.bixilon.kutil.cast.CastUtil.unsafeCast
+import de.bixilon.kutil.collections.CollectionUtil.synchronizedBiMapOf
+import de.bixilon.kutil.collections.map.bi.AbstractMutableBiMap
+import de.bixilon.kutil.watcher.map.bi.BiMapDataWatcher.Companion.watchedBiMap
import de.bixilon.minosoft.config.profile.GlobalProfileManager
import de.bixilon.minosoft.config.profile.ProfileManager
import de.bixilon.minosoft.modding.event.master.GlobalEventMaster
@@ -18,7 +20,7 @@ object ResourcesProfileManager : ProfileManager {
override var currentLoadingPath: String? = null
- override val profiles: HashBiMap = HashBiMap.create()
+ override val profiles: AbstractMutableBiMap by watchedBiMap(synchronizedBiMapOf())
override var selected: ResourcesProfile = null.unsafeCast()
set(value) {
diff --git a/src/main/java/de/bixilon/minosoft/data/world/container/palette/PalettedContainer.kt b/src/main/java/de/bixilon/minosoft/data/world/container/palette/PalettedContainer.kt
index 5a164d694..71cf0c61c 100644
--- a/src/main/java/de/bixilon/minosoft/data/world/container/palette/PalettedContainer.kt
+++ b/src/main/java/de/bixilon/minosoft/data/world/container/palette/PalettedContainer.kt
@@ -13,6 +13,7 @@
package de.bixilon.minosoft.data.world.container.palette
+import de.bixilon.kutil.cast.CastUtil.unsafeCast
import de.bixilon.minosoft.data.world.container.palette.data.PaletteData
import de.bixilon.minosoft.data.world.container.palette.palettes.Palette
@@ -31,6 +32,6 @@ class PalettedContainer(
for (i in array.indices) {
array[i] = palette.get(data.get(i)) as V
}
- return array as Array
+ return array.unsafeCast()
}
}
diff --git a/src/main/java/de/bixilon/minosoft/gui/eros/main/profiles/ProfilesListController.kt b/src/main/java/de/bixilon/minosoft/gui/eros/main/profiles/ProfilesListController.kt
index a8e1da3e6..dc6f35f73 100644
--- a/src/main/java/de/bixilon/minosoft/gui/eros/main/profiles/ProfilesListController.kt
+++ b/src/main/java/de/bixilon/minosoft/gui/eros/main/profiles/ProfilesListController.kt
@@ -29,7 +29,7 @@ import de.bixilon.minosoft.gui.eros.dialog.profiles.ProfileCreateDialog
import de.bixilon.minosoft.gui.eros.util.JavaFXUtil
import de.bixilon.minosoft.gui.eros.util.JavaFXUtil.ctext
import de.bixilon.minosoft.util.KUtil.toResourceLocation
-import de.bixilon.minosoft.util.delegate.JavaFXDelegate.observeMapFX
+import de.bixilon.minosoft.util.delegate.JavaFXDelegate.observeBiMapFX
import javafx.fxml.FXML
import javafx.geometry.HPos
import javafx.geometry.Insets
@@ -75,7 +75,7 @@ class ProfilesListController : EmbeddedJavaFXController() {
}
fun initWatch() {
- profileManager!!::profiles.observeMapFX(this) {
+ profileManager!!::profiles.observeBiMapFX(this) {
profilesListViewFX.items -= it.removes.values()
profilesListViewFX.items += it.adds.values()
profilesListViewFX.refresh()
diff --git a/src/main/java/de/bixilon/minosoft/gui/eros/main/profiles/type/ProfilesTypeCardController.kt b/src/main/java/de/bixilon/minosoft/gui/eros/main/profiles/type/ProfilesTypeCardController.kt
index fd8b1d8ef..2e28f4fb9 100644
--- a/src/main/java/de/bixilon/minosoft/gui/eros/main/profiles/type/ProfilesTypeCardController.kt
+++ b/src/main/java/de/bixilon/minosoft/gui/eros/main/profiles/type/ProfilesTypeCardController.kt
@@ -13,16 +13,22 @@
package de.bixilon.minosoft.gui.eros.main.profiles.type
+import de.bixilon.kutil.cast.CastUtil.unsafeCast
+import de.bixilon.kutil.collections.map.bi.AbstractMutableBiMap
+import de.bixilon.kutil.watcher.map.MapChange
+import de.bixilon.kutil.watcher.map.bi.BiMapDataWatcher.Companion.observeBiMap
import de.bixilon.minosoft.Minosoft
import de.bixilon.minosoft.config.profile.ProfileManager
+import de.bixilon.minosoft.config.profile.profiles.Profile
import de.bixilon.minosoft.gui.eros.card.AbstractCardController
import de.bixilon.minosoft.gui.eros.card.CardFactory
+import de.bixilon.minosoft.gui.eros.util.JavaFXUtil
import de.bixilon.minosoft.gui.eros.util.JavaFXUtil.text
import de.bixilon.minosoft.util.KUtil.toResourceLocation
-import de.bixilon.minosoft.util.delegate.JavaFXDelegate.observeFX
import javafx.fxml.FXML
import javafx.scene.text.TextFlow
import org.kordamp.ikonli.javafx.FontIcon
+import kotlin.reflect.KProperty0
class ProfilesTypeCardController : AbstractCardController>() {
@FXML private lateinit var iconFX: FontIcon
@@ -44,7 +50,7 @@ class ProfilesTypeCardController : AbstractCardController>() {
headerFX.text = Minosoft.LANGUAGE_MANAGER.translate(item.namespace)
recalculate(item)
- item::profiles.observeFX(this) { recalculate(item) } // ToDo: Not a watchable map yet
+ item::profiles.observeBiMapFX(this) { recalculate(item) }
}
private fun recalculate(item: ProfileManager<*>) {
@@ -60,5 +66,10 @@ class ProfilesTypeCardController : AbstractCardController>() {
companion object : CardFactory {
override val LAYOUT = "minosoft:eros/main/profiles/profiles_type_card.fxml".toResourceLocation()
+
+
+ private fun KProperty0>.observeBiMapFX(owner: Any, observer: (MapChange) -> Unit) {
+ this.unsafeCast>>().observeBiMap(owner) { JavaFXUtil.runLater { observer(it) } }
+ }
}
}
diff --git a/src/main/java/de/bixilon/minosoft/util/delegate/JavaFXDelegate.kt b/src/main/java/de/bixilon/minosoft/util/delegate/JavaFXDelegate.kt
index 5befe2578..d63458627 100644
--- a/src/main/java/de/bixilon/minosoft/util/delegate/JavaFXDelegate.kt
+++ b/src/main/java/de/bixilon/minosoft/util/delegate/JavaFXDelegate.kt
@@ -1,10 +1,12 @@
package de.bixilon.minosoft.util.delegate
+import de.bixilon.kutil.collections.map.bi.AbstractBiMap
import de.bixilon.kutil.watcher.DataWatcher.Companion.observe
import de.bixilon.kutil.watcher.list.ListChange
import de.bixilon.kutil.watcher.list.ListDataWatcher.Companion.observeList
import de.bixilon.kutil.watcher.map.MapChange
import de.bixilon.kutil.watcher.map.MapDataWatcher.Companion.observeMap
+import de.bixilon.kutil.watcher.map.bi.BiMapDataWatcher.Companion.observeBiMap
import de.bixilon.kutil.watcher.set.SetChange
import de.bixilon.kutil.watcher.set.SetDataWatcher.Companion.observeSet
import de.bixilon.minosoft.gui.eros.util.JavaFXUtil
@@ -31,4 +33,9 @@ object JavaFXDelegate {
fun KProperty0