annotate src/luan/modules/swing/Utils.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
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
1863
928e73bfe7ea swing work
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
1 local Luan = require "luan:Luan.luan"
928e73bfe7ea swing work
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
2 local error = Luan.error
1869
Franklin Schmidt <fschmidt@gmail.com>
parents: 1863
diff changeset
3 local raw_set = Luan.raw_set or error()
1882
Franklin Schmidt <fschmidt@gmail.com>
parents: 1872
diff changeset
4 local stringify = Luan.stringify or error()
1884
Franklin Schmidt <fschmidt@gmail.com>
parents: 1882
diff changeset
5 local pairs = Luan.pairs or error()
1882
Franklin Schmidt <fschmidt@gmail.com>
parents: 1872
diff changeset
6 local Table = require "luan:Table.luan"
Franklin Schmidt <fschmidt@gmail.com>
parents: 1872
diff changeset
7 local is_empty = Table.is_empty or error()
1893
0170d482b5d5 add FlatLaf
Franklin Schmidt <fschmidt@gmail.com>
parents: 1884
diff changeset
8 require "java"
0170d482b5d5 add FlatLaf
Franklin Schmidt <fschmidt@gmail.com>
parents: 1884
diff changeset
9 local Dimension = require "java:java.awt.Dimension"
1914
Franklin Schmidt <fschmidt@gmail.com>
parents: 1893
diff changeset
10 local Point = require "java:java.awt.Point"
1863
928e73bfe7ea swing work
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
11
928e73bfe7ea swing work
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
12
928e73bfe7ea swing work
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
13 local Utils = {}
928e73bfe7ea swing work
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
14
928e73bfe7ea swing work
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
15 local fail = {}
928e73bfe7ea swing work
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
16 Utils.fail = fail
928e73bfe7ea swing work
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
17
928e73bfe7ea swing work
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
18 function Utils.make_metatable(class)
928e73bfe7ea swing work
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
19 local __index = class.__index or error()
928e73bfe7ea swing work
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
20 local __new_index = class.__new_index or error()
928e73bfe7ea swing work
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
21
928e73bfe7ea swing work
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
22 local mt = {}
928e73bfe7ea swing work
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
23
928e73bfe7ea swing work
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
24 function mt.__index(t,key)
928e73bfe7ea swing work
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
25 local rtn = __index(t,key)
928e73bfe7ea swing work
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
26 rtn ~= fail or error("'"..key.."' not defined")
928e73bfe7ea swing work
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
27 return rtn
928e73bfe7ea swing work
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
28 end
928e73bfe7ea swing work
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
29
928e73bfe7ea swing work
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
30 function mt.__new_index(t,key,value)
928e73bfe7ea swing work
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
31 local rtn = __new_index(t,key,value)
1872
Franklin Schmidt <fschmidt@gmail.com>
parents: 1869
diff changeset
32 rtn ~= fail or error("'"..key.."' not defined")
1863
928e73bfe7ea swing work
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
33 end
928e73bfe7ea swing work
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
34
928e73bfe7ea swing work
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
35 return mt
928e73bfe7ea swing work
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
36 end
928e73bfe7ea swing work
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
37
1944
Franklin Schmidt <fschmidt@gmail.com>
parents: 1914
diff changeset
38 function Utils.remove(t,key)
1882
Franklin Schmidt <fschmidt@gmail.com>
parents: 1872
diff changeset
39 return raw_set(t,key,nil)
Franklin Schmidt <fschmidt@gmail.com>
parents: 1872
diff changeset
40 end
Franklin Schmidt <fschmidt@gmail.com>
parents: 1872
diff changeset
41
Franklin Schmidt <fschmidt@gmail.com>
parents: 1872
diff changeset
42 function Utils.check_empty(props)
1884
Franklin Schmidt <fschmidt@gmail.com>
parents: 1882
diff changeset
43 if not is_empty(props) then
Franklin Schmidt <fschmidt@gmail.com>
parents: 1882
diff changeset
44 local keys = {}
Franklin Schmidt <fschmidt@gmail.com>
parents: 1882
diff changeset
45 for key in pairs(props) do
Franklin Schmidt <fschmidt@gmail.com>
parents: 1882
diff changeset
46 keys[#keys+1] = key
Franklin Schmidt <fschmidt@gmail.com>
parents: 1882
diff changeset
47 end
Franklin Schmidt <fschmidt@gmail.com>
parents: 1882
diff changeset
48 error("unrecognized keys "..stringify(keys))
Franklin Schmidt <fschmidt@gmail.com>
parents: 1882
diff changeset
49 end
Franklin Schmidt <fschmidt@gmail.com>
parents: 1882
diff changeset
50 end
Franklin Schmidt <fschmidt@gmail.com>
parents: 1882
diff changeset
51
Franklin Schmidt <fschmidt@gmail.com>
parents: 1882
diff changeset
52 function Utils.check_not_nil(props)
Franklin Schmidt <fschmidt@gmail.com>
parents: 1882
diff changeset
53 props or error "missing required properties table"
1882
Franklin Schmidt <fschmidt@gmail.com>
parents: 1872
diff changeset
54 end
Franklin Schmidt <fschmidt@gmail.com>
parents: 1872
diff changeset
55
1893
0170d482b5d5 add FlatLaf
Franklin Schmidt <fschmidt@gmail.com>
parents: 1884
diff changeset
56 function Utils.to_dimension(tbl)
0170d482b5d5 add FlatLaf
Franklin Schmidt <fschmidt@gmail.com>
parents: 1884
diff changeset
57 local width = tbl.width or error "missing width"
0170d482b5d5 add FlatLaf
Franklin Schmidt <fschmidt@gmail.com>
parents: 1884
diff changeset
58 local height = tbl.height or error "missing height"
0170d482b5d5 add FlatLaf
Franklin Schmidt <fschmidt@gmail.com>
parents: 1884
diff changeset
59 return Dimension.new(width,height)
0170d482b5d5 add FlatLaf
Franklin Schmidt <fschmidt@gmail.com>
parents: 1884
diff changeset
60 end
0170d482b5d5 add FlatLaf
Franklin Schmidt <fschmidt@gmail.com>
parents: 1884
diff changeset
61
1914
Franklin Schmidt <fschmidt@gmail.com>
parents: 1893
diff changeset
62 function Utils.from_dimension(dim)
Franklin Schmidt <fschmidt@gmail.com>
parents: 1893
diff changeset
63 return { width=dim.width, height=dim.height }
Franklin Schmidt <fschmidt@gmail.com>
parents: 1893
diff changeset
64 end
Franklin Schmidt <fschmidt@gmail.com>
parents: 1893
diff changeset
65
Franklin Schmidt <fschmidt@gmail.com>
parents: 1893
diff changeset
66 function Utils.to_point(tbl)
Franklin Schmidt <fschmidt@gmail.com>
parents: 1893
diff changeset
67 local x = tbl.x or error "missing x"
Franklin Schmidt <fschmidt@gmail.com>
parents: 1893
diff changeset
68 local y = tbl.y or error "missing y"
Franklin Schmidt <fschmidt@gmail.com>
parents: 1893
diff changeset
69 return Point.new(x,y)
Franklin Schmidt <fschmidt@gmail.com>
parents: 1893
diff changeset
70 end
Franklin Schmidt <fschmidt@gmail.com>
parents: 1893
diff changeset
71
Franklin Schmidt <fschmidt@gmail.com>
parents: 1893
diff changeset
72 function Utils.from_point(point)
Franklin Schmidt <fschmidt@gmail.com>
parents: 1893
diff changeset
73 return { x=point.x, y=point.y }
Franklin Schmidt <fschmidt@gmail.com>
parents: 1893
diff changeset
74 end
Franklin Schmidt <fschmidt@gmail.com>
parents: 1893
diff changeset
75
1863
928e73bfe7ea swing work
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
76 return Utils