9cdb5c20cd2ab6e2869c7d0f6f014f13ce1ce988
[jalviewjs.git] / site / swingjs / j2s / javax / swing / JTextArea.js
1 Clazz.declarePackage ("javax.swing");\r
2 Clazz.load (["javax.swing.text.JTextComponent"], "javax.swing.JTextArea", ["java.lang.IllegalArgumentException", "java.awt.Dimension", "javax.swing.JComponent", "$.LookAndFeel", "javax.swing.text.BadLocationException", "$.JSMinimalAbstractDocument", "swingjs.JSToolkit"], function () {\r
3 c$ = Clazz.decorateAsClass (function () {\r
4 this.rows = 0;\r
5 this.columns = 0;\r
6 this.columnWidth = 0;\r
7 this.rowHeight = 0;\r
8 this.wrap = false;\r
9 this.word = false;\r
10 Clazz.instantialize (this, arguments);\r
11 }, javax.swing, "JTextArea", javax.swing.text.JTextComponent);\r
12 Clazz.makeConstructor (c$, \r
13 function () {\r
14 this.construct (null, null, 0, 0);\r
15 });\r
16 Clazz.makeConstructor (c$, \r
17 function (text) {\r
18 this.construct (null, text, 0, 0);\r
19 }, "~S");\r
20 Clazz.makeConstructor (c$, \r
21 function (rows, columns) {\r
22 this.construct (null, null, rows, columns);\r
23 }, "~N,~N");\r
24 Clazz.makeConstructor (c$, \r
25 function (text, rows, columns) {\r
26 this.construct (null, text, rows, columns);\r
27 }, "~S,~N,~N");\r
28 Clazz.makeConstructor (c$, \r
29 function (doc) {\r
30 this.construct (doc, null, 0, 0);\r
31 }, "javax.swing.text.Document");\r
32 Clazz.makeConstructor (c$, \r
33 function (doc, text, rows, columns) {\r
34 Clazz.superConstructor (this, javax.swing.JTextArea);\r
35 this.rows = rows;\r
36 this.columns = columns;\r
37 if (doc == null) {\r
38 doc = this.createDefaultModel ();\r
39 }this.setDocument (doc);\r
40 if (text != null) {\r
41 this.setText (text);\r
42 this.select (0, 0);\r
43 }if (rows < 0) {\r
44 throw  new IllegalArgumentException ("rows: " + rows);\r
45 }if (columns < 0) {\r
46 throw  new IllegalArgumentException ("columns: " + columns);\r
47 }javax.swing.LookAndFeel.installProperty (this, "focusTraversalKeysForward", javax.swing.JComponent.getManagingFocusForwardTraversalKeys ());\r
48 javax.swing.LookAndFeel.installProperty (this, "focusTraversalKeysBackward", javax.swing.JComponent.getManagingFocusBackwardTraversalKeys ());\r
49 }, "javax.swing.text.Document,~S,~N,~N");\r
50 Clazz.overrideMethod (c$, "getUIClassID", \r
51 function () {\r
52 return "TextAreaUI";\r
53 });\r
54 Clazz.defineMethod (c$, "createDefaultModel", \r
55 function () {\r
56 return swingjs.JSToolkit.getPlainDocument (this);\r
57 });\r
58 Clazz.defineMethod (c$, "setTabSize", \r
59 function (size) {\r
60 var doc = this.getDocument ();\r
61 if (doc != null) {\r
62 var old = this.getTabSize ();\r
63 doc.putProperty ("tabSize",  new Integer (size));\r
64 this.firePropertyChangeInt ("tabSize", old, size);\r
65 }}, "~N");\r
66 Clazz.defineMethod (c$, "getTabSize", \r
67 function () {\r
68 var size = 8;\r
69 var doc = this.getDocument ();\r
70 if (doc != null) {\r
71 var i = doc.getProperty ("tabSize");\r
72 if (i != null) {\r
73 size = i.intValue ();\r
74 }}return size;\r
75 });\r
76 Clazz.defineMethod (c$, "setLineWrap", \r
77 function (wrap) {\r
78 var old = this.wrap;\r
79 this.wrap = wrap;\r
80 this.firePropertyChangeBool ("lineWrap", old, wrap);\r
81 }, "~B");\r
82 Clazz.defineMethod (c$, "getLineWrap", \r
83 function () {\r
84 return this.wrap;\r
85 });\r
86 Clazz.defineMethod (c$, "setWrapStyleWord", \r
87 function (word) {\r
88 var old = this.word;\r
89 this.word = word;\r
90 this.firePropertyChangeBool ("wrapStyleWord", old, word);\r
91 }, "~B");\r
92 Clazz.defineMethod (c$, "getWrapStyleWord", \r
93 function () {\r
94 return this.word;\r
95 });\r
96 Clazz.defineMethod (c$, "getLineOfOffset", \r
97 function (offset) {\r
98 var doc = this.getDocument ();\r
99 if (offset < 0) {\r
100 throw  new javax.swing.text.BadLocationException ("Can't translate offset to line", -1);\r
101 } else if (offset > doc.getLength ()) {\r
102 throw  new javax.swing.text.BadLocationException ("Can't translate offset to line", doc.getLength () + 1);\r
103 } else {\r
104 var map = this.getDocument ().getDefaultRootElement ();\r
105 return map.getElementIndex (offset);\r
106 }}, "~N");\r
107 Clazz.defineMethod (c$, "getLineCount", \r
108 function () {\r
109 var map = this.getDocument ().getDefaultRootElement ();\r
110 return map.getElementCount ();\r
111 });\r
112 Clazz.defineMethod (c$, "getLineStartOffset", \r
113 function (line) {\r
114 var lineCount = this.getLineCount ();\r
115 if (line < 0) {\r
116 throw  new javax.swing.text.BadLocationException ("Negative line", -1);\r
117 } else if (line >= lineCount) {\r
118 throw  new javax.swing.text.BadLocationException ("No such line", this.getDocument ().getLength () + 1);\r
119 } else {\r
120 var map = this.getDocument ().getDefaultRootElement ();\r
121 var lineElem = map.getElement (line);\r
122 return lineElem.getStartOffset ();\r
123 }}, "~N");\r
124 Clazz.defineMethod (c$, "getLineEndOffset", \r
125 function (line) {\r
126 var lineCount = this.getLineCount ();\r
127 if (line < 0) {\r
128 throw  new javax.swing.text.BadLocationException ("Negative line", -1);\r
129 } else if (line >= lineCount) {\r
130 throw  new javax.swing.text.BadLocationException ("No such line", this.getDocument ().getLength () + 1);\r
131 } else {\r
132 var map = this.getDocument ().getDefaultRootElement ();\r
133 var lineElem = map.getElement (line);\r
134 var endOffset = lineElem.getEndOffset ();\r
135 return ((line == lineCount - 1) ? (endOffset - 1) : endOffset);\r
136 }}, "~N");\r
137 Clazz.defineMethod (c$, "insert", \r
138 function (str, pos) {\r
139 var doc = this.getDocument ();\r
140 if (doc != null) {\r
141 try {\r
142 doc.insertString (pos, str, null);\r
143 } catch (e) {\r
144 if (Clazz.exceptionOf (e, javax.swing.text.BadLocationException)) {\r
145 throw  new IllegalArgumentException (e.getMessage ());\r
146 } else {\r
147 throw e;\r
148 }\r
149 }\r
150 }}, "~S,~N");\r
151 Clazz.defineMethod (c$, "append", \r
152 function (str) {\r
153 var doc = this.getDocument ();\r
154 if (doc != null) {\r
155 try {\r
156 doc.insertString (doc.getLength (), str, null);\r
157 } catch (e) {\r
158 if (Clazz.exceptionOf (e, javax.swing.text.BadLocationException)) {\r
159 } else {\r
160 throw e;\r
161 }\r
162 }\r
163 }}, "~S");\r
164 Clazz.defineMethod (c$, "replaceRange", \r
165 function (str, start, end) {\r
166 if (end < start) {\r
167 throw  new IllegalArgumentException ("end before start");\r
168 }var doc = this.getDocument ();\r
169 if (doc != null) {\r
170 try {\r
171 if (Clazz.instanceOf (doc, javax.swing.text.JSMinimalAbstractDocument)) {\r
172 (doc).replace (start, end - start, str, null);\r
173 } else {\r
174 doc.remove (start, end - start);\r
175 doc.insertString (start, str, null);\r
176 }} catch (e) {\r
177 if (Clazz.exceptionOf (e, javax.swing.text.BadLocationException)) {\r
178 throw  new IllegalArgumentException (e.getMessage ());\r
179 } else {\r
180 throw e;\r
181 }\r
182 }\r
183 }}, "~S,~N,~N");\r
184 Clazz.defineMethod (c$, "getRows", \r
185 function () {\r
186 return this.rows;\r
187 });\r
188 Clazz.defineMethod (c$, "setRows", \r
189 function (rows) {\r
190 var oldVal = this.rows;\r
191 if (rows < 0) {\r
192 throw  new IllegalArgumentException ("rows less than zero.");\r
193 }if (rows != oldVal) {\r
194 this.rows = rows;\r
195 this.invalidate ();\r
196 }}, "~N");\r
197 Clazz.defineMethod (c$, "getRowHeight", \r
198 function () {\r
199 if (this.rowHeight == 0) {\r
200 var metrics = this.getFontMetrics (this.getFont ());\r
201 this.rowHeight = metrics.getHeight ();\r
202 }return this.rowHeight;\r
203 });\r
204 Clazz.defineMethod (c$, "getColumns", \r
205 function () {\r
206 return this.columns;\r
207 });\r
208 Clazz.defineMethod (c$, "setColumns", \r
209 function (columns) {\r
210 var oldVal = this.columns;\r
211 if (columns < 0) {\r
212 throw  new IllegalArgumentException ("columns less than zero.");\r
213 }if (columns != oldVal) {\r
214 this.columns = columns;\r
215 this.invalidate ();\r
216 }}, "~N");\r
217 Clazz.defineMethod (c$, "getColumnWidth", \r
218 function () {\r
219 if (this.columnWidth == 0) {\r
220 var metrics = this.getFontMetrics (this.getFont ());\r
221 this.columnWidth = metrics.charWidth ('m');\r
222 }return this.columnWidth;\r
223 });\r
224 Clazz.overrideMethod (c$, "getPreferredSize", \r
225 function () {\r
226 var d = this.getPrefSizeJComp ();\r
227 d = (d == null) ?  new java.awt.Dimension (400, 400) : d;\r
228 var insets = this.getInsets ();\r
229 if (this.columns != 0) {\r
230 d.width = Math.max (d.width, this.columns * this.getColumnWidth () + insets.left + insets.right);\r
231 }if (this.rows != 0) {\r
232 d.height = Math.max (d.height, this.rows * this.getRowHeight () + insets.top + insets.bottom);\r
233 }return d;\r
234 });\r
235 Clazz.defineMethod (c$, "setFont", \r
236 function (f) {\r
237 Clazz.superCall (this, javax.swing.JTextArea, "setFont", [f]);\r
238 this.rowHeight = 0;\r
239 this.columnWidth = 0;\r
240 }, "java.awt.Font");\r
241 Clazz.defineMethod (c$, "paramString", \r
242 function () {\r
243 var wrapString = (this.wrap ? "true" : "false");\r
244 var wordString = (this.word ? "true" : "false");\r
245 return Clazz.superCall (this, javax.swing.JTextArea, "paramString", []) + ",colums=" + this.columns + ",columWidth=" + this.columnWidth + ",rows=" + this.rows + ",rowHeight=" + this.rowHeight + ",word=" + wordString + ",wrap=" + wrapString;\r
246 });\r
247 Clazz.defineMethod (c$, "getScrollableTracksViewportWidth", \r
248 function () {\r
249 return (this.wrap) ? true : Clazz.superCall (this, javax.swing.JTextArea, "getScrollableTracksViewportWidth", []);\r
250 });\r
251 Clazz.defineMethod (c$, "getPreferredScrollableViewportSize", \r
252 function () {\r
253 var size = Clazz.superCall (this, javax.swing.JTextArea, "getPreferredScrollableViewportSize", []);\r
254 size = (size == null) ?  new java.awt.Dimension (400, 400) : size;\r
255 var insets = this.getInsets ();\r
256 size.width = (this.columns == 0) ? size.width : this.columns * this.getColumnWidth () + insets.left + insets.right;\r
257 size.height = (this.rows == 0) ? size.height : this.rows * this.getRowHeight () + insets.top + insets.bottom;\r
258 return size;\r
259 });\r
260 Clazz.overrideMethod (c$, "getScrollableUnitIncrement", \r
261 function (visibleRect, orientation, direction) {\r
262 switch (orientation) {\r
263 case 1:\r
264 return this.getRowHeight ();\r
265 case 0:\r
266 return this.getColumnWidth ();\r
267 default:\r
268 throw  new IllegalArgumentException ("Invalid orientation: " + orientation);\r
269 }\r
270 }, "java.awt.Rectangle,~N,~N");\r
271 Clazz.defineStatics (c$,\r
272 "$uiClassID", "TextAreaUI");\r
273 });\r