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/05/31 15:58:00 UTC

[isis] 03/04: ISIS-2505 Button added to FormPanelFactory, name of action to be executed added to FormItem

This is an automated email from the ASF dual-hosted git repository.

joergrade pushed a commit to branch ISIS-2505_Catch_Up_With_Demo_Examples
in repository https://gitbox.apache.org/repos/asf/isis.git

commit 9ced037c7e82927d7783dd46ab2dd88ff6fb3862
Author: Jörg Rade <jo...@kuehne-nagel.com>
AuthorDate: Mon May 31 09:54:07 2021 +0200

    ISIS-2505 Button added to FormPanelFactory, name of action to be executed added to FormItem
---
 .../org/apache/isis/client/kroviz/to/TypeMapper.kt  |  1 +
 .../apache/isis/client/kroviz/ui/core/FormItem.kt   |  3 ++-
 .../isis/client/kroviz/ui/core/FormPanelFactory.kt  | 15 +++++++++++++++
 .../isis/client/kroviz/ui/dialog/ActionPrompt.kt    |  2 +-
 .../apache/isis/client/kroviz/ui/dialog/Command.kt  |  2 +-
 .../isis/client/kroviz/ui/dialog/DiagramDialog.kt   |  2 +-
 .../isis/client/kroviz/ui/dialog/DownloadDialog.kt  |  2 +-
 .../client/kroviz/ui/dialog/EventExportDialog.kt    |  2 +-
 .../isis/client/kroviz/ui/dialog/EventLogDetail.kt  | 21 ++++++++++++++++++---
 .../isis/client/kroviz/ui/dialog/LoginPrompt.kt     |  2 +-
 .../client/kroviz/ui/dialog/NotificationDialog.kt   |  2 +-
 11 files changed, 43 insertions(+), 11 deletions(-)

diff --git a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/to/TypeMapper.kt b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/to/TypeMapper.kt
index a366edf..130207f 100644
--- a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/to/TypeMapper.kt
+++ b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/to/TypeMapper.kt
@@ -21,6 +21,7 @@ package org.apache.isis.client.kroviz.to
 import org.apache.isis.client.kroviz.utils.XmlHelper
 
 enum class ValueType(val type: String) {
+    BUTTON("Button"),
     BOOLEAN("Boolean"),
     DATE("Date"),
     HTML("Html"),
diff --git a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/core/FormItem.kt b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/core/FormItem.kt
index f4ec776..5644605 100644
--- a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/core/FormItem.kt
+++ b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/core/FormItem.kt
@@ -29,7 +29,8 @@ class FormItem(
         val description: String? = "not set",
         val member: Member? = null,
         var dspl: Displayable? = null,
-        var callBack: Any? = null) {
+        var callBack: Any? = null,
+        var callBackAction: String? = null) {
 
     private var originalContent: Any? = content
     var readOnly = false
diff --git a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/core/FormPanelFactory.kt b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/core/FormPanelFactory.kt
index d93a3c0..6181f8a 100644
--- a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/core/FormPanelFactory.kt
+++ b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/core/FormPanelFactory.kt
@@ -33,6 +33,7 @@ import io.kvision.form.text.Text
 import io.kvision.form.text.TextArea
 import io.kvision.form.time.DateTime
 import io.kvision.form.time.dateTime
+import io.kvision.html.Button
 import io.kvision.html.Div
 import io.kvision.html.Iframe
 import io.kvision.html.Image
@@ -42,8 +43,11 @@ import io.kvision.utils.auto
 import io.kvision.utils.perc
 import io.kvision.utils.px
 import org.apache.isis.client.kroviz.to.ValueType
+import org.apache.isis.client.kroviz.ui.dialog.Command
+import org.apache.isis.client.kroviz.ui.dialog.EventLogDetail
 import org.apache.isis.client.kroviz.ui.panel.SvgPanel
 import org.apache.isis.client.kroviz.utils.DateHelper
+import org.apache.isis.client.kroviz.utils.IconManager
 import org.apache.isis.client.kroviz.utils.UUID
 
 class FormPanelFactory(items: List<FormItem>) : VPanel() {
@@ -70,11 +74,22 @@ class FormPanelFactory(items: List<FormItem>) : VPanel() {
                     ValueType.IFRAME -> add(createIFrame(fi))
                     ValueType.SVG_INLINE -> add(createSvgInline(fi))
                     ValueType.SVG_MAPPED -> add(createSvgMap(fi))
+                    ValueType.BUTTON -> add(createButton(fi))
                 }
             }
         }
     }
 
