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) {
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 {