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/09/12 05:29:51 UTC

[isis] branch master updated (93184f0 -> 1cb2f7a)

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

joergrade pushed a change to branch master
in repository https://gitbox.apache.org/repos/asf/isis.git.


    from 93184f0  ISIS-2870: prepare for prism 1.24.1
     new fa9defe  ISIS-2846 link tree diagram / further clean up
     new 999d2e1  ISIS-2846 UI clean up
     new 879a6ff  ISIS-2355 Convert object to JSON and vizualize as well
     new 1cb2f7a  Merge remote-tracking branch 'origin/master'

The 4 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 incubator/clients/kroviz/build.gradle.kts          |  1 +
 .../apache/isis/client/kroviz/ui/core/RoDialog.kt  | 17 +++++++++-
 .../isis/client/kroviz/ui/diagram/PumlCode.kt      | 18 +++++------
 .../isis/client/kroviz/ui/dialog/DiagramDialog.kt  |  2 +-
 .../isis/client/kroviz/ui/dialog/EventLogDetail.kt | 37 ++++++++++++++++++----
 .../isis/client/kroviz/ui/panel/EventLogTable.kt   |  4 ++-
 .../kroviz/utils/{XmlToJson.kt => Flatted.kt}      |  6 ++--
 7 files changed, 64 insertions(+), 21 deletions(-)
 copy incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/utils/{XmlToJson.kt => Flatted.kt} (90%)

[isis] 01/04: ISIS-2846 link tree diagram / further clean up

Posted by jo...@apache.org.
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 fa9defedb226a7409a213d30178c2a658371b2cc
Author: Jörg Rade <jo...@kuehne-nagel.com>
AuthorDate: Fri Sep 10 13:07:56 2021 +0200

    ISIS-2846 link tree diagram / further clean up
---
 .../apache/isis/client/kroviz/ui/diagram/PumlCode.kt   | 18 +++++++++---------
 1 file changed, 9 insertions(+), 9 deletions(-)