+    private fun createButton(fi: FormItem): Button {
+        val item = Button(text = fi.label, icon = IconManager.find(fi.label))
+        val obj = fi.callBack!! as Command
+        val action = fi.callBackAction
+        item.onClick {
+            obj.execute(action)
+        }
+        return item
+    }
+
     private fun createBoolean(fi: FormItem): Component {
         if (fi.content == "true") {
             return CheckBox(label = fi.label, value = true)
diff --git a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/dialog/ActionPrompt.kt b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/dialog/ActionPrompt.kt
index 26353fa..c177e54 100644
--- a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/dialog/ActionPrompt.kt
+++ b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/dialog/ActionPrompt.kt
@@ -43,7 +43,7 @@ class ActionPrompt(val action: Action) : Command() {
         form.open(at)
     }
 
-    override fun execute() {
+    override fun execute(action:String?) {
         val l = extractUserInput()
         invoke(l)
     }
diff --git a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/dialog/Command.kt b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/dialog/Command.kt
index a1ec9bb..a315cef 100644
--- a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/dialog/Command.kt
+++ b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/dialog/Command.kt
@@ -24,7 +24,7 @@ import org.apache.isis.client.kroviz.to.Link
 
 abstract class Command {
 
-    open fun execute() {
+    open fun execute(action: String? = null) {
         // subclass responsibility
     }
 
diff --git a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/dialog/DiagramDialog.kt b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/dialog/DiagramDialog.kt
index 919b34e..02eb6f5 100644
--- a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/dialog/DiagramDialog.kt
+++ b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/dialog/DiagramDialog.kt
@@ -55,7 +55,7 @@ class DiagramDialog(
         )
     }
 
-    override fun execute() {
+    override fun execute(action:String?) {
         pin()
     }
 
diff --git a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/dialog/DownloadDialog.kt b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/dialog/DownloadDialog.kt
index 9e38e2a..75b689c 100644
--- a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/dialog/DownloadDialog.kt
+++ b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/dialog/DownloadDialog.kt
@@ -35,7 +35,7 @@ class DownloadDialog(val fileName:String, val content:String) : Command() {
         form.open()
     }
 
-    override fun execute() {
+    override fun execute(action:String?) {
         DomUtil.download(fileName, content)
     }
 
diff --git a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/dialog/EventExportDialog.kt b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/dialog/EventExportDialog.kt
index 54f5c95..1ff4ee8 100644
--- a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/dialog/EventExportDialog.kt
+++ b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/dialog/EventExportDialog.kt
@@ -47,7 +47,7 @@ class EventExportDialog() : Command() {
         }
     }
 
-    override fun execute() {
+    override fun execute(action:String?) {
         val filter = extractUserInput("Filter")
         var fileName = ""
         when (filter) {
diff --git a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/dialog/EventLogDetail.kt b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/dialog/EventLogDetail.kt
index a9d445b..4047871 100644
--- a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/dialog/EventLogDetail.kt
+++ b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/dialog/EventLogDetail.kt
@@ -31,6 +31,8 @@ import org.apache.isis.client.kroviz.utils.XmlHelper
 
 class EventLogDetail(val logEntry: LogEntry) : Command() {
 
+    private val LOG: String = "log"
+
     fun open() {
         val formItems = mutableListOf<FormItem>()
 
@@ -50,6 +52,8 @@ class EventLogDetail(val logEntry: LogEntry) : Command() {
         }
         formItems.add(FormItem("Aggregators", ValueType.TEXT_AREA, aggtStr, 5))
 
+        formItems.add(FormItem("Console", ValueType.BUTTON, null, callBack = this, callBackAction = LOG))
+
         RoDialog(
                 caption = "Details :" + logEntry.title,
                 items = formItems,
@@ -58,7 +62,20 @@ class EventLogDetail(val logEntry: LogEntry) : Command() {
                 widthPerc = 60).open()
     }
 
-    override fun execute() {
+    override fun execute(action: String?) {
+        when {
+            action.isNullOrEmpty() -> defaultAction()
+            action == LOG -> {
+                console.log(logEntry)
+            }
+            else -> {
+                console.log(logEntry)
+                console.log("Action not defined yet: " + action)
+            }
+        }
+    }
+
+    private fun defaultAction() {
         val str = logEntry.response
         val pumlCode = when {
             str.startsWith("<") -> {
@@ -69,8 +86,6 @@ class EventLogDetail(val logEntry: LogEntry) : Command() {
                 JsonDiagram.build(str)
             else -> "{}"
         }
-        console.log("[ELD.execute]")
-        console.log(pumlCode)
         DiagramDialog("Response Diagram", pumlCode).open()
     }
 
diff --git a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/dialog/LoginPrompt.kt b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/dialog/LoginPrompt.kt
index c7d87da..c2ed9f6 100644
--- a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/dialog/LoginPrompt.kt
+++ b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/dialog/LoginPrompt.kt
@@ -46,7 +46,7 @@ class LoginPrompt : Command() {
         form.open(at)
     }
 
-    override fun execute() {
+    override fun execute(action:String?) {
         extractUserInput()
         UiManager.login(url, username, password)
         val link = Link(href = url + "restful/")
diff --git a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/dialog/NotificationDialog.kt b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/dialog/NotificationDialog.kt
index 9ad3793..bb4ff37 100644
--- a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/dialog/NotificationDialog.kt
+++ b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/dialog/NotificationDialog.kt
@@ -38,7 +38,7 @@ class NotificationDialog(val message: String) : Command() {
                 widthPerc = 80).open()
     }
 
-    override fun execute() {
+    override fun execute(action: String?) {
         RoStatusBar.acknowledge()
     }