view src/luan/modules/swing/Label.luan @ 1996:d5c21ca9703e default tip

move threads to admin
author Franklin Schmidt <fschmidt@gmail.com>
date Fri, 04 Jul 2025 11:39:41 -0600
parents bb12d502b72e
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 Component = require "luan:swing/Component.luan"
local super__index = Component.__index or error()
local super__new_index = Component.__new_index or error()
local super_construct = Component.construct or error()
require "java"
--local JLabel = require "java:javax.swing.JLabel"  sucks because can't copy
local JTextField = require "java:javax.swing.JTextField"
local UIManager = require "java:javax.swing.UIManager"
local Logging = require "luan:logging/Logging.luan"
local logger = Logging.logger "swing/Label"


local Label = {}

function Label.__index(label,key)
	local rtn = super__index(label,key)
	if rtn ~= fail then return rtn end
	if key == "text" then
		return label.java.getText()
	end
	return fail
end

function Label.__new_index(label,key,value)
	local rtn = super__new_index(label,key,value)
	if rtn ~= fail then return end
	if key == "text" then
		label.java.setText(value)
		return
	end
	return fail
end

local mt = make_metatable(Label)

function Label.new(props)
	local jlabel = JTextField.new()
	jlabel.setEditable(false)
	jlabel.setBorder(nil)
	jlabel.setOpaque(false)
	jlabel.setFont(UIManager.getFont("Label.font"))
	local label = { java = jlabel }
	super_construct(label,props)
	local text = remove(props,"text")
	if text~=nil then jlabel.setText(text) end
	check_empty(props)
	set_metatable(label,mt)
	return label
end

return Label