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/11/22 19:34:57 UTC

[isis] 02/06: ISIS-2348 Add open to Command interface, amend LoginPrompt with nextCommand

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 a2821bc8f348b9add3c227a3423891c8d931a404
Author: Jörg Rade <jo...@kuehne-nagel.com>
AuthorDate: Wed Nov 17 17:49:14 2021 +0100

    ISIS-2348 Add open to Command interface, amend LoginPrompt with nextCommand
---
 .../isis/client/kroviz/core/event/ReplayCommand.kt   | 20 ++++++++++++--------
 .../apache/isis/client/kroviz/ui/core/RoMenuBar.kt   |  2 +-
 .../org/apache/isis/client/kroviz/ui/dialog/About.kt |  5 ++---
 .../isis/client/kroviz/ui/dialog/BrowserWindow.kt    |  2 +-
 .../apache/isis/client/kroviz/ui/dialog/Command.kt   |  4 ++++
 .../isis/client/kroviz/ui/dialog/DiagramDialog.kt    |  4 ++--
 .../isis/client/kroviz/ui/dialog/DownloadDialog.kt   |  2 +-
 .../isis/client/kroviz/ui/dialog/ErrorDialog.kt      |  2 +-
 .../isis/client/kroviz/ui/dialog/EventDialog.kt      |  4 ++--
 .../client/kroviz/ui/dialog/EventExportDialog.kt     |  2 +-
 .../client/kroviz/ui/dialog/EventImportDialog.kt     |  2 +-
 .../isis/client/kroviz/ui/dialog/EventLogDetail.kt   |  2 +-
 .../isis/client/kroviz/ui/dialog/FileDialog.kt       |  2 +-
 .../isis/client/kroviz/ui/dialog/LoginPrompt.kt      | 18 ++++++++++++------
 .../client/kroviz/ui/dialog/NotificationDialog.kt    |  2 +-
 .../apache/isis/client/kroviz/ui/dialog/SvgInline.kt |  2 +-
 .../isis/client/kroviz/ui/dialog/UndefinedDialog.kt  |  2 +-
 17 files changed, 45 insertions(+), 32 deletions(-)

diff --git a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/core/event/ReplayCommand.kt b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/core/event/ReplayCommand.kt
index 04bf437..1a46437 100644
--- a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/core/event/ReplayCommand.kt
+++ b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/core/event/ReplayCommand.kt
@@ -29,25 +29,29 @@ import org.apache.isis.client.kroviz.to.Represention
 import org.apache.isis.client.kroviz.to.TObject
 import org.apache.isis.client.kroviz.ui.core.Constants
 import org.apache.isis.client.kroviz.ui.core.UiManager
+import org.apache.isis.client.kroviz.ui.dialog.Command
 import org.apache.isis.client.kroviz.ui.dialog.ReplayDiffDialog
 
 val AppScope = CoroutineScope(window.asCoroutineDispatcher())
 
