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()
+    }
+
 }