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 2020/05/07 16:46:18 UTC

[isis] 01/08: ISIS-2342 scale image 1/n, cleanup

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 9133164e213cc8d6f1262906e0fe402fc3031b0a
Author: Jörg Rade <jo...@kuehne-nagel.com>
AuthorDate: Sun Apr 12 10:40:18 2020 +0200

    ISIS-2342 scale image 1/n, cleanup
---
 .../kotlin/org/apache/isis/client/kroviz/App.kt    |  3 --
 .../org/apache/isis/client/kroviz/ui/FormItem.kt   | 17 +---------
 .../apache/isis/client/kroviz/ui/ImageDialog.kt    | 36 +++++++++++++++++++---
 .../apache/isis/client/kroviz/ui/kv/RoDialog.kt    | 10 +++---
 .../apache/isis/client/kroviz/ui/kv/UiManager.kt   |  8 +++++
 5 files changed, 47 insertions(+), 27 deletions(-)

diff --git a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/App.kt b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/App.kt
index 7d793ff..0cb2ed0 100644
--- a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/App.kt
+++ b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/App.kt
@@ -7,7 +7,6 @@ import pl.treksoft.kvision.panel.vPanel
 import pl.treksoft.kvision.require
 import pl.treksoft.kvision.startApplication
 import pl.treksoft.kvision.utils.px