-class ReplayCommand {
+class ReplayCommand : Command() {
     private val eventStore = UiManager.getEventStore()
     private val oldBaseUrl = UiManager.getBaseUrl()
+    private var urlUnderTest: String = Constants.demoUrlRemote
+    private var userUnderTest: String = Constants.demoUser
+    private var passUnderTest: String = Constants.demoPass
 
-    fun execute(
-        urlUnderTest: String = Constants.demoUrlRemote,
-        userUnderTest: String = Constants.demoUser,
-        passUnderTest: String = Constants.demoPass
-    ) {
+    fun initUnderTest(url:String, user:String, pass:String) {
+        urlUnderTest = url
+        userUnderTest = user
+        passUnderTest = pass
+    }
+
+    override fun open() {
         val expectedEvents = copyEvents(eventStore.log)
         eventStore.reset()
         main() // re-creates the UI, but keeps the UiManager(singleton/object) and the session
         UiManager.login(urlUnderTest, userUnderTest, passUnderTest)
-        console.log("[RC.execute]")
-        console.log(urlUnderTest)
 
         val uiEvents = filterReplayEvents(expectedEvents)
         replay(uiEvents, urlUnderTest)
diff --git a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/core/RoMenuBar.kt b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/core/RoMenuBar.kt
index a6043b5..cb11e4d 100644
--- a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/core/RoMenuBar.kt
+++ b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/core/RoMenuBar.kt
@@ -121,7 +121,7 @@ class RoMenuBar : SimplePanel() {
 
         val aboutTitle = "About"
         mainMenu.add(
-            buildMenuEntry(aboutTitle, "Info", { UiManager.add(aboutTitle, About().open()) })
+            buildMenuEntry(aboutTitle, "Info", { UiManager.add(aboutTitle, About().dialog) })
         )
 
         return mainMenu
diff --git a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/dialog/About.kt b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/dialog/About.kt
index 216e3cf..2885f91 100644
--- a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/dialog/About.kt
+++ b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/dialog/About.kt
@@ -25,13 +25,12 @@ import org.apache.isis.client.kroviz.ui.core.RoDialog
 import org.apache.isis.client.kroviz.utils.UUID
 
 class About : Command() {
-    private var dialog: RoDialog
+    var dialog: RoDialog
     private val formItems = mutableListOf<FormItem>()
     private val _LI = "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum."
 
-    fun open() : RoDialog {
+    override fun open()  {
         dialog.open()
-        return dialog
     }
 
     init {
diff --git a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/dialog/BrowserWindow.kt b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/dialog/BrowserWindow.kt
index cb17990..8910240 100644
--- a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/dialog/BrowserWindow.kt
+++ b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/dialog/BrowserWindow.kt
@@ -24,7 +24,7 @@ import org.apache.isis.client.kroviz.ui.core.RoDialog
 
 class BrowserWindow(val url: String) : Command() {
 
-    fun open() {
+    override fun open() {
         val formItems = mutableListOf<FormItem>()
         formItems.add(FormItem("URL", ValueType.IFRAME, url))
         RoDialog(
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 dea42e8..0daaad9 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
@@ -28,6 +28,10 @@ abstract class Command {
         // subclass responsibility
     }
 
+    open fun open() {
+        // subclass responsibility
+    }
+
     fun invoke(link: Link) {
         ResourceProxy().fetch(link, ActionDispatcher())
     }
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 4c7bf1a..623994d 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
@@ -35,7 +35,7 @@ class DiagramDialog(
     private var dialog: RoDialog
     private val formItems = mutableListOf<FormItem>()
 
-    fun open() {
+    override fun open() {
         dialog.open()
         UmlUtils.generateJsonDiagram(pumlCode, callBack)
     }
@@ -81,7 +81,7 @@ class DiagramDialog(
         DomUtil.replaceWith(callBack as UUID, svg)
     }
 
-    fun buildMenu(): List<KvisionHtmlLink> {
+    private fun buildMenu(): List<KvisionHtmlLink> {
         val menu = mutableListOf<KvisionHtmlLink>()
         menu.add(buildPinAction())
         menu.add(buildDownloadAction())
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 75b689c..043fb92 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
@@ -29,7 +29,7 @@ class DownloadDialog(val fileName:String, val content:String) : Command() {
     private lateinit var form: RoDialog
     val formItems = mutableListOf<FormItem>()
 
-    fun open() {
+    override fun open() {
         formItems.add(FormItem("Preview", ValueType.TEXT_AREA, content, 15))
         form = RoDialog(caption = "Download: $fileName", items = formItems, command = this)
         form.open()
diff --git a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/dialog/ErrorDialog.kt b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/dialog/ErrorDialog.kt
index adf7658..0c6a77f 100644
--- a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/dialog/ErrorDialog.kt
+++ b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/dialog/ErrorDialog.kt
@@ -26,7 +26,7 @@ import org.apache.isis.client.kroviz.ui.core.RoDialog
 
 class ErrorDialog(val logEntry: LogEntry) : Command() {
 
-    fun open() {
+    override fun open() {
         val error = logEntry.getTransferObject() as HttpErrorResponse
         val formItems = mutableListOf<FormItem>()
         formItems.add(FormItem("URL", ValueType.TEXT, logEntry.url))
diff --git a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/dialog/EventDialog.kt b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/dialog/EventDialog.kt
index 712c6fc..887d78c 100644
--- a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/dialog/EventDialog.kt
+++ b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/dialog/EventDialog.kt
@@ -84,7 +84,7 @@ class EventDialog() : Command() {
                 dialog.close()
             }
             action == REP -> {
-                ReplayCommand().execute()
+                LoginPrompt(ReplayCommand()).open()
                 dialog.close()
             }
             else -> {
@@ -92,7 +92,7 @@ class EventDialog() : Command() {
         }
     }
 
-    fun open() {
+    override fun open() {
         dialog.open()
     }
 
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 9f56227..365fdaf 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
@@ -120,7 +120,7 @@ class EventExportDialog() : Command() {
         }
     }
 
-    fun open() {
+    override fun open() {
         val format = mutableListOf<StringPair>()
         format.add(StringPair("CSV", "CSV"))
         format.add(StringPair("JSON", "JSON"))
diff --git a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/dialog/EventImportDialog.kt b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/dialog/EventImportDialog.kt
index 52fe9a9..0ae1366 100644
--- a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/dialog/EventImportDialog.kt
+++ b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/dialog/EventImportDialog.kt
@@ -120,7 +120,7 @@ class EventImportDialog() : Command() {
         }
     }
 
-    fun open() {
+    override fun open() {
         val format = mutableListOf<StringPair>()
         format.add(StringPair("CSV", "CSV"))
         format.add(StringPair("JSON", "JSON"))
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 1c5ed95..8002a38 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
@@ -49,7 +49,7 @@ class EventLogDetail(val logEntryFromTabulator: LogEntry) : Command() {
     private val LNK: String = "lnk"
     private val DPM: String = "dpm"
 
-    fun open() {
+    override fun open() {
         val responseStr = if (logEntry.subType == Constants.subTypeJson) {
             StringUtils.format(logEntry.response)
         } else {
diff --git a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/dialog/FileDialog.kt b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/dialog/FileDialog.kt
index d566d3a..5f4bb3a 100644
--- a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/dialog/FileDialog.kt
+++ b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/dialog/FileDialog.kt
@@ -26,7 +26,7 @@ import org.apache.isis.client.kroviz.ui.core.RoDialog
 
 class FileDialog(val logEntry: LogEntry) : Command() {
 
-    fun open() {
+    override fun open() {
         val rv = logEntry.getTransferObject() as ResultValue
         val rvr = rv.result!!
         val value = rvr.value!!.content as String
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 8a3b12f..b55e5f8 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
@@ -22,6 +22,7 @@ import io.kvision.core.StringPair
 import io.kvision.form.select.SimpleSelect
 import io.kvision.form.text.Password
 import io.kvision.form.text.Text
+import org.apache.isis.client.kroviz.core.event.ReplayCommand
 import org.apache.isis.client.kroviz.to.Link
 import org.apache.isis.client.kroviz.to.ValueType
 import org.apache.isis.client.kroviz.ui.core.Constants
@@ -29,7 +30,7 @@ import org.apache.isis.client.kroviz.ui.core.FormItem
 import org.apache.isis.client.kroviz.ui.core.RoDialog
 import org.apache.isis.client.kroviz.ui.core.UiManager
 
-class LoginPrompt : Command() {
+class LoginPrompt(val nextCommand: Command? = null) : Command() {
 
     private lateinit var form: RoDialog
 
@@ -38,7 +39,7 @@ class LoginPrompt : Command() {
     private var username = Constants.demoUser
     private var password = Constants.demoPass
 
-    fun open() {
+    override fun open() {
         val formItems = mutableListOf<FormItem>()
         val urlList = mutableListOf<StringPair>()
         urlList.add(StringPair(Constants.demoUrl, Constants.demoUrl))
@@ -53,10 +54,15 @@ class LoginPrompt : Command() {
 
     override fun execute(action: String?) {
         extractUserInput()
-        UiManager.login(url, username, password)
-        val link = Link(href = url + Constants.restInfix)
-        invoke(link)
-        UiManager.closeDialog(form)
+        if (nextCommand is ReplayCommand) {
+            nextCommand.initUnderTest(url, username, password)
+            nextCommand.open()
+        } else {
+            UiManager.login(url, username, password)
+            val link = Link(href = url + Constants.restInfix)
+            invoke(link)
+            UiManager.closeDialog(form)
+        }
     }
 
     private fun extractUserInput() {
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 ab2d562..bde8185 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
@@ -26,7 +26,7 @@ import org.apache.isis.client.kroviz.ui.core.UiManager
 
 class NotificationDialog(val message: String) : Command() {
 
-    fun open() {
+    override fun open() {
         val formItems = mutableListOf<FormItem>()
         val fi = FormItem("Message", ValueType.TEXT_AREA, message, size = 5)
         fi.readOnly = true
diff --git a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/dialog/SvgInline.kt b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/dialog/SvgInline.kt
index 2aab0f5..1343af8 100644
--- a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/dialog/SvgInline.kt
+++ b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/dialog/SvgInline.kt
@@ -32,7 +32,7 @@ class SvgInline : Command() {
     private var dialog: RoDialog
     private val formItems = mutableListOf<FormItem>()
 
-    fun open() {
+    override fun open() {
         dialog.open()
     }
 
diff --git a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/dialog/UndefinedDialog.kt b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/dialog/UndefinedDialog.kt
index d29c7ab..f362aa2 100644
--- a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/dialog/UndefinedDialog.kt
+++ b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/dialog/UndefinedDialog.kt
@@ -33,7 +33,7 @@ class UndefinedDialog(val logEntry: LogEntry) : Command() {
 4. Implement a Handler under main/kotlin/org.ro.handler
 5. Amend main/kotlin/org.ro.handler/ResponseHandler by this new Handler"""
 
-    fun open() {
+    override fun open() {
         val formItems = mutableListOf<FormItem>()
         formItems.add(FormItem("Instructions", ValueType.TEXT_AREA, instruction, size = 7))
         formItems.add(FormItem("URL", ValueType.TEXT, logEntry.url))