From: Olaf Wintermann Date: Wed, 3 Sep 2025 16:12:00 +0000 (+0200) Subject: new kotlin menu API X-Git-Url: https://uap-core.de/gitweb/?a=commitdiff_plain;h=86135dbe7388910bf3892f57e689e0abe9fd41b7;p=rssreader.git new kotlin menu API --- diff --git a/ui-kotlin/src/main/kotlin/de/unixwork/ui/kotlin/Menu.kt b/ui-kotlin/src/main/kotlin/de/unixwork/ui/kotlin/Menu.kt index 2ea7e14..545c96a 100644 --- a/ui-kotlin/src/main/kotlin/de/unixwork/ui/kotlin/Menu.kt +++ b/ui-kotlin/src/main/kotlin/de/unixwork/ui/kotlin/Menu.kt @@ -1,21 +1,39 @@ package de.unixwork.ui.kotlin import de.unixwork.ui.AppMenu +import de.unixwork.ui.Application import de.unixwork.ui.EventHandler +import de.unixwork.ui.Menu +import de.unixwork.ui.MenuItem import de.unixwork.ui.MenuUI import de.unixwork.ui.Toolbar import de.unixwork.ui.ToolbarPosition -fun menu(label: String, menu: MenuUI? = null) { - AppMenu.menu(label, menu) +class MenuBuilder(menu: Menu) { + private val menu = menu + + fun menuItem(label: String? = null, stockId: String? = null, icon: String? = null, onClick: EventHandler? = null) { + val item = MenuItem(label, onClick) + menu.add(item) + } + + fun menu(label: String, block: MenuBuilder.() -> Unit) { + val subMenu = Menu(label) + val builder = MenuBuilder(subMenu) + builder.block() + menu.add(subMenu) + } +} + +fun applicationMenu(block: MenuBuilder.() -> Unit) { + Application.setAppMenu(menuBuilder(block)) } -fun menuItem(label: String? = null, stockId: String? = null, icon: String? = null, onClick: EventHandler? = null) { - if(stockId != null) { - // TODO - } else { - AppMenu.menuItem(label, icon, onClick) - } +fun menuBuilder(block: MenuBuilder.() -> Unit) : Menu { + val menu = Menu() + val builder = MenuBuilder(menu) + builder.block() + return menu } fun toolbarItem(name: String, label: String? = null, icon: String? = null, stockId: String? = null, onClick: EventHandler? = null) { diff --git a/ui-kotlin/src/test/kotlin/de/unixwork/ui/kotlin/demo/Test.kt b/ui-kotlin/src/test/kotlin/de/unixwork/ui/kotlin/demo/Test.kt index 04b4e67..74f2c1c 100644 --- a/ui-kotlin/src/test/kotlin/de/unixwork/ui/kotlin/demo/Test.kt +++ b/ui-kotlin/src/test/kotlin/de/unixwork/ui/kotlin/demo/Test.kt @@ -11,6 +11,26 @@ class Test : Application { toolbarItem(name = "button1", label = "Test") addToolbarDefault("button1", ToolbarPosition.RIGHT); + applicationMenu { + menu("File") { + menuItem(label = "Open") { + println("Open") + } + menuItem(label = "Exit") { + System.exit(0) + } + } + + menu("Edit") { + menuItem(label = "Copy") { + println("Copy") + } + menuItem(label = "Paste") { + println("Paste") + } + } + } + val win = window("Test Window") { val mystr = ui.string() grid {