You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@isis.apache.org by jo...@apache.org on 2021/10/22 16:01:01 UTC
[isis] 03/03: ISIS-2348 set cursor shape to indicate system activity
This is an automated email from the ASF dual-hosted git repository.
joergrade pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/isis.git
commit bc28a29d4cd1afc341f1895a76cd300af32b6ffd
Author: Jörg Rade <jo...@kuehne-nagel.com>
AuthorDate: Fri Oct 22 17:59:56 2021 +0200
ISIS-2348 set cursor shape to indicate system activity
---
.../apache/isis/client/kroviz/core/event/LogEntry.kt | 5 +++++
.../isis/client/kroviz/core/event/ResourceProxy.kt | 5 ++---
.../apache/isis/client/kroviz/ui/core/UiManager.kt | 19 +++++++++++++++++++
3 files changed, 26 insertions(+), 3 deletions(-)
diff --git a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/core/event/LogEntry.kt b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/core/event/LogEntry.kt
index 09e57ac..0aca7f4 100644
--- a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/core/event/LogEntry.kt
+++ b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/core/event/LogEntry.kt
@@ -22,12 +22,14 @@ import io.kvision.html.ButtonStyle
import io.kvision.panel.SimplePanel
import kotlinx.serialization.Contextual
import kotlinx.serialization.Serializable
+import org.apache.isis.client.kroviz.core.aggregator.ActionDispatcher
import org.apache.isis.client.kroviz.core.aggregator.BaseAggregator
import org.apache.isis.client.kroviz.to.HasLinks
import org.apache.isis.client.kroviz.to.Link
import org.apache.isis.client.kroviz.to.Relation
import org.apache.isis.client.kroviz.to.TransferObject
import org.apache.isis.client.kroviz.ui.core.Constants
+import org.apache.isis.client.kroviz.ui.core.UiManager
import org.w3c.files.Blob
import kotlin.js.Date
@@ -232,6 +234,9 @@ data class LogEntry(
}
fun addAggregator(aggregator: BaseAggregator) {
+ if (aggregator is ActionDispatcher) {
+ UiManager.setBusyCursor()
+ }
aggregators.add(aggregator)
nOfAggregators = aggregators.size
}
diff --git a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/core/event/ResourceProxy.kt b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/core/event/ResourceProxy.kt
index aeb5f2d..0ef46f7 100644
--- a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/core/event/ResourceProxy.kt
+++ b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/core/event/ResourceProxy.kt
@@ -46,12 +46,11 @@ class ResourceProxy {
fun load(tObject: TObject) {
val aggregator = ObjectAggregator(tObject.title)
// ASSUMPTION: there can be max one LogEntry for an Object
- val es = UiManager.getEventStore()
- val le = es.findBy(tObject)
+ val le = UiManager.getEventStore().findBy(tObject)
if (le != null) {
le.addAggregator(aggregator)
aggregator.update(le, le.subType)
- es.addUserAction(aggregator, tObject)
+ UiManager.performUserAction(aggregator, tObject)
}
}
diff --git a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/core/UiManager.kt b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/core/UiManager.kt
index d6f9ac7..395c603 100644
--- a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/core/UiManager.kt
+++ b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/core/UiManager.kt
@@ -22,6 +22,7 @@ import io.kvision.core.Widget
import io.kvision.dropdown.ContextMenu
import io.kvision.panel.SimplePanel
import io.kvision.utils.ESC_KEY
+import kotlinx.browser.document
import kotlinx.browser.window
import org.apache.isis.client.kroviz.App
import org.apache.isis.client.kroviz.core.Session
@@ -32,6 +33,7 @@ import org.apache.isis.client.kroviz.core.event.EventStore
import org.apache.isis.client.kroviz.core.event.LogEntry
import org.apache.isis.client.kroviz.core.model.CollectionDM
import org.apache.isis.client.kroviz.core.model.ObjectDM
+import org.apache.isis.client.kroviz.to.TObject
import org.apache.isis.client.kroviz.to.ValueType
import org.apache.isis.client.kroviz.to.mb.Menubars
import org.apache.isis.client.kroviz.ui.kv.override.RoTab
@@ -138,6 +140,7 @@ object UiManager {
fun amendMenu(menuBars: Menubars) {
getRoApp().roMenuBar.amendMenu(menuBars)
+ setNormalCursor()
}
fun updateStatus(entry: LogEntry) {
@@ -148,12 +151,21 @@ object UiManager {
getRoStatusBar().updateUser(user)
}
+ fun setBusyCursor() {
+ document.body?.style?.cursor = "progress"
+ }
+
+ fun setNormalCursor() {
+ document.body?.style?.cursor = "default"
+ }
+
fun openCollectionView(aggregator: BaseAggregator) {
val displayable = aggregator.dpm
val title: String = StringUtils.extractTitle(displayable.title)
val panel = RoTable(displayable as CollectionDM)
add(title, panel, aggregator)
displayable.isRendered = true
+ setNormalCursor()
}
fun openObjectView(aggregator: ObjectAggregator) {
@@ -165,6 +177,7 @@ object UiManager {
val panel = RoDisplay(dm)
add(title, panel, aggregator)
dm.isRendered = true
+ setNormalCursor()
}
fun openDialog(panel: RoDialog) {
@@ -229,4 +242,10 @@ object UiManager {
}
}
+ fun performUserAction(aggregator: BaseAggregator, obj: TObject) {
+ setBusyCursor()
+ getEventStore().addUserAction(aggregator, obj)
+ setNormalCursor()
+ }
+
}