diff --git a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/diagram/PumlCode.kt b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/diagram/PumlCode.kt
index ebc57e6..dc99777 100644
--- a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/diagram/PumlCode.kt
+++ b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/diagram/PumlCode.kt
@@ -35,7 +35,7 @@ class PumlCode() {
     }
 
     fun addStereotype(s: String): PumlCode {
-        var result = "<<" + s + ">>"
+        var result = "<<$s>>"
         result = italic(result)
         result = center(result)
         code += result + NL
@@ -43,39 +43,39 @@ class PumlCode() {
     }
 
     fun addLink(url: String, title: String): PumlCode {
-        var result = "[[" + url + " "+ title + "]]"
+        var result = "[[$url $title]]"
         result = bold(result)
         code += result + NL
         return this
     }
 
     fun addClass(s: String): PumlCode {
-        val result = underline("(C) "+ s)
+        val result = underline("(C) $s")
         code += result + NL
         return this
     }
 
     fun toMindmap(): PumlCode {
-        code += "@startmindmap$NL" + code + "@endmindmap$NL"
+        code += "@startmindmap$NL$code@endmindmap$NL"
         return this
     }
 
     fun toMindmapNode(level:Int): PumlCode {
         val depth = "*".repeat(level)
-        code = depth + ":" + code + ";" + NL
+        code = "$depth:$code;$NL"
         return this
     }
 
     private fun center(s: String): String {
-        return ".." + s + ".."
+        return "..$s.."
     }
 
     private fun italic(s: String): String {
-        return "//" + s + "//"
+        return "//$s//"
     }
 
     private fun bold(s: String): String {
-        return "**" + s + "**"
+        return "**$s**"
     }
 
     private fun underline(s: String): String {
@@ -83,7 +83,7 @@ class PumlCode() {
     }
 
     fun addHorizontalLine(): PumlCode {
-        code += "----" + NL
+        code += "----$NL"
         return this
     }
 

[isis] 04/04: Merge remote-tracking branch 'origin/master'

Posted by jo...@apache.org.
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 1cb2f7a73a9ea8eec170fd745789cfcfbb24ec21
Merge: 879a6ff 93184f0
Author: Jörg Rade <jo...@kuehne-nagel.com>
AuthorDate: Sun Sep 12 07:29:39 2021 +0200

    Merge remote-tracking branch 'origin/master'

 .../exceprecog/ExceptionRecognizerAbstract.java    |  25 ++-
 .../commons/internal/ioc/_IocContainer_Spring.java |  18 +-
 .../isis/core/metamodel/facets/ActionSupport.java  |  44 ++--
 .../isis/core/metamodel/facets/Evaluators.java     |   5 +-
 .../core/metamodel/facets/ParameterSupport.java    |  76 +++----
 ...tedFacetAnnotationElseConfigurationFactory.java |  12 +-
 .../annotation/TitleFacetViaTitleAnnotation.java   |   7 +-
 ...ParameterAutoCompleteFacetViaMethodFactory.java |   3 +-
 .../core/metamodel/spec/ObjectSpecification.java   |   2 +
 .../metamodel/spec/feature/ObjectAssociation.java  |  25 ---
 .../spec/feature/ObjectAssociationContainer.java   |  12 +-
 .../core/metamodel/spec/feature/ObjectFeature.java |  55 +++++
 .../specimpl/ObjectActionParameterAbstract.java    |  19 +-
 .../specimpl/ObjectAssociationAbstract.java        |  28 ---
 .../specloader/specimpl/ObjectMemberAbstract.java  |  27 +++
 .../specimpl/dflt/ObjectSpecificationDefault.java  |  15 ++
 .../specimpl/dflt/_PropertiesAsColumns.java        | 215 +++++---------------
 .../testspec/ObjectSpecificationStub.java          |  22 ++
 .../handlers/DomainObjectInvocationHandler.java    |  16 +-
 .../manager/AuthenticationManager.java             |  18 +-
 .../dom/_infra/LibraryPreloadingService.java       |   2 +-
 .../javalang/strings/vm/JavaLangStringVm.java      |   2 +-
 .../common/ui/custom/WhereInTheWorldPanel.java     |   2 +-
 .../ui/custom/WhereInTheWorldPanelFactory.java     |   2 +-
 .../authenticator/AuthenticatorSecman.java         |   4 +-
 .../TableColumnVisibilityServiceForSecman.java     |   5 +-
 .../userreg/UserRegistrationServiceForSecman.java  |   5 +-
 .../CollectionContentsAsExcelFactory.java          |   2 +-
 .../ui/components/ExcelFileModel.java              |  15 +-
 .../CalendaredCollectionFactoryAbstract.java       |   2 +-
 .../PdfJsViewerPanelComponentFactory.java          |   2 +-
 .../jpa/applib/integration/IsisEntityListener.java |   3 +-
 .../tooling/javamodel/ast/TypeDeclarations.java    |   3 +-
 .../asciidoc/applib/jaxb/AsciiDocJaxbAdapter.java  |  10 +-
 .../isis/valuetypes/asciidoc/applib/ui/Prism.java  |  27 +--
 .../valuetypes/asciidoc/applib/value/AsciiDoc.java |  41 ++--
 .../asciidoc/applib/value/Converter.java           |   7 +-
 .../metamodel/IsisModuleValAsciidocMetaModel.java  |   2 +-
 .../asciidoc/ui/vaa/components/PrismResources.java |   7 +-
 .../css/{prism1.20.css => prism1.20-default.css}   |   0
 .../resources/static/prism/css/prism1.24.1-coy.css | 221 +++++++++++++++++++++
 .../static/prism/css/prism1.24.1-default.css}      |   5 +-
 .../main/resources/static/prism/js/prism1.24.1.js  |  13 ++
 .../ui/wkt/components/prism/PrismResources.java    |   9 +-
 .../css/{prism1.20.css => prism1.20-default.css}   |   0
 .../wkt/components/prism/css/prism1.24.1-coy.css   | 221 +++++++++++++++++++++
 .../css/{prism1.20.css => prism1.24.1-default.css} |   5 +-
 .../ui/wkt/components/prism/js/prism1.24.1.js      |  13 ++
 .../common/model/components}/ComponentType.java    |  26 +--
 .../AbstractTypeFeatureReprRenderer.java           |  23 ++-
 .../wicket/model/models/ActionArgumentCache.java   |  14 +-
 .../wicket/model/models/BookmarkTreeNode.java      |  21 +-
 .../isis/viewer/wicket/ui/ComponentFactory.java    |   1 +
 .../viewer/wicket/ui/ComponentFactoryAbstract.java |  37 ++--
 .../ui/app/registry/ComponentFactoryRegistrar.java |   2 +-
 .../ui/app/registry/ComponentFactoryRegistry.java  |   2 +-
 .../ui/components/about/AboutPanelFactory.java     |   2 +-
 .../actioninfo/ActionInfoPanelFactory.java         |   2 +-
 .../serviceactions/ServiceActionsPanelFactory.java |   2 +-
 .../serviceactions/TertiaryMenuPanelFactory.java   |   2 +-
 .../actionprompt/ActionPromptHeaderPanel.java      |   2 +-
 .../components/actions/ActionParametersForm.java   |   2 +-
 .../actions/ActionParametersFormPanelFactory.java  |   2 +-
 .../components/actions/ActionParametersPanel.java  |   2 +-
 .../actions/ActionParametersPanelFactory.java      |   2 +-
 .../BookmarkedPagesPanelFactory.java               |   2 +-
 .../ui/components/collection/CollectionPanel.java  |   2 +-
 .../selector/CollectionSelectorHelper.java         |   2 +-
 .../selector/CollectionSelectorPanel.java          |   2 +-
 .../CollectionContentsAsAjaxTablePanel.java        | 155 +--------------
 .../CollectionContentsAsAjaxTablePanelFactory.java |   2 +-
 .../ajaxtable/columns/ColumnAbstract.java          |   2 +-
 .../columns/ObjectAdapterPropertyColumn.java       |   2 +-
 .../columns/ObjectAdapterTitleColumn.java          |   2 +-
 .../CollectionContentsAsIconsPanelFactory.java     |   2 +-
 .../CollectionContentsMultipleViewsPanel.java      |   2 +-
 ...ollectionContentsMultipleViewsPanelFactory.java |   2 +-
 .../CollectionContentsAsSummaryFactory.java        |   2 +-
 .../CollectionContentsHiddenPanelFactory.java      |   2 +-
 .../empty/EmptyCollectionPanelFactory.java         |   2 +-
 .../entity/EntityComponentFactoryAbstract.java     |   2 +-
 .../collection/EntityCollectionPanelFactory.java   |   2 +-
 .../components/entity/fieldset/PropertyGroup.java  |   2 +-
 .../entity/header/EntityHeaderPanel.java           |   2 +-
 .../entity/header/EntityHeaderPanelFactory.java    |   2 +-
 .../icontitle/EntityIconAndTitlePanelFactory.java  |   2 +-
 .../EntityIconTitleAndCopyLinkPanelFactory.java    |   2 +-
 .../ui/components/footer/FooterPanelFactory.java   |   2 +-
 .../wicket/ui/components/header/HeaderPanel.java   |   2 +-
 .../ui/components/header/HeaderPanelFactory.java   |   2 +-
 .../components/layout/bs3/Bs3GridPanelFactory.java |   2 +-
 .../wicket/ui/components/layout/bs3/col/Col.java   |   2 +-
 .../ui/components/property/PropertyEditForm.java   |   2 +-
 .../property/PropertyEditFormPanelFactory.java     |   2 +-
 .../ui/components/property/PropertyEditPanel.java  |   2 +-
 .../property/PropertyEditPanelFactory.java         |   2 +-
 .../PropertyEditPromptHeaderPanel.java             |   2 +-
 .../scalars/ComponentFactoryScalarAbstract.java    |   2 +-
 .../ui/components/scalars/ScalarPanelAbstract.java |   2 +-
 .../scalars/image/JavaAwtImagePanelFactory.java    |   2 +-
 .../scalars/markup/MarkupPanelFactories.java       |   2 +-
 .../scalars/reference/ReferencePanel.java          |   6 +-
 .../scalars/reference/ReferencePanelFactory.java   |   2 +-
 .../ValueChoicesSelect2PanelFactory.java           |   2 +-
 .../StandaloneCollectionPanel.java                 |   2 +-
 .../StandaloneCollectionPanelFactory.java          |   2 +-
 .../ui/components/tree/TreePanelFactories.java     |   2 +-
 .../unknown/UnknownModelPanelFactory.java          |   2 +-
 .../value/StandaloneValuePanelFactory.java         |   2 +-
 .../voidreturn/VoidReturnPanelFactory.java         |   2 +-
 .../ui/components/welcome/WelcomePanelFactory.java |   2 +-
 .../entitysimplelink/EntityLinkSimplePanel.java    |   2 +-
 .../EntityLinkSimplePanelFactory.java              |   2 +-
 .../formcomponent/FormComponentPanelAbstract.java  |   2 +-
 .../linkandlabel/LinkAndLabelFactoryAbstract.java  |   2 +-
 .../ObjectAdapterMementoProviderAbstract.java      |  19 +-
 .../isis/viewer/wicket/ui/pages/PageAbstract.java  |   4 +-
 .../viewer/wicket/ui/pages/about/AboutPage.java    |   2 +-
 .../viewer/wicket/ui/pages/entity/EntityPage.java  |   2 +-
 .../isis/viewer/wicket/ui/pages/home/HomePage.java |   2 +-
 .../StandaloneCollectionPage.java                  |   2 +-
 .../viewer/wicket/ui/pages/value/ValuePage.java    |   2 +-
 .../wicket/ui/pages/voidreturn/VoidReturnPage.java |   2 +-
 .../viewer/wicket/ui/panels/PanelAbstract.java     |   6 +-
 .../isis/viewer/wicket/ui/util/Components.java     |  10 +-
 .../wicket/ui/ComponentType_ConstantsTest.java     |   3 +
 .../ComponentFactoryRegistryDefault.java           |   2 +-
 127 files changed, 1009 insertions(+), 722 deletions(-)

