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/06/18 10:35:43 UTC
[isis] 02/03: ISIS-2350 RoTable,
EventLogTable icons draggable to RoToolPanel
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 dc4bc560cb2aeb2d8b6bf537d5df177eec20fea2
Author: Jörg Rade <jo...@kuehne-nagel.com>
AuthorDate: Thu Jun 11 18:13:55 2020 +0200
ISIS-2350 RoTable, EventLogTable icons draggable to RoToolPanel
---
.../isis/client/kroviz/core/event/EventStore.kt | 4 +--
.../isis/client/kroviz/core/model/Exposer.kt | 6 +---
.../isis/client/kroviz/ui/kv/ColumnFactory.kt | 6 ++--
.../isis/client/kroviz/ui/kv/EventLogTable.kt | 7 +++--
.../apache/isis/client/kroviz/ui/kv/RoToolPanel.kt | 33 +++++++++++-----------
5 files changed, 29 insertions(+), 27 deletions(-)
diff --git a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/core/event/EventStore.kt b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/core/event/EventStore.kt
index 269bc98..eb7cfef 100644
--- a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/core/event/EventStore.kt
+++ b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/core/event/EventStore.kt
@@ -11,8 +11,8 @@ import pl.treksoft.kvision.state.observableListOf
* Subsequent invocations are served from this cache.
* UI events (Dialogs, Windows, etc.) are logged here as well.
*
- * @see https://en.wikipedia.org/wiki/Proxy_pattern
- * @see https://martinfowler.com/eaaDev/EventSourcing.html
+ * @see "https://en.wikipedia.org/wiki/Proxy_pattern"
+ * @see "https://martinfowler.com/eaaDev/EventSourcing.html"
*/
object EventStore {
var log = observableListOf<LogEntry>()
diff --git a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/core/model/Exposer.kt b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/core/model/Exposer.kt
index 8942b77..bd93797 100644
--- a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/core/model/Exposer.kt
+++ b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/core/model/Exposer.kt
@@ -40,11 +40,7 @@ class Exposer(val delegate: TObject) {
// eg. for dataNucleusId
fun get(propertyName: String): Any? {
- val delegatedProperty = delegate.getProperty(propertyName)
- if (delegatedProperty != null) {
- return delegatedProperty.value
- }
- return null
+ return this.delegate.getProperty(propertyName)?.value
}
}
diff --git a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/kv/ColumnFactory.kt b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/kv/ColumnFactory.kt
index 95772be..a7cec95 100644
--- a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/kv/ColumnFactory.kt
+++ b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/kv/ColumnFactory.kt
@@ -1,5 +1,6 @@
package org.apache.isis.client.kroviz.ui.kv
+import org.apache.isis.client.kroviz.core.event.EventStore
import org.apache.isis.client.kroviz.core.model.Exposer
import org.apache.isis.client.kroviz.core.model.ListDM
import pl.treksoft.kvision.html.Button
@@ -77,11 +78,12 @@ class ColumnFactory {
}
private fun buildButton(data: Exposer, iconName: String?): Button {
+ val tObject = data.delegate
val b = Button(text = "", icon = iconName, style = ButtonStyle.LINK).onClick {
- val tObject = (data as Exposer).delegate
UiManager.displayModel(tObject)
}
- b.setDragDropData(RoToolPanel.format, "element")
+ val logEntry = EventStore.find(tObject)!!
+ b.setDragDropData(RoToolPanel.format, logEntry.url)
return b
}
diff --git a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/kv/EventLogTable.kt b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/kv/EventLogTable.kt
index 8047106..06f94f2 100644
--- a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/kv/EventLogTable.kt
+++ b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/kv/EventLogTable.kt
@@ -61,10 +61,13 @@ class EventLogTable(val model: List<LogEntry>) : VPanel() {
)
private fun buildButton(data: LogEntry): Button {
- val b = Button(data.title, icon = data.state.iconName, style = ButtonStyle.LINK).onClick {
+ val b = Button(
+ data.title,
+ icon = data.state.iconName,
+ style = ButtonStyle.LINK).onClick {
console.log(data)
}
- b.setDragDropData(RoToolPanel.format, "element")
+ b.setDragDropData(RoToolPanel.format, data.url)
return b
}
diff --git a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/kv/RoToolPanel.kt b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/kv/RoToolPanel.kt
index 3059460..ba2b587 100644
--- a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/kv/RoToolPanel.kt
+++ b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/kv/RoToolPanel.kt
@@ -1,8 +1,9 @@
package org.apache.isis.client.kroviz.ui.kv
import kotlinx.serialization.UnstableDefault
+import org.apache.isis.client.kroviz.core.event.EventStore
+import org.apache.isis.client.kroviz.core.event.ResourceSpecification
import org.apache.isis.client.kroviz.core.model.Exposer
-import org.apache.isis.client.kroviz.handler.TObjectHandler
import org.apache.isis.client.kroviz.to.TObject
import org.apache.isis.client.kroviz.ui.BrowserWindow
import org.apache.isis.client.kroviz.utils.IconManager
@@ -15,7 +16,7 @@ import pl.treksoft.kvision.panel.VPanel
@OptIn(UnstableDefault::class)
object RoToolPanel : SimplePanel() {
- const val format = "object/model"
+ const val format = "text/plain"
val panel = VPanel()
private val buttons = mutableListOf<Button>()
@@ -24,14 +25,14 @@ object RoToolPanel : SimplePanel() {
panel.width = CssSize(40, UNIT.px)
panel.height = CssSize(100, UNIT.perc)
panel.background = Background(color = Color.name(Col.GHOSTWHITE))
- panel.setDropTarget(format) { data ->
- console.log("[RoToolPanel] panel")
- console.log(data)
- //TODO extract Exposer/TO from data
- val jsonStr = CFG.str
- val to = TObjectHandler().parse(jsonStr) as TObject
- val exp= Exposer(to)
- addButton(exp)
+ panel.setDropTargetData(format) { url ->
+ val reSpec = ResourceSpecification(url!!)
+ val logEntry = EventStore.find(reSpec)!!
+ val obj = logEntry.obj!!
+ if (obj is TObject) {
+ val exp = Exposer(obj)
+ addButton(exp)
+ }
}
initButtons()
@@ -40,10 +41,8 @@ object RoToolPanel : SimplePanel() {
private fun initButtons() {
val drop: Button = buildButton("Toolbox", "Sample drop target")
- drop.setDropTarget(format) { data ->
- console.log("[RoToolPanel]")
- console.log(data)
- val obj = data.dataTransfer?.getData(format)!!
+ drop.setDropTarget(format) {
+ //IMPROVE use string for wikipedia search
BrowserWindow("http://isis.apache.org").open()
}
buttons.add(drop)
@@ -65,12 +64,14 @@ object RoToolPanel : SimplePanel() {
override fun show(): Widget {
panel.width = CssSize(40, UNIT.px)
- buttons.forEach { it -> panel.add(it) }
+ buttons.forEach { panel.add(it) }
return super.show()
}
private fun addButton(exp: Exposer) {
- val b = buildButton(exp.iconName, "dynamic sample")
+ val b = buildButton(exp.iconName, "dynamic sample").onClick {
+
+ }
buttons.add(b)
panel.add(b)
}