From f4543919e5e394be6ede4475e6bce4cf84d0d864 Mon Sep 17 00:00:00 2001 From: DBotThePony Date: Sun, 25 Feb 2024 01:57:44 +0700 Subject: [PATCH] ListenableMap and ListenableSet runnable callback --- gradle.properties | 2 +- .../kommons/collect/ListenableMap.kt | 18 ++++++++++++++++++ .../kommons/collect/ListenableSet.kt | 18 ++++++++++++++++++ 3 files changed, 37 insertions(+), 1 deletion(-) diff --git a/gradle.properties b/gradle.properties index c4191ac..27a925b 100644 --- a/gradle.properties +++ b/gradle.properties @@ -4,7 +4,7 @@ kotlin.code.style=official specifyKotlinAsDependency=false projectGroup=ru.dbotthepony.kommons -projectVersion=2.9.3 +projectVersion=2.9.4 guavaDepVersion=33.0.0 gsonDepVersion=2.8.9 diff --git a/src/main/kotlin/ru/dbotthepony/kommons/collect/ListenableMap.kt b/src/main/kotlin/ru/dbotthepony/kommons/collect/ListenableMap.kt index 5d3eebd..ad9facf 100644 --- a/src/main/kotlin/ru/dbotthepony/kommons/collect/ListenableMap.kt +++ b/src/main/kotlin/ru/dbotthepony/kommons/collect/ListenableMap.kt @@ -13,6 +13,20 @@ open class ListenableMap(protected val backingMap: MutableMap = Hash fun onValueRemoved(key: K, value: V) } + data class RunnableAdapter(private val parent: Runnable) : MapListener { + override fun onClear() { + parent.run() + } + + override fun onValueAdded(key: K, value: V) { + parent.run() + } + + override fun onValueRemoved(key: K, value: V) { + parent.run() + } + } + protected open fun onClear() { listeners.forEach { it.callback.onClear() } } @@ -41,6 +55,10 @@ open class ListenableMap(protected val backingMap: MutableMap = Hash return Listener(listener) } + fun addListener(listener: Runnable): Listenable.L { + return Listener(RunnableAdapter(listener)) + } + fun clearListeners() { listeners.clear() } diff --git a/src/main/kotlin/ru/dbotthepony/kommons/collect/ListenableSet.kt b/src/main/kotlin/ru/dbotthepony/kommons/collect/ListenableSet.kt index 9f52af3..7c9970d 100644 --- a/src/main/kotlin/ru/dbotthepony/kommons/collect/ListenableSet.kt +++ b/src/main/kotlin/ru/dbotthepony/kommons/collect/ListenableSet.kt @@ -13,6 +13,20 @@ open class ListenableSet(protected val backingSet: MutableSet) : MutableSe fun onValueRemoved(element: E) } + data class RunnableAdapter(private val parent: Runnable) : SetListener { + override fun onClear() { + parent.run() + } + + override fun onValueAdded(element: E) { + parent.run() + } + + override fun onValueRemoved(element: E) { + parent.run() + } + } + protected open fun onClear() { listeners.forEach { it.callback.onClear() } } @@ -41,6 +55,10 @@ open class ListenableSet(protected val backingSet: MutableSet) : MutableSe return Listener(listener) } + fun addListener(listener: Runnable): Listenable.L { + return Listener(RunnableAdapter(listener)) + } + fun clearListeners() { listeners.clear() }