From b2c5a3d2ba19853f342142311fc7881233ac1c45 Mon Sep 17 00:00:00 2001 From: Olaf Wintermann Date: Tue, 26 Aug 2025 14:00:58 +0200 Subject: [PATCH] use a table view for the feed item list --- .../de/unixwork/rssreader/MainWindow.kt | 15 +++- .../main/java/de/unixwork/ui/ListView.java | 2 +- .../java/de/unixwork/ui/ToolkitFuncs.java | 2 +- .../kotlin/de/unixwork/ui/kotlin/Toplevel.kt | 70 +++++++++++++++++++ 4 files changed, 85 insertions(+), 4 deletions(-) diff --git a/rss-application/src/main/kotlin/de/unixwork/rssreader/MainWindow.kt b/rss-application/src/main/kotlin/de/unixwork/rssreader/MainWindow.kt index 0c68aa1..a4a346c 100644 --- a/rss-application/src/main/kotlin/de/unixwork/rssreader/MainWindow.kt +++ b/rss-application/src/main/kotlin/de/unixwork/rssreader/MainWindow.kt @@ -1,6 +1,8 @@ package de.unixwork.rssreader +import de.unixwork.ui.ColumnType import de.unixwork.ui.SubListItem +import de.unixwork.ui.TableModel import de.unixwork.ui.UiList import de.unixwork.ui.UiString import de.unixwork.ui.UiText @@ -52,7 +54,11 @@ class MainWindow { hsplitpane(fill = true, initialPosition = 300) { vbox(fill = true) { - listview( + val model = TableModel() + model.addColumn("Title", ColumnType.STRING) + model.addColumn("Date", ColumnType.STRING) + table( + model = model, varname = "items", fill = true, onSelection = { event -> @@ -62,7 +68,12 @@ class MainWindow { } ) { elm, col -> - elm.title + var result: String? = null + when(col) { + 0 -> result = elm.title + 1 -> result = elm.pubDate + } + result } } diff --git a/ui-java/src/main/java/de/unixwork/ui/ListView.java b/ui-java/src/main/java/de/unixwork/ui/ListView.java index 5d2aa03..f49a1ef 100644 --- a/ui-java/src/main/java/de/unixwork/ui/ListView.java +++ b/ui-java/src/main/java/de/unixwork/ui/ListView.java @@ -3,7 +3,7 @@ package de.unixwork.ui; public class ListView { public static TableViewBuilder table(UiObject obj) { ListFuncs ui = ListFuncs.getInstance(); - return new TableViewBuilder(obj, ui.listview_create); + return new TableViewBuilder(obj, ui.table_create); } public static ListViewBuilder list(UiObject obj) { diff --git a/ui-java/src/main/java/de/unixwork/ui/ToolkitFuncs.java b/ui-java/src/main/java/de/unixwork/ui/ToolkitFuncs.java index 0e44164..885640d 100644 --- a/ui-java/src/main/java/de/unixwork/ui/ToolkitFuncs.java +++ b/ui-java/src/main/java/de/unixwork/ui/ToolkitFuncs.java @@ -221,7 +221,7 @@ public class ToolkitFuncs { model_new = linker.downcallHandle(model_new_addr, sigm_m); model_add_column = linker.downcallHandle(model_add_column_addr, sigv_mmimi); - model_free = linker.downcallHandle(model_free_addr, sigv_m); + model_free = linker.downcallHandle(model_free_addr, sigv_mm); call_mainthread = linker.downcallHandle(call_mainthread_addr, sigv_mm); diff --git a/ui-kotlin/src/main/kotlin/de/unixwork/ui/kotlin/Toplevel.kt b/ui-kotlin/src/main/kotlin/de/unixwork/ui/kotlin/Toplevel.kt index 1315ffa..8f8441d 100644 --- a/ui-kotlin/src/main/kotlin/de/unixwork/ui/kotlin/Toplevel.kt +++ b/ui-kotlin/src/main/kotlin/de/unixwork/ui/kotlin/Toplevel.kt @@ -25,6 +25,8 @@ import de.unixwork.ui.WebView import de.unixwork.ui.Label import de.unixwork.ui.LinkButtonType import de.unixwork.ui.ListViewBuilder +import de.unixwork.ui.TableModel +import de.unixwork.ui.TableViewBuilder import de.unixwork.ui.UiText import java.awt.TextArea @@ -930,6 +932,74 @@ class Toplevel(obj: UiObject) { return button.create() } + fun table( + model: TableModel, + varname: String? = null, + value: UiList? = null, + fill: Boolean = false, + hexpand: Boolean = false, + vexpand: Boolean = false, + hfill: Boolean = false, + vfill: Boolean = false, + overrideDefaults: Boolean = false, + colspan: Int = -1, + rowspan: Int = -1, + name: String? = null, + styleClass: String? = null, + onActivate: EventHandler? = null, + onSelection: EventHandler? = null, + getvalue: ListValueConverter? = null + ): UiWidget { + val table = ListView.table(ui) + table.model(model) + varname?.let { + table.varname(varname) + } + value?.let { + table.value(value) + } + if(fill) { + table.fill(true) + } + if(hexpand) { + table.hexpand(true) + } + if(vexpand) { + table.vexpand(true) + } + if(hfill) { + table.hfill(true) + } + if(vfill) { + table.vfill(true) + } + if(overrideDefaults) { + table.overrideDefaults(true) + } + if(colspan > 0) { + table.colspan(colspan) + } + if(rowspan > 0) { + table.rowspan(rowspan) + } + name?.let { + table.name(it) + } + styleClass?.let { + table.styleClass(it) + } + onActivate?.let { + table.onActivate(it) + } + onSelection?.let { + table.onSelection(it) + } + getvalue?.let { + table.getvalue(it) + } + return table.create() + } + fun createListView( list: ListViewBuilder, varname: String? = null, -- 2.47.3