Mercurial Hosting > luan
view src/luan/modules/swing/Menu.luan @ 1944:bb12d502b72e default tip
minor
author | Franklin Schmidt <fschmidt@gmail.com> |
---|---|
date | Tue, 20 May 2025 11:18:26 -0600 |
parents | d1708f8d4923 |
children |
line wrap: on
line source
local Luan = require "luan:Luan.luan" local error = Luan.error local set_metatable = Luan.set_metatable or error() local ipairs = Luan.ipairs or error() local Utils = require "luan:swing/Utils.luan" local make_metatable = Utils.make_metatable or error() local check_empty = Utils.check_empty or error() local remove = Utils.remove or error() local Menu_item = require "luan:swing/Menu_item.luan" local super__index = Menu_item.__index or error() local super__new_index = Menu_item.__new_index or error() local super_construct = Menu_item.construct or error() require "java" local JMenu = require "java:javax.swing.JMenu" local Menu = {} Menu.__index = super__index Menu.__new_index = super__new_index local mt = make_metatable(Menu) local separator = {} Menu.separator = separator function Menu.new(props) local jmenu = JMenu.new() local menu = { java = jmenu } super_construct(menu,props) local menu_items = remove(props,"menu_items") if menu_items~=nil then for _, menu_item in ipairs(menu_items) do if menu_item == separator then jmenu.addSeparator() else jmenu.add(menu_item.java) end end end check_empty(props) menu.add_separator = jmenu.addSeparator function menu.add(menu_item) jmenu.add(menu_item.java) end set_metatable(menu,mt) return menu end return Menu