From 329fafe4ac8aaaa13e5cd9f089890234b331bb65 Mon Sep 17 00:00:00 2001 From: Olaf Wintermann Date: Wed, 13 Aug 2025 19:18:39 +0200 Subject: [PATCH] improve createCategory dialog and implement event handling in createFeedDialog --- .../de/unixwork/rssreader/FeedSourceList.kt | 1 - .../de/unixwork/rssreader/MainWindow.kt | 37 ++++++++++++++++--- .../java/de/unixwork/ui/ListViewBuilder.java | 5 +++ .../src/main/java/de/unixwork/ui/UiList.java | 8 ++++ 4 files changed, 44 insertions(+), 7 deletions(-) diff --git a/rss-application/src/main/kotlin/de/unixwork/rssreader/FeedSourceList.kt b/rss-application/src/main/kotlin/de/unixwork/rssreader/FeedSourceList.kt index e900b40..43fc901 100644 --- a/rss-application/src/main/kotlin/de/unixwork/rssreader/FeedSourceList.kt +++ b/rss-application/src/main/kotlin/de/unixwork/rssreader/FeedSourceList.kt @@ -2,7 +2,6 @@ package de.unixwork.rssreader import de.unixwork.ui.Document import de.unixwork.ui.SubList -import de.unixwork.ui.UiList class FeedSourceList : Document() { val feeds = this.sourcelist("feeds") 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 8b3bdf5..dc933d9 100644 --- a/rss-application/src/main/kotlin/de/unixwork/rssreader/MainWindow.kt +++ b/rss-application/src/main/kotlin/de/unixwork/rssreader/MainWindow.kt @@ -1,7 +1,9 @@ package de.unixwork.rssreader import de.unixwork.ui.SubListItem +import de.unixwork.ui.UiList import de.unixwork.ui.UiString +import de.unixwork.ui.UiText import de.unixwork.ui.kotlin.Toplevel import de.unixwork.ui.kotlin.sidebarWindow import de.unixwork.ui.kotlin.dialogWindow @@ -48,19 +50,34 @@ class MainWindow { } private fun createFeedDialog() { + var groups: UiList? = null + var name: UiString? = null + var urls: UiText? = null + val w = dialogWindow( parent = window.ui, title = "Add Feed", + defaultButton = 1, lbutton1 = "Add", rbutton4 = "Cancel", modal = true, showCloseButton = false, onClick = { ev -> + if(ev.intValue == 1) { + val groupSel = groups?.selectedIndex + val feedName = name.toString() + val urlStr = urls.toString() + println("groupSel: $groupSel, feedName: $feedName, urlStr: $urlStr") + } ev.`object`.close() }) { // data - ui.list("groups").addAll(sourceList.groups) + groups = ui.list() + name = ui.string() + urls = ui.text() + + groups.addAll(sourceList.groups) // UI grid( @@ -73,17 +90,17 @@ class MainWindow { { row { rlabel("Category") - dropdown(varname = "groups", hexpand = true) { elm, column -> + dropdown(value = groups, hexpand = true) { elm, column -> elm.name } } row { rlabel("Name") - textfield(varname = "name", hexpand = true) + textfield(value = name, hexpand = true) } row { rlabel("URLs", overrideDefaults = true, hfill = true) // overrideDefaults for disabling default vfill - textarea(varname = "url", hexpand = true, vexpand = true, vfill = true) + textarea(value = urls, hexpand = true, vexpand = true, vfill = true) } } } @@ -95,13 +112,21 @@ class MainWindow { val w = dialogWindow( parent = window.ui, title = "Add Category", + defaultButton = 1, lbutton1 = "Add", rbutton4 = "Cancel", modal = true, showCloseButton = false, onClick = { ev -> - val nameStr = name.toString() - Database.newFeedGroup(nameStr) + if(ev.intValue == 1) { + val nameStr = name.toString() + if(!nameStr.isBlank()) { + Database.newFeedGroup(nameStr) + } else { + println("name is null or blank") + return@dialogWindow + } + } ev.`object`.close() }) { diff --git a/ui-java/src/main/java/de/unixwork/ui/ListViewBuilder.java b/ui-java/src/main/java/de/unixwork/ui/ListViewBuilder.java index 93d6b2e..376072c 100644 --- a/ui-java/src/main/java/de/unixwork/ui/ListViewBuilder.java +++ b/ui-java/src/main/java/de/unixwork/ui/ListViewBuilder.java @@ -91,6 +91,11 @@ public class ListViewBuilder extends AbstractWidgetBuilder { return this; } + public ListViewBuilder value(UiList list) { + this.list = list; + return this; + } + public ListViewBuilder getvalue(ListValueConverter getvalue) { this.getvalue = getvalue; return this; diff --git a/ui-java/src/main/java/de/unixwork/ui/UiList.java b/ui-java/src/main/java/de/unixwork/ui/UiList.java index fa6cafc..0fdce38 100644 --- a/ui-java/src/main/java/de/unixwork/ui/UiList.java +++ b/ui-java/src/main/java/de/unixwork/ui/UiList.java @@ -93,6 +93,14 @@ public class UiList extends ArrayList { } } + public int getSelectedIndex() { + int[] selection = getSelection(); + if(selection.length == 0) { + return -1; + } + return selection[0]; + } + public void free() { ToolkitFuncs tk = ToolkitFuncs.getInstance(); try { -- 2.47.3