view src/luan/modules/swing/Menu_item.luan @ 1944:bb12d502b72e default tip

minor
author Franklin Schmidt <fschmidt@gmail.com>
date Tue, 20 May 2025 11:18:26 -0600
parents 3990486911d9
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 Utils = require "luan:swing/Utils.luan"
local fail = Utils.fail or error()
local make_metatable = Utils.make_metatable or error()
local remove = Utils.remove or error()
local check_empty = Utils.check_empty or error()
local Abstract_button = require "luan:swing/Abstract_button.luan"
local super__index = Abstract_button.__index or error()
local super__new_index = Abstract_button.__new_index or error()
local super_construct = Abstract_button.construct or error()
require "java"
local JMenuItem = require "java:javax.swing.JMenuItem"
local KeyStroke = require "java:javax.swing.KeyStroke"
local KeyEvent = require "java:java.awt.event.KeyEvent"
local InputEvent = require "java:java.awt.event.InputEvent"


local Menu_item = {}

function Menu_item.__index(menu_item,key)
	local rtn = super__index(menu_item,key)
	if rtn ~= fail then return rtn end
	if key == "accelerator" then
		return menu_item.java.getAccelerator().toString()
	end
	return fail
end

function Menu_item.__new_index(menu_item,key,value)
	local rtn = super__new_index(menu_item,key,value)
	if rtn ~= fail then return end
	if key == "accelerator" then
		menu_item.java.setAccelerator(KeyStroke.getKeyStroke(value))
		--menu_item.java.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_N,InputEvent.META_DOWN_MASK))
		return
	end
	return fail
end

local mt = make_metatable(Menu_item)

local function construct(menu_item,props)
	super_construct(menu_item,props)
	local jmenu_item = menu_item.java
	local accelerator = remove(props,"accelerator")
	if accelerator~=nil then jmenu_item.setAccelerator(KeyStroke.getKeyStroke(accelerator)) end
	return menu_item
end
Menu_item.construct = construct

function Menu_item.new(props)
	local jmenu_item = JMenuItem.new()
	local menu_item = { java = jmenu_item }
	menu_item = construct(menu_item,props)
	check_empty(props)
	set_metatable(menu_item,mt)
	return menu_item
end

return Menu_item