]> uap-core.de Git - rssreader.git/commitdiff
replace kotlin MenuBuilder class with Menu extension functions
authorOlaf Wintermann <olaf.wintermann@gmail.com>
Sat, 1 Nov 2025 20:37:10 +0000 (21:37 +0100)
committerOlaf Wintermann <olaf.wintermann@gmail.com>
Sat, 1 Nov 2025 20:37:10 +0000 (21:37 +0100)
rss-application/src/main/kotlin/de/unixwork/rssreader/App.kt
rss-application/src/main/kotlin/de/unixwork/rssreader/MainWindow.kt
ui-kotlin/src/main/kotlin/de/unixwork/ui/kotlin/Menu.kt

index 31cf1513febe41085b42a72878e183741a6854ae..1d7790d100197b38c9bf87b53938795d083fa51d 100644 (file)
@@ -6,6 +6,9 @@ import de.unixwork.ui.Toolkit
 import de.unixwork.ui.kotlin.ToolkitDispatcher
 import de.unixwork.ui.kotlin.toolbarItem
 import de.unixwork.ui.kotlin.addToolbarDefault
+import de.unixwork.ui.kotlin.menuItem
+import de.unixwork.ui.kotlin.radioItem
+import de.unixwork.ui.kotlin.separator
 import de.unixwork.ui.kotlin.toolbarAppMenu
 import de.unixwork.ui.kotlin.toolbarToggleItem
 import kotlinx.coroutines.Dispatchers
index ec7c95a30c29186713a1537f5d75de83898955ba..b47ced708b19a767556795873f268dd0034fe195 100644 (file)
@@ -2,6 +2,7 @@ package de.unixwork.rssreader
 
 import de.unixwork.ui.ColumnType
 import de.unixwork.ui.LinkButtonType
+import de.unixwork.ui.Menu
 import de.unixwork.ui.SubListItem
 import de.unixwork.ui.TabViewType
 import de.unixwork.ui.TableModel
@@ -9,6 +10,7 @@ import de.unixwork.ui.UiInteger
 import de.unixwork.ui.UiList
 import de.unixwork.ui.UiString
 import de.unixwork.ui.UiText
+import de.unixwork.ui.kotlin.MenuBuilder
 import de.unixwork.ui.kotlin.Toplevel
 import de.unixwork.ui.kotlin.dialogWindow
 import de.unixwork.ui.kotlin.openFileDialog
@@ -36,7 +38,20 @@ class MainWindow() {
     var currentSublistIndex = -1
     var currentFeedIndex = -1
 
+    val contextMenu: MenuBuilder
+
     init {
+        contextMenu = MenuBuilder(Menu())
+        contextMenu.menuItem(label = "Move Up") {
+
+        }
+        contextMenu.menuItem(label = "Move Down") {
+
+        }
+        contextMenu.menuItem(label = "Delete") {
+
+        }
+
         setDefaultWindowSize(1600, 900)
         window = splitViewWindow(title = "RSS Reader", sidebar = true) {
             sidebar {
@@ -70,6 +85,7 @@ class MainWindow() {
                     )
                     { elm: FeedCollection?, i, sublist ->
                         val item = SubListItem()
+                        //item.buttonMenu = contextMenu
                         elm?.let {
                             item.label = it.name
                             if(it.unreadItemsCount > 0 && it.itemStateMode != 2) {
index b6d59d7de7218d6fd0044edd73ac184232c244fc..f97a9bdfc17f7ae81b2456c416a163d3f5810520 100644 (file)
@@ -12,48 +12,43 @@ import de.unixwork.ui.MenuUI
 import de.unixwork.ui.Toolbar
 import de.unixwork.ui.ToolbarPosition
 
-class MenuBuilder(menu: Menu) {
-    private val menu = menu
-
-    fun menuItem(label: String? = null, icon: String? = null, onClick: EventHandler? = null) {
-        val item = MenuItem(label, onClick)
-        menu.add(item)
-    }
+fun Menu.menuItem(label: String? = null, icon: String? = null, onClick: EventHandler? = null) {
+    val item = MenuItem(label, onClick)
+    add(item)
+}
 
-    fun menu(label: String, block: MenuBuilder.() -> Unit) {
-        val subMenu = Menu(label)
-        val builder = MenuBuilder(subMenu)
-        builder.block()
-        menu.add(subMenu)
-    }
+fun Menu.menu(label: String, block: Menu.() -> Unit) {
+    val subMenu = Menu(label)
+    subMenu.block()
+    add(subMenu)
+}
 
-    fun checkItem(label: String? = null, icon: String? = null, varname: String? = null, onChange: EventHandler? = null) {
-        val item = MenuCheckItem(label, varname)
-        item.icon = icon
-        item.onChange = onChange
-        menu.add(item)
-    }
+fun Menu.checkItem(label: String? = null, icon: String? = null, varname: String? = null, onChange: EventHandler? = null) {
+    val item = MenuCheckItem(label, varname)
+    item.icon = icon
+    item.onChange = onChange
+    add(item)
+}
 
-    fun radioItem(label: String? = null, icon: String? = null, varname: String? = null, onChange: EventHandler? = null) {
-        val item = MenuRadioItem(label, varname)
-        item.icon = icon
-        item.onChange = onChange
-        menu.add(item)
-    }
+fun Menu.radioItem(label: String? = null, icon: String? = null, varname: String? = null, onChange: EventHandler? = null) {
+    val item = MenuRadioItem(label, varname)
+    item.icon = icon
+    item.onChange = onChange
+    add(item)
+}
 
-    fun separator() {
-        menu.add(MenuSeparator())
-    }
+fun Menu.separator() {
+    add(MenuSeparator())
 }
 
-fun applicationMenu(block: MenuBuilder.() -> Unit) {
+
+fun applicationMenu(block: Menu.() -> Unit) {
     Application.setAppMenu(menuBuilder(block))
 }
 
-fun menuBuilder(block: MenuBuilder.() -> Unit) : Menu {
+fun menuBuilder(block: Menu.() -> Unit) : Menu {
     val menu = Menu()
-    val builder = MenuBuilder(menu)
-    builder.block()
+    menu.block()
     return menu
 }
 
@@ -65,11 +60,11 @@ fun toolbarToggleItem(name: String, label: String? = null, icon: String? = null,
     Toolbar.toggleItem(name, label, icon, tooltip, varname, onChange)
 }
 
-fun toolbarMenu(name: String?, label: String? = null, icon: String? = null, tooltip: String? = null, block: MenuBuilder.() -> Unit) {
+fun toolbarMenu(name: String?, label: String? = null, icon: String? = null, tooltip: String? = null, block: Menu.() -> Unit) {
     Toolbar.menu(name, label, icon, tooltip, menuBuilder(block))
 }
 
-fun toolbarAppMenu(block: MenuBuilder.() -> Unit) {
+fun toolbarAppMenu(block: Menu.() -> Unit) {
     Toolbar.menu(null, null, null, menuBuilder(block))
 }