changeset 1864:a005c503d564

swing work
author Franklin Schmidt <fschmidt@gmail.com>
date Mon, 31 Mar 2025 16:59:43 -0600
parents 928e73bfe7ea
children 58938d6045e4
files src/luan/modules/swing/Check_box_menu_item.luan src/luan/modules/swing/Component.luan src/luan/modules/swing/Menu_item.luan src/luan/modules/swing/Text_area.luan
diffstat 4 files changed, 54 insertions(+), 8 deletions(-) [+]
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/luan/modules/swing/Check_box_menu_item.luan	Mon Mar 31 16:59:43 2025 -0600
@@ -0,0 +1,45 @@
+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 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 new_menu_item = Menu_item.new or error()
+require "java"
+local JCheckBoxMenuItem = require "java:javax.swing.JCheckBoxMenuItem"
+
+
+local Check_box_menu_item = {}
+
+function Check_box_menu_item.__index(cbmi,key)
+	local rtn = super__index(cbmi,key)
+	if rtn ~= fail then return rtn end
+	if key == "state" then
+		return cbmi.java.getState()
+	end
+	return fail
+end
+
+function Check_box_menu_item.__new_index(cbmi,key,value)
+	local rtn = super__new_index(cbmi,key,value)
+	if rtn ~= fail then return end
+	if key == "state" then
+		cbmi.java.setState(value)
+		return
+	end
+	return fail
+end
+
+local mt = make_metatable(Check_box_menu_item)
+
+function Check_box_menu_item.new(cbmi)
+	local cbmi = { java = JCheckBoxMenuItem.new() }
+	new_menu_item(cbmi)
+	set_metatable(cbmi,mt)
+	return cbmi
+end
+
+return Check_box_menu_item
--- a/src/luan/modules/swing/Component.luan	Mon Mar 31 13:46:47 2025 -0600
+++ b/src/luan/modules/swing/Component.luan	Mon Mar 31 16:59:43 2025 -0600
@@ -5,9 +5,9 @@
 
 local Component = {}
 
-function Component.new(java)
-	local component = { java = java }
-	component.request_focus_in_window = java.requestFocusInWindow
+function Component.new(component)
+	local jcomponent = component.java
+	component.request_focus_in_window = jcomponent.requestFocusInWindow
 	return component
 end
 
--- a/src/luan/modules/swing/Menu_item.luan	Mon Mar 31 13:46:47 2025 -0600
+++ b/src/luan/modules/swing/Menu_item.luan	Mon Mar 31 16:59:43 2025 -0600
@@ -39,9 +39,9 @@
 
 local mt = make_metatable(Menu_item)
 
-function Menu_item.new()
-	local jmenu_item = JMenuItem.new()
-	local menu_item = { java = jmenu_item }
+function Menu_item.new(menu_item)
+	local menu_item = menu_item or { java = JMenuItem.new() }
+	local jmenu_item = menu_item.java
 	function menu_item.add_action_listener(action_listener)
 		jmenu_item.addActionListener(newActionListener(action_listener))
 	end
--- a/src/luan/modules/swing/Text_area.luan	Mon Mar 31 13:46:47 2025 -0600
+++ b/src/luan/modules/swing/Text_area.luan	Mon Mar 31 16:59:43 2025 -0600
@@ -69,8 +69,9 @@
 local mt = make_metatable(Text_area)
 
 function Text_area.new()
-	local jtext_area = JTextArea.new()
-	local text_area = new_text_component(jtext_area)
+	local text_area = { java = JTextArea.new() }
+	new_text_component(text_area)
+	local jtext_area = text_area.java
 	text_area.select = jtext_area.select or error()
 	function text_area.set_font(font)
 		if type(font) == "table" then