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

minor
author Franklin Schmidt <fschmidt@gmail.com>
date Tue, 20 May 2025 11:18:26 -0600
parents a25b7963a792
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 check_not_nil = Utils.check_not_nil or error()
local new_component = require("luan:swing/Component.luan").new_component or error()
local Awt_window = require "luan:swing/Awt_window.luan"
local super__index = Awt_window.__index or error()
local super__new_index = Awt_window.__new_index or error()
local super_construct = Awt_window.construct or error()
require "java"
local JDialog = require "java:javax.swing.JDialog"
local Logging = require "luan:logging/Logging.luan"
local logger = Logging.logger "swing/Dialog"


local Dialog = {}

function Dialog.__index(dialog,key)
	local rtn = super__index(dialog,key)
	if rtn ~= fail then return rtn end
	local jdialog = dialog.java
--[[
	if key == "component" then
		local jcomponent = jdialog.getContentPane()
		local component = jcomponent.getClientProperty("luan")
		if component == nil then
			component = new_component(jcomponent)
		end
		return component
	end
]]
	return fail
end

function Dialog.__new_index(dialog,key,value)
	local rtn = super__new_index(dialog,key,value)
	if rtn ~= fail then return end
	local jdialog = dialog.java
	return fail
end

local mt = make_metatable(Dialog)

function Dialog.new(props)
	check_not_nil(props)
	local owner_frame = remove(props,"owner_frame")
	local jdialog = JDialog.new( owner_frame and owner_frame.java )
	local dialog = { java = jdialog }
	super_construct(dialog,props)
	local content_pane = remove(props,"content_pane")
	if content_pane~=nil then jdialog.setContentPane(content_pane.java) end
	check_empty(props)
	function dialog.move_into_owner()
		jdialog.setLocationRelativeTo(jdialog.getOwner())
	end
	set_metatable(dialog,mt)
	return dialog
end

return Dialog