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 <[email protected]> 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() + } + }
