1616
|
1 local Luan = require "luan:Luan.luan"
|
|
2 local error = Luan.error
|
|
3 local set_metatable = Luan.set_metatable or error()
|
1912
|
4 local ipairs = Luan.ipairs or error()
|
1863
|
5 local Utils = require "luan:swing/Utils.luan"
|
|
6 local fail = Utils.fail or error()
|
|
7 local make_metatable = Utils.make_metatable or error()
|
1944
|
8 local remove = Utils.remove or error()
|
1885
|
9 local check_empty = Utils.check_empty or error()
|
1863
|
10 local Text_component = require("luan:swing/Text_component.luan")
|
|
11 local super__index = Text_component.__index or error()
|
|
12 local super__new_index = Text_component.__new_index or error()
|
1885
|
13 local super_construct = Text_component.construct or error()
|
1616
|
14 require "java"
|
1874
|
15 local TextAreaLuan = require "java:luan.modules.swing.TextAreaLuan"
|
1893
|
16 local Logging = require "luan:logging/Logging.luan"
|
|
17 local logger = Logging.logger "swing/Text_area"
|
1616
|
18
|
|
19
|
|
20 local Text_area = {}
|
|
21
|
1863
|
22 function Text_area.__index(text_area,key)
|
|
23 local rtn = super__index(text_area,key)
|
|
24 if rtn ~= fail then return rtn end
|
1914
|
25 local jtext_area = text_area.java
|
1616
|
26 if key == "line_wrap" then
|
1914
|
27 return jtext_area.getLineWrap()
|
1616
|
28 end
|
|
29 if key == "wrap_style_word" then
|
1914
|
30 return jtext_area.getWrapStyleWord()
|
1616
|
31 end
|
|
32 if key == "tab_size" then
|
1914
|
33 return jtext_area.getTabSize()
|
1616
|
34 end
|
1862
|
35 if key == "rows" then
|
1914
|
36 return jtext_area.getRows()
|
1862
|
37 end
|
|
38 if key == "columns" then
|
1914
|
39 return jtext_area.getColumns()
|
1862
|
40 end
|
|
41 if key == "line_count" then
|
1914
|
42 return jtext_area.getLineCount()
|
|
43 end
|
|
44 if key == "whitespace_visible" then
|
|
45 return jtext_area.isWhitespaceVisible()
|
1862
|
46 end
|
1863
|
47 return fail
|
1616
|
48 end
|
|
49
|
1863
|
50 function Text_area.__new_index(text_area,key,value)
|
|
51 local rtn = super__new_index(text_area,key,value)
|
|
52 if rtn ~= fail then return end
|
1914
|
53 local jtext_area = text_area.java
|
1616
|
54 if key == "line_wrap" then
|
1914
|
55 jtext_area.setLineWrap(value)
|
1616
|
56 return
|
|
57 end
|
|
58 if key == "wrap_style_word" then
|
1914
|
59 jtext_area.setWrapStyleWord(value)
|
1616
|
60 return
|
|
61 end
|
|
62 if key == "tab_size" then
|
1914
|
63 jtext_area.setTabSize(value)
|
1616
|
64 return
|
|
65 end
|
1862
|
66 if key == "rows" then
|
1914
|
67 jtext_area.setRows(value)
|
1862
|
68 return
|
|
69 end
|
|
70 if key == "columns" then
|
1914
|
71 jtext_area.setColumns(value)
|
|
72 return
|
|
73 end
|
|
74 if key == "whitespace_visible" then
|
|
75 jtext_area.setWhitespaceVisible(value)
|
1616
|
76 return
|
|
77 end
|
1863
|
78 return fail
|
1616
|
79 end
|
|
80
|
1863
|
81 local mt = make_metatable(Text_area)
|
|
82
|
1885
|
83 function Text_area.new(props)
|
|
84 local jtext_area = TextAreaLuan.new()
|
|
85 local text_area = { java = jtext_area }
|
|
86 super_construct(text_area,props)
|
1944
|
87 local rows = remove(props,"rows")
|
1887
|
88 if rows~=nil then jtext_area.setRows(rows) end
|
1944
|
89 local columns = remove(props,"columns")
|
1887
|
90 if columns~=nil then jtext_area.setColumns(columns) end
|
1944
|
91 local wrap_style_word = remove(props,"wrap_style_word")
|
1887
|
92 if wrap_style_word~=nil then jtext_area.setWrapStyleWord(wrap_style_word) end
|
1944
|
93 local line_wrap = remove(props,"line_wrap")
|
1887
|
94 if line_wrap~=nil then jtext_area.setLineWrap(line_wrap) end
|
1944
|
95 local tab_size = remove(props,"tab_size")
|
1887
|
96 if tab_size~=nil then jtext_area.setTabSize(tab_size) end
|
1944
|
97 local whitespace_visible = remove(props,"whitespace_visible")
|
1914
|
98 if whitespace_visible~=nil then jtext_area.setWhitespaceVisible(whitespace_visible) end
|
1885
|
99 check_empty(props)
|
1878
|
100 function text_area.get_line_from_position(pos)
|
|
101 return jtext_area.getLineOfOffset(pos-1) + 1
|
|
102 end
|
|
103 function text_area.get_line_start_position(line)
|
|
104 return jtext_area.getLineStartOffset(line-1) + 1
|
|
105 end
|
|
106 function text_area.get_line_end_position(line)
|
|
107 return jtext_area.getLineEndOffset(line-1) + 1
|
|
108 end
|
|
109 function text_area.insert(text,pos)
|
|
110 return jtext_area.insert(text,pos-1)
|
|
111 end
|
|
112 function text_area.replace(start_pos,length,text)
|
1909
|
113 text_area._document.run_in_transaction(function()
|
|
114 return jtext_area.getDocument().replace(start_pos-1,length,text)
|
|
115 end)
|
1878
|
116 end
|
1912
|
117 function text_area.set_hightlights(hightlights)
|
|
118 local list = {}
|
|
119 for _, hightlight in ipairs(hightlights) do
|
|
120 list[#list+1] = TextAreaLuan.Range.new(hightlight.start-1,hightlight.end_-1)
|
|
121 end
|
|
122 jtext_area.setHightlights(list)
|
|
123 end
|
|
124 text_area.clear_hightlights = jtext_area.clearHighlights
|
1616
|
125 set_metatable(text_area,mt)
|
|
126 return text_area
|
|
127 end
|
|
128
|
|
129 return Text_area
|