changeset 1868:03209933fe4a default tip

swing
author Franklin Schmidt <fschmidt@gmail.com>
date Mon, 31 Mar 2025 22:36:08 -0600
parents 8b3b0ada9420
children
files src/luan/modules/swing/Abstract_button.luan src/luan/modules/swing/Component.luan src/luan/modules/swing/Menu_item.luan src/luan/modules/swing/Text_area.luan src/luan/modules/swing/Text_component.luan
diffstat 5 files changed, 23 insertions(+), 9 deletions(-) [+]
line wrap: on
line diff
--- a/src/luan/modules/swing/Abstract_button.luan	Mon Mar 31 21:50:22 2025 -0600
+++ b/src/luan/modules/swing/Abstract_button.luan	Mon Mar 31 22:36:08 2025 -0600
@@ -22,4 +22,10 @@
 	return fail
 end
 
+function Abstract_button.new(button)
+	local jbutton = button.java
+	button.set_enabled = jbutton.setEnabled
+	return button
+end
+
 return Abstract_button
--- a/src/luan/modules/swing/Component.luan	Mon Mar 31 21:50:22 2025 -0600
+++ b/src/luan/modules/swing/Component.luan	Mon Mar 31 22:36:08 2025 -0600
@@ -1,5 +1,7 @@
 local Luan = require "luan:Luan.luan"
 local error = Luan.error
+local type = Luan.type or error()
+local get_font = require("luan:swing/Font.luan").get or error()
 require "java"
 
 
@@ -8,6 +10,12 @@
 function Component.new(component)
 	local jcomponent = component.java
 	component.request_focus_in_window = jcomponent.requestFocusInWindow
+	function component.set_font(font)
+		if type(font) == "table" then
+			font = get_font(font)
+		end
+		jcomponent.setFont(font)
+	end
 	return component
 end
 
--- a/src/luan/modules/swing/Menu_item.luan	Mon Mar 31 21:50:22 2025 -0600
+++ b/src/luan/modules/swing/Menu_item.luan	Mon Mar 31 22:36:08 2025 -0600
@@ -7,6 +7,7 @@
 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 = Abstract_button.new or error()
 require "java"
 local JMenuItem = require "java:javax.swing.JMenuItem"
 local KeyStroke = require "java:javax.swing.KeyStroke"
@@ -41,6 +42,7 @@
 
 function Menu_item.new(menu_item)
 	local menu_item = menu_item or { java = JMenuItem.new() }
+	super(menu_item)
 	local jmenu_item = menu_item.java
 	function menu_item.add_action_listener(action_listener)
 		jmenu_item.addActionListener(newActionListener(action_listener))
--- a/src/luan/modules/swing/Text_area.luan	Mon Mar 31 21:50:22 2025 -0600
+++ b/src/luan/modules/swing/Text_area.luan	Mon Mar 31 22:36:08 2025 -0600
@@ -1,11 +1,9 @@
 local Luan = require "luan:Luan.luan"
 local error = Luan.error
 local set_metatable = Luan.set_metatable or error()
-local type = Luan.type or error()
 local Utils = require "luan:swing/Utils.luan"
 local fail = Utils.fail or error()
 local make_metatable = Utils.make_metatable or error()
-local get_font = require("luan:swing/Font.luan").get or error()
 local Text_component = require("luan:swing/Text_component.luan")
 local super__index = Text_component.__index or error()
 local super__new_index = Text_component.__new_index or error()
@@ -72,13 +70,6 @@
 	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
-			font = get_font(font)
-		end
-		jtext_area.setFont(font)
-	end
 	set_metatable(text_area,mt)
 	return text_area
 end
--- a/src/luan/modules/swing/Text_component.luan	Mon Mar 31 21:50:22 2025 -0600
+++ b/src/luan/modules/swing/Text_component.luan	Mon Mar 31 22:36:08 2025 -0600
@@ -15,6 +15,9 @@
 	if key == "document" then
 		return text_component.java.getDocument()
 	end
+	if key == "caret_position" then
+		return text_component.java.getCaretPosition()
+	end
 	return fail
 end
 
@@ -27,6 +30,10 @@
 		text_component.java.setDocument(value)
 		return
 	end
+	if key == "caret_position" then
+		text_component.java.setCaretPosition(value)
+		return
+	end
 	return fail
 end