]> uap-core.de Git - rssreader.git/commitdiff
use a table view for the feed item list
authorOlaf Wintermann <olaf.wintermann@gmail.com>
Tue, 26 Aug 2025 12:00:58 +0000 (14:00 +0200)
committerOlaf Wintermann <olaf.wintermann@gmail.com>
Tue, 26 Aug 2025 12:00:58 +0000 (14:00 +0200)
rss-application/src/main/kotlin/de/unixwork/rssreader/MainWindow.kt
ui-java/src/main/java/de/unixwork/ui/ListView.java
ui-java/src/main/java/de/unixwork/ui/ToolkitFuncs.java
ui-kotlin/src/main/kotlin/de/unixwork/ui/kotlin/Toplevel.kt

index 0c68aa1aab6085b53a249c3017ff1cf3350cfe76..a4a346c4ed2d156bf26e4a8f288c3ec1f7684732 100644 (file)
@@ -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<Item>(
+                    val model = TableModel()
+                    model.addColumn("Title", ColumnType.STRING)
+                    model.addColumn("Date", ColumnType.STRING)
+                    table<Item>(
+                        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
                     }
                 }
 
index 5d2aa03d6a1fade1758ec4ad1669820fb4168673..f49a1ef010e8f01cddc784fb5776b8b0a2242e03 100644 (file)
@@ -3,7 +3,7 @@ package de.unixwork.ui;
 public class ListView {
     public static <T> TableViewBuilder<T> table(UiObject obj) {
         ListFuncs ui = ListFuncs.getInstance();
-        return new TableViewBuilder<T>(obj, ui.listview_create);
+        return new TableViewBuilder<T>(obj, ui.table_create);
     }
 
     public static <T> ListViewBuilder<T> list(UiObject obj) {
index 0e44164a5b1a3dab7a379be69d26143ae739ac97..885640dd256a8e35efd12a317e56e8cf34683e8e 100644 (file)
@@ -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);
 
index 1315ffa1b04cdac6e4d5188c8623e04ee805946e..8f8441d3430ec214cd8222c96b7c1252f93c917b 100644 (file)
@@ -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 <T>table(
+        model: TableModel,
+        varname: String? = null,
+        value: UiList<T>? = 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<T>? = null
+    ): UiWidget {
+        val table = ListView.table<T>(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 <T>createListView(
         list: ListViewBuilder<T>,
         varname: String? = null,