-import kotlin.browser.window
 
 class App : Application() {
 
@@ -31,7 +30,5 @@ class App : Application() {
 }
 
 fun main() {
-    //TODO workaround according to https://github.com/rjaros/kvision/issues/113
-    if (window.asDynamic().__karma__) return
     startApplication(::App)
 }
diff --git a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/FormItem.kt b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/FormItem.kt
index ac90137..2ba3ed6 100644
--- a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/FormItem.kt
+++ b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/FormItem.kt
@@ -1,7 +1,6 @@
 package org.apache.isis.client.kroviz.ui
 
 import org.apache.isis.client.kroviz.to.Member
-import pl.treksoft.kvision.window.Window
 
 class FormItem(
         val label: String,
@@ -13,11 +12,10 @@ class FormItem(
         var dspl: Displayable? = null,
         val callBackId: String? = null) {
 
-    private var originalContent: Any?
+    private var originalContent: Any? = content
     var readOnly = false
 
     init {
-        originalContent = content
         if (member != null) {
             readOnly = member.isReadOnly()
         }
@@ -28,10 +26,6 @@ class FormItem(
         if (member != null) {
             member.value?.content = value
         }
-        //IMPROVE this is special logic in a generic place
-        if (type == org.apache.isis.client.kroviz.to.ValueType.SLIDER.type) {
-            setOpacity(value!!)
-        }
     }
 
     fun reset() {
@@ -45,13 +39,4 @@ class FormItem(
         dspl = displayable
     }
 
-    @Deprecated("this needs a better home")
-    fun setOpacity(value: String) {
-        val opacity = value.toDouble()
-        (dspl as Window).getElementJQuery()?.css(
-                "background-color",
-                "rgba(255, 255, 255, $opacity)"
-        )
-    }
-
 }
diff --git a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/ImageDialog.kt b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/ImageDialog.kt
index bb51964..4525b36 100644
--- a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/ImageDialog.kt
+++ b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/ImageDialog.kt
@@ -2,10 +2,14 @@ package org.apache.isis.client.kroviz.ui
 
 import org.apache.isis.client.kroviz.to.ValueType
 import org.apache.isis.client.kroviz.ui.kv.RoDialog
+import org.apache.isis.client.kroviz.ui.kv.UiManager
 import org.apache.isis.client.kroviz.utils.UmlUtils
+import org.w3c.dom.events.KeyboardEvent
 import kotlin.js.Date
 
-class ImageDialog(var label: String = defaultLabel, var pumlCode: String = defaultPumlCode) : Command {
+class ImageDialog(
+        var label: String = defaultLabel,
+        var pumlCode: String = defaultPumlCode) : Command {
 
     companion object {
         val defaultLabel = "UML Diagram Sample"
@@ -20,8 +24,8 @@ class ImageDialog(var label: String = defaultLabel, var pumlCode: String = defau
 
     fun open() {
         val formItems = mutableListOf<FormItem>()
-        val slider = FormItem("Opacity", ValueType.SLIDER.type, content = 1.0)
-        formItems.add(slider)
+//        val slider = FormItem("Scale", ValueType.SLIDER.type, content = 1.0)
+//        formItems.add(slider)
 
         val img = FormItem("svg", ValueType.IMAGE.type, callBackId = uuid)
         formItems.add(img)
@@ -33,10 +37,34 @@ class ImageDialog(var label: String = defaultLabel, var pumlCode: String = defau
                 widthPerc = 80,
                 heightPerc = 80)
         dialog.open()
-        slider.setDisplay(dialog)
+//        slider.setDisplay(dialog)
 
         UmlUtils.generateDiagram(pumlCode, uuid)
     }
 
+    init {
+        kotlin.browser.window.addEventListener("keydown", fun(event) {
+            val dlg = UiManager.topDialog() as RoDialog
+            console.log("[ImageDialog.event] topWindow: $dlg")
+            console.log(dlg)
+            if (dlg.hasScalableContent()) {
+                val ke = event as KeyboardEvent
+                if (ke.ctrlKey && ke.keyCode == 189) { // -
+                    //adjust svg viewbox
+                    console.log("[<CTRL>-<->]")
+                    event.stopPropagation()
+                    ke.preventDefault()
+                }
+                if (ke.ctrlKey && ke.keyCode == 187) { // +
+                    //adjust svg viewbox
+                    console.log("[<CTRL>-<+>]")
+                    event.stopPropagation()
+                    ke.preventDefault()
+                }
+            }
+        })
+    }
+
+
 }
 
diff --git a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/kv/RoDialog.kt b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/kv/RoDialog.kt
index 1d633f0..d619817 100644
--- a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/kv/RoDialog.kt
+++ b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/kv/RoDialog.kt
@@ -1,8 +1,7 @@
 package org.apache.isis.client.kroviz.ui.kv
 
+import org.apache.isis.client.kroviz.to.ValueType
 import org.apache.isis.client.kroviz.ui.*
-import org.w3c.dom.events.Event
-import org.w3c.dom.events.MouseEvent
 import pl.treksoft.kvision.core.CssSize
 import pl.treksoft.kvision.core.UNIT
 import pl.treksoft.kvision.core.Widget
@@ -11,11 +10,9 @@ import pl.treksoft.kvision.html.Button
 import pl.treksoft.kvision.html.ButtonStyle
 import pl.treksoft.kvision.panel.FlexJustify
 import pl.treksoft.kvision.panel.HPanel
-import pl.treksoft.kvision.panel.SimplePanel
 import pl.treksoft.kvision.panel.vPanel
 import pl.treksoft.kvision.utils.perc
 import pl.treksoft.kvision.utils.px
-import pl.treksoft.kvision.window.Window
 
 class RoDialog(
         caption: String,
@@ -91,4 +88,9 @@ class RoDialog(
         dispose()
     }
 
+    fun hasScalableContent(): Boolean {
+        val scalable = items.first { it.type == ValueType.IMAGE.type }
+        return scalable != null
+    }
+
 }
diff --git a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/kv/UiManager.kt b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/kv/UiManager.kt
index 3a54419..2ccfcc0 100644
--- a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/kv/UiManager.kt
+++ b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/kv/UiManager.kt
@@ -12,6 +12,7 @@ import org.apache.isis.client.kroviz.core.model.ObjectDM
 import org.apache.isis.client.kroviz.to.TObject
 import org.apache.isis.client.kroviz.to.mb.Menubars
 import org.w3c.dom.events.KeyboardEvent
+import pl.treksoft.kvision.core.Component
 import pl.treksoft.kvision.core.Widget
 import pl.treksoft.kvision.dropdown.ContextMenu
 import pl.treksoft.kvision.panel.SimplePanel
@@ -126,6 +127,13 @@ object UiManager {
         pop()
     }
 
+    fun topDialog(): Component {
+        val allDialogs = RoApp.getChildren().filter {
+            it is RoDialog
+        }
+        return allDialogs.first()
+    }
+
     fun getUrl(): String {
         return if (session == null) {
             ""