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