Mercurial Hosting > luan
view src/luan/modules/swing/List.luan @ 1884:55ad3e7cd01a
swing
author | Franklin Schmidt <fschmidt@gmail.com> |
---|---|
date | Tue, 08 Apr 2025 19:43:00 -0600 |
parents | c7c7d62f8c62 |
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 Component = require "luan:swing/Component.luan" local super__index = Component.__index or error() local super__new_index = Component.__new_index or error() local super = Component.construct or error() require "java" local JList = require "java:javax.swing.JList" local DefaultListModel = require "java:javax.swing.DefaultListModel" local Logging = require "luan:logging/Logging.luan" local logger = Logging.logger "swing/List" local List = {} function List.__index(list,key) local rtn = super__index(list,key) if rtn ~= fail then return rtn end if key == "size" then return list.model.getSize() end return fail end function List.__new_index(list,key,value) local rtn = super__new_index(list,key,value) if rtn ~= fail then return end local model = list.model if model.instanceof(DefaultListModel) then if key == "size" then list.model.setSize(value) return end end return fail end local mt = make_metatable(List) local function new(model) local jlist = JList.new(model) local list = { java = jlist, model = model } super(list) if model.instanceof(DefaultListModel) then list.add_element = model.addElement end set_metatable(list,mt) return list end function List.new_default_list() return new(DefaultListModel.new()) end return List