[isis] 03/04: ISIS-2355 Convert object to JSON and vizualize as well

Posted by jo...@apache.org.
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 879a6ff617a759ebc38ad37632e5d42b5f654ed1
Author: Jörg Rade <jo...@kuehne-nagel.com>
AuthorDate: Sun Sep 12 07:29:18 2021 +0200

    ISIS-2355 Convert object to JSON and vizualize as well
---
 incubator/clients/kroviz/build.gradle.kts          |  1 +
 .../isis/client/kroviz/ui/dialog/EventLogDetail.kt | 18 ++++++++++++++++
 .../org/apache/isis/client/kroviz/utils/Flatted.kt | 25 ++++++++++++++++++++++
 3 files changed, 44 insertions(+)

diff --git a/incubator/clients/kroviz/build.gradle.kts b/incubator/clients/kroviz/build.gradle.kts
index a498c12..455b821 100644
--- a/incubator/clients/kroviz/build.gradle.kts
+++ b/incubator/clients/kroviz/build.gradle.kts
@@ -93,6 +93,7 @@ kotlin {
         implementation("io.kvision:kvision-moment:$kvisionVersion")
         implementation("io.kvision:kvision-maps:$kvisionVersion")
         implementation(npm("xmltojson", "1.3.5", false))
+        implementation(npm("flatted", "3.2.2", false))
     }
     sourceSets["test"].dependencies {
         implementation(kotlin("test-js"))
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 afd9e98..cf63a15 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
@@ -29,6 +29,7 @@ import org.apache.isis.client.kroviz.ui.core.RoDialog
 import org.apache.isis.client.kroviz.ui.diagram.JsonDiagram
 import org.apache.isis.client.kroviz.ui.diagram.LayoutDiagram
 import org.apache.isis.client.kroviz.ui.diagram.LinkTreeDiagram
+import org.apache.isis.client.kroviz.utils.Flatted
 import org.apache.isis.client.kroviz.utils.StringUtils
 import org.apache.isis.client.kroviz.utils.XmlHelper
 
@@ -46,6 +47,7 @@ class EventLogDetail(val logEntryFromTabulator: LogEntry) : Command() {
     // callback parameter
     private val LOG: String = "log"
     private val LNK: String = "lnk"
+    private val DPM: String = "dpm"
 
     fun open() {
         val responseStr = if (logEntry.subType == Constants.subTypeJson) {
@@ -61,6 +63,7 @@ class EventLogDetail(val logEntryFromTabulator: LogEntry) : Command() {
 
         val customButtons = mutableListOf<FormItem>()
         customButtons.add(FormItem("Link Tree Diagram", ValueType.BUTTON, null, callBack = this, callBackAction = LNK))
+        customButtons.add(FormItem("Display Model Diagram", ValueType.BUTTON, null, callBack = this, callBackAction = DPM))
         customButtons.add(FormItem("Console", ValueType.BUTTON, null, callBack = this, callBackAction = LOG))
 
         dialog = RoDialog(
@@ -82,6 +85,9 @@ class EventLogDetail(val logEntryFromTabulator: LogEntry) : Command() {
             action == LNK -> {
                 linkTreeDiagram()
             }
+            action == DPM -> {
+                displayModelDiagram()
+            }
             else -> {
                 console.log(logEntry)
                 console.log("Action not defined yet: " + action)
@@ -97,6 +103,18 @@ class EventLogDetail(val logEntryFromTabulator: LogEntry) : Command() {
         dialog.close()
     }
 
+    private fun displayModelDiagram() {
+        logEntry.aggregators.forEach {
+            val dpm = it.dpm
+            val json = Flatted.stringify(dpm)
+            console.log("[ELD.displayModelDiagram]")
+            console.log(json)
+            val code = JsonDiagram.build(json)
+            DiagramDialog("Display Model Diagram", code).open()
+        }
+        dialog.close()
+    }
+
     private fun defaultAction() {
         val str = logEntry.response
         var label = "Diagram"
diff --git a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/utils/Flatted.kt b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/utils/Flatted.kt
new file mode 100644
index 0000000..3245e3e
--- /dev/null
+++ b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/utils/Flatted.kt
@@ -0,0 +1,25 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package org.apache.isis.client.kroviz.utils
+
+@JsModule("flatted")
+@JsNonModule
+external object Flatted {
+    fun stringify(obj: Any): String
+}

[isis] 02/04: ISIS-2846 UI clean up

Posted by jo...@apache.org.
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 999d2e18ba694e9114fe88ce4315d9edbe5152c3
Author: Jörg Rade <jo...@kuehne-nagel.com>
AuthorDate: Fri Sep 10 13:52:25 2021 +0200

    ISIS-2846 UI clean up
---
 .../org/apache/isis/client/kroviz/ui/core/RoDialog.kt | 17 ++++++++++++++++-
 .../isis/client/kroviz/ui/dialog/DiagramDialog.kt     |  2 +-
 .../isis/client/kroviz/ui/dialog/EventLogDetail.kt    | 19 +++++++++++++------
 .../isis/client/kroviz/ui/panel/EventLogTable.kt      |  4 +++-
 4 files changed, 33 insertions(+), 9 deletions(-)

diff --git a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/core/RoDialog.kt b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/core/RoDialog.kt
index 8b299c8..b977975 100644
--- a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/core/RoDialog.kt
+++ b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/core/RoDialog.kt
@@ -44,7 +44,8 @@ class RoDialog(
         defaultAction: String = "OK",
         widthPerc: Int = 30,
         heightPerc: Int = 100,
-        menu: List<KvisionHtmlLink>? = null) :
+        menu: List<KvisionHtmlLink>? = null,
+        customButtons: List<FormItem> = emptyList() ) :
         Displayable, RoWindow(caption = caption, closeButton = true, menu = menu) {
 
     private val okButton = Button(
@@ -101,6 +102,10 @@ class RoDialog(
                     spacing = 10,
                     classes = setOf("button-bar"))
             buttonBar.add(okButton)
+            customButtons.forEach {
+                val b = createButton(it)
+                buttonBar.add(b)
+            }
             buttonBar.add(cancelButton)
             if (items.isNotEmpty() && hasScalableContent()) {
                 buttonBar.add(scaleUpButton)
@@ -148,4 +153,14 @@ class RoDialog(
         //TODO put Dialog to lower right message box
     }
 
+    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
+    }
+
 }
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 750c3b1..ed239bc 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
@@ -48,7 +48,7 @@ class DiagramDialog(
         dialog = RoDialog(
                 widthPerc = 80,
                 heightPerc = 80,
-                caption = "Diagram",
+                caption = label,
                 items = formItems,
                 command = this,
                 defaultAction = "Pin",
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 e72da92..afd9e98 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
@@ -58,15 +58,18 @@ class EventLogDetail(val logEntryFromTabulator: LogEntry) : Command() {
         formItems.add(FormItem("Url", ValueType.TEXT, logEntry.title))
         formItems.add(FormItem("Response", ValueType.TEXT_AREA, responseStr, 10))
         formItems.add(FormItem("Aggregators", ValueType.TEXT, content = logEntry.aggregators))
-        formItems.add(FormItem("Link Tree Diagram", ValueType.BUTTON, null, callBack = this, callBackAction = LNK))
-        formItems.add(FormItem("Console", ValueType.BUTTON, null, callBack = this, callBackAction = LOG))
+
+        val customButtons = mutableListOf<FormItem>()
+        customButtons.add(FormItem("Link Tree Diagram", ValueType.BUTTON, null, callBack = this, callBackAction = LNK))
+        customButtons.add(FormItem("Console", ValueType.BUTTON, null, callBack = this, callBackAction = LOG))
 
         dialog = RoDialog(
                 caption = "Details :" + logEntry.title,
                 items = formItems,
                 command = this,
-                defaultAction = "Diagram",
-                widthPerc = 60)
+                defaultAction = "Response Diagram",
+                widthPerc = 60,
+                customButtons = customButtons)
         dialog.open()
     }
 
@@ -96,16 +99,20 @@ class EventLogDetail(val logEntryFromTabulator: LogEntry) : Command() {
 
     private fun defaultAction() {
         val str = logEntry.response
+        var label = "Diagram"
         val pumlCode = when {
             str.startsWith("<") -> {
                 val grid = logEntry.obj as Grid
+                label = "Layout Diagram"
                 LayoutDiagram.build(grid)
             }
-            str.startsWith("{") ->
+            str.startsWith("{") -> {
+                label = "JSON / XML Diagram"
                 JsonDiagram.build(str)
+            }
             else -> "{}"
         }
-        DiagramDialog("Layout Diagram", pumlCode).open()
+        DiagramDialog(label, pumlCode).open()
     }
 
 }
diff --git a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/panel/EventLogTable.kt b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/panel/EventLogTable.kt
index 9108c93..12885e8 100644
--- a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/panel/EventLogTable.kt
+++ b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/panel/EventLogTable.kt
@@ -44,6 +44,7 @@ class EventLogTable(val model: List<LogEntry>) : VPanel() {
                     width = "50",
                     headerMenu = DynamicMenuBuilder().buildTableMenu(this),
                     hozAlign = Align.CENTER,
+                    vertAlign = VAlign.MIDDLE,
                     formatterComponentFunction = { _, _, data -> buildActionButton(data) }
             ),
             ColumnDefinition(
@@ -129,9 +130,10 @@ class EventLogTable(val model: List<LogEntry>) : VPanel() {
         val b = Button(
                 text = "",
                 icon = "fa fa-info-circle",
-                style = data.state.style)
+                style = data.state.style        )
         b.onClick { EventLogDetail(data).open() }
         b.margin = CssSize(-10, UNIT.px)
+        b.addCssClass("btn-sm")
         return b
     }