Mercurial Hosting > luan
view src/luan/modules/swing/Dialog.luan @ 1881:c7c7d62f8c62
swing
author | Franklin Schmidt <fschmidt@gmail.com> |
---|---|
date | Mon, 07 Apr 2025 21:14:53 -0600 |
parents | |
children | f8ca4a147ac9 |
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 new_component = require("luan:swing/Component.luan").new 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 jdialog = dialog.java if key == "visible" then return jdialog.isVisible() end if key == "component" then local jcomponent = jdialog.getContentPane() local component = jcomponent.getClientProperty("luan") if component == nil then component = new_component{java=jcomponent} end return component end return fail end function Dialog.__new_index(dialog,key,value) local jdialog = dialog.java if key == "visible" then jdialog.setVisible(value) return end return fail end local mt = make_metatable(Dialog) function Dialog.new(frame) local jframe = frame.java local jdialog = JDialog.new(jframe) --logger.info(jdialog.getContentPane()) local dialog = { java = jdialog } dialog.pack = jdialog.pack function dialog.move_into_owner() jdialog.setLocationRelativeTo(jframe) end set_metatable(dialog,mt) return dialog end return Dialog