Mercurial Hosting > luan
view src/luan/modules/swing/Frame.luan @ 1992:ac02e07f09de default tip
add config
author | Franklin Schmidt <fschmidt@gmail.com> |
---|---|
date | Tue, 01 Jul 2025 15:14:26 -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 ipairs = Luan.ipairs 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 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 JFrame = require "java:javax.swing.JFrame" local Logging = require "luan:logging/Logging.luan" local logger = Logging.logger "swing/Frame" local Frame = {} function Frame.__index(frame,key) local rtn = super__index(frame,key) if rtn ~= fail then return rtn end local jframe = frame.java if key == "title" then return jframe.getTitle() end return fail end function Frame.__new_index(frame,key,value) local rtn = super__new_index(frame,key,value) if rtn ~= fail then return end local jframe = frame.java if key == "title" then jframe.setTitle(value) return end return fail end local mt = make_metatable(Frame) local function new2(frame,props) super_construct(frame,props) local jframe = frame.java local content_pane = remove(props,"content_pane") if content_pane~=nil then jframe.setContentPane(content_pane.java) end check_empty(props) function frame.set_menu_bar(menu_bar) jframe.setJMenuBar(menu_bar.java) end set_metatable(frame,mt) return frame end function Frame.new(props) local jframe = JFrame.new() jframe.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); return new2( {java=jframe}, props ) end function Frame.get_all_frames() local all = {} local no_props = {} for _, jframe in ipairs{JFrame.getFrames()} do all[#all+1] = new2( {java=jframe}, no_props ) end return all end return Frame