402c0b58af45d7b2a742a6cbfb49a2b897ea5244
[jalviewjs.git] / site / swingjs / j2s / javax / swing / text / DefaultHighlighter.js
1 Clazz.declarePackage ("javax.swing.text");\r
2 Clazz.load (["javax.swing.text.Highlighter", "$.LayeredHighlighter", "java.util.Vector"], "javax.swing.text.DefaultHighlighter", ["java.awt.Rectangle", "javax.swing.SwingUtilities", "javax.swing.text.LayeredHighlighter.LayerPainter", "javax.swing.text.Position"], function () {\r
3 c$ = Clazz.decorateAsClass (function () {\r
4 this.highlights = null;\r
5 this.component = null;\r
6 this.drawsLayeredHighlights = false;\r
7 this.safeDamager = null;\r
8 if (!Clazz.isClassDefined ("javax.swing.text.DefaultHighlighter.HighlightInfo")) {\r
9 javax.swing.text.DefaultHighlighter.$DefaultHighlighter$HighlightInfo$ ();\r
10 }\r
11 if (!Clazz.isClassDefined ("javax.swing.text.DefaultHighlighter.LayeredHighlightInfo")) {\r
12 javax.swing.text.DefaultHighlighter.$DefaultHighlighter$LayeredHighlightInfo$ ();\r
13 }\r
14 if (!Clazz.isClassDefined ("javax.swing.text.DefaultHighlighter.SafeDamager")) {\r
15 javax.swing.text.DefaultHighlighter.$DefaultHighlighter$SafeDamager$ ();\r
16 }\r
17 Clazz.instantialize (this, arguments);\r
18 }, javax.swing.text, "DefaultHighlighter", javax.swing.text.LayeredHighlighter);\r
19 Clazz.prepareFields (c$, function () {\r
20 this.highlights =  new java.util.Vector ();\r
21 this.safeDamager = Clazz.innerTypeInstance (javax.swing.text.DefaultHighlighter.SafeDamager, this, null);\r
22 });\r
23 Clazz.makeConstructor (c$, \r
24 function () {\r
25 Clazz.superConstructor (this, javax.swing.text.DefaultHighlighter, []);\r
26 this.drawsLayeredHighlights = true;\r
27 });\r
28 Clazz.overrideMethod (c$, "paint", \r
29 function (g) {\r
30 var len = this.highlights.size ();\r
31 for (var i = 0; i < len; i++) {\r
32 var info = this.highlights.elementAt (i);\r
33 if (!(Clazz.instanceOf (info, javax.swing.text.DefaultHighlighter.LayeredHighlightInfo))) {\r
34 var a = this.component.getBounds ();\r
35 var insets = this.component.getInsets ();\r
36 a.x = insets.left;\r
37 a.y = insets.top;\r
38 a.width -= insets.left + insets.right;\r
39 a.height -= insets.top + insets.bottom;\r
40 for (; i < len; i++) {\r
41 info = this.highlights.elementAt (i);\r
42 if (!(Clazz.instanceOf (info, javax.swing.text.DefaultHighlighter.LayeredHighlightInfo))) {\r
43 var p = info.getPainter ();\r
44 p.paint (g, info.getStartOffset (), info.getEndOffset (), a, this.component);\r
45 }}\r
46 }}\r
47 }, "java.awt.Graphics");\r
48 Clazz.overrideMethod (c$, "install", \r
49 function (c) {\r
50 this.component = c;\r
51 this.removeAllHighlights ();\r
52 }, "javax.swing.text.JTextComponent");\r
53 Clazz.overrideMethod (c$, "deinstall", \r
54 function (c) {\r
55 this.component = null;\r
56 }, "javax.swing.text.JTextComponent");\r
57 Clazz.overrideMethod (c$, "addHighlight", \r
58 function (p0, p1, p) {\r
59 var doc = this.component.getDocument ();\r
60 var i = (this.getDrawsLayeredHighlights () && (Clazz.instanceOf (p, javax.swing.text.LayeredHighlighter.LayerPainter))) ? Clazz.innerTypeInstance (javax.swing.text.DefaultHighlighter.LayeredHighlightInfo, this, null) : Clazz.innerTypeInstance (javax.swing.text.DefaultHighlighter.HighlightInfo, this, null);\r
61 i.painter = p;\r
62 i.p0 = doc.createPosition (p0);\r
63 i.p1 = doc.createPosition (p1);\r
64 this.highlights.addElement (i);\r
65 this.safeDamageRange (p0, p1);\r
66 return i;\r
67 }, "~N,~N,javax.swing.text.Highlighter.HighlightPainter");\r
68 Clazz.overrideMethod (c$, "removeHighlight", \r
69 function (tag) {\r
70 if (Clazz.instanceOf (tag, javax.swing.text.DefaultHighlighter.LayeredHighlightInfo)) {\r
71 var lhi = tag;\r
72 if (lhi.width > 0 && lhi.height > 0) {\r
73 this.component.repaint (lhi.x, lhi.y, lhi.width, lhi.height);\r
74 }} else {\r
75 var info = tag;\r
76 this.safeDamageRange (info.p0, info.p1);\r
77 }this.highlights.removeElement (tag);\r
78 }, "~O");\r
79 Clazz.overrideMethod (c$, "removeAllHighlights", \r
80 function () {\r
81 var mapper = this.component.getUI ();\r
82 if (this.getDrawsLayeredHighlights ()) {\r
83 var len = this.highlights.size ();\r
84 if (len != 0) {\r
85 var minX = 0;\r
86 var minY = 0;\r
87 var maxX = 0;\r
88 var maxY = 0;\r
89 var p0 = -1;\r
90 var p1 = -1;\r
91 for (var i = 0; i < len; i++) {\r
92 var hi = this.highlights.elementAt (i);\r
93 if (Clazz.instanceOf (hi, javax.swing.text.DefaultHighlighter.LayeredHighlightInfo)) {\r
94 var info = hi;\r
95 minX = Math.min (minX, info.x);\r
96 minY = Math.min (minY, info.y);\r
97 maxX = Math.max (maxX, info.x + info.width);\r
98 maxY = Math.max (maxY, info.y + info.height);\r
99 } else {\r
100 if (p0 == -1) {\r
101 p0 = hi.p0.getOffset ();\r
102 p1 = hi.p1.getOffset ();\r
103 } else {\r
104 p0 = Math.min (p0, hi.p0.getOffset ());\r
105 p1 = Math.max (p1, hi.p1.getOffset ());\r
106 }}}\r
107 if (minX != maxX && minY != maxY) {\r
108 this.component.repaint (minX, minY, maxX - minX, maxY - minY);\r
109 }if (p0 != -1) {\r
110 try {\r
111 this.safeDamageRange (p0, p1);\r
112 } catch (e) {\r
113 if (Clazz.exceptionOf (e, javax.swing.text.BadLocationException)) {\r
114 } else {\r
115 throw e;\r
116 }\r
117 }\r
118 }this.highlights.removeAllElements ();\r
119 }} else if (mapper != null) {\r
120 var len = this.highlights.size ();\r
121 if (len != 0) {\r
122 var p0 = 2147483647;\r
123 var p1 = 0;\r
124 for (var i = 0; i < len; i++) {\r
125 var info = this.highlights.elementAt (i);\r
126 p0 = Math.min (p0, info.p0.getOffset ());\r
127 p1 = Math.max (p1, info.p1.getOffset ());\r
128 }\r
129 try {\r
130 this.safeDamageRange (p0, p1);\r
131 } catch (e) {\r
132 if (Clazz.exceptionOf (e, javax.swing.text.BadLocationException)) {\r
133 } else {\r
134 throw e;\r
135 }\r
136 }\r
137 this.highlights.removeAllElements ();\r
138 }}});\r
139 Clazz.overrideMethod (c$, "changeHighlight", \r
140 function (tag, p0, p1) {\r
141 var doc = this.component.getDocument ();\r
142 if (Clazz.instanceOf (tag, javax.swing.text.DefaultHighlighter.LayeredHighlightInfo)) {\r
143 var lhi = tag;\r
144 if (lhi.width > 0 && lhi.height > 0) {\r
145 this.component.repaint (lhi.x, lhi.y, lhi.width, lhi.height);\r
146 }lhi.width = lhi.height = 0;\r
147 lhi.p0 = doc.createPosition (p0);\r
148 lhi.p1 = doc.createPosition (p1);\r
149 this.safeDamageRange (Math.min (p0, p1), Math.max (p0, p1));\r
150 } else {\r
151 var info = tag;\r
152 var oldP0 = info.p0.getOffset ();\r
153 var oldP1 = info.p1.getOffset ();\r
154 if (p0 == oldP0) {\r
155 this.safeDamageRange (Math.min (oldP1, p1), Math.max (oldP1, p1));\r
156 } else if (p1 == oldP1) {\r
157 this.safeDamageRange (Math.min (p0, oldP0), Math.max (p0, oldP0));\r
158 } else {\r
159 this.safeDamageRange (oldP0, oldP1);\r
160 this.safeDamageRange (p0, p1);\r
161 }info.p0 = doc.createPosition (p0);\r
162 info.p1 = doc.createPosition (p1);\r
163 }}, "~O,~N,~N");\r
164 Clazz.overrideMethod (c$, "getHighlights", \r
165 function () {\r
166 var size = this.highlights.size ();\r
167 if (size == 0) {\r
168 return javax.swing.text.DefaultHighlighter.noHighlights;\r
169 }var h =  new Array (size);\r
170 this.highlights.copyInto (h);\r
171 return h;\r
172 });\r
173 Clazz.overrideMethod (c$, "paintLayeredHighlights", \r
174 function (g, p0, p1, viewBounds, editor, view) {\r
175 for (var counter = this.highlights.size () - 1; counter >= 0; counter--) {\r
176 var tag = this.highlights.elementAt (counter);\r
177 if (Clazz.instanceOf (tag, javax.swing.text.DefaultHighlighter.LayeredHighlightInfo)) {\r
178 var lhi = tag;\r
179 var start = lhi.getStartOffset ();\r
180 var end = lhi.getEndOffset ();\r
181 if ((p0 < start && p1 > start) || (p0 >= start && p0 < end)) {\r
182 lhi.paintLayeredHighlights (g, p0, p1, viewBounds, editor, view);\r
183 }}}\r
184 }, "java.awt.Graphics,~N,~N,java.awt.Shape,javax.swing.text.JTextComponent,javax.swing.text.View");\r
185 Clazz.defineMethod (c$, "safeDamageRange", \r
186  function (p0, p1) {\r
187 this.safeDamager.damageRange (p0, p1);\r
188 }, "javax.swing.text.Position,javax.swing.text.Position");\r
189 Clazz.defineMethod (c$, "safeDamageRange", \r
190  function (a0, a1) {\r
191 var doc = this.component.getDocument ();\r
192 this.safeDamageRange (doc.createPosition (a0), doc.createPosition (a1));\r
193 }, "~N,~N");\r
194 Clazz.defineMethod (c$, "setDrawsLayeredHighlights", \r
195 function (newValue) {\r
196 this.drawsLayeredHighlights = newValue;\r
197 }, "~B");\r
198 Clazz.defineMethod (c$, "getDrawsLayeredHighlights", \r
199 function () {\r
200 return this.drawsLayeredHighlights;\r
201 });\r
202 c$.$DefaultHighlighter$HighlightInfo$ = function () {\r
203 Clazz.pu$h(self.c$);\r
204 c$ = Clazz.decorateAsClass (function () {\r
205 Clazz.prepareCallback (this, arguments);\r
206 this.p0 = null;\r
207 this.p1 = null;\r
208 this.painter = null;\r
209 Clazz.instantialize (this, arguments);\r
210 }, javax.swing.text.DefaultHighlighter, "HighlightInfo", null, javax.swing.text.Highlighter.Highlight);\r
211 Clazz.overrideMethod (c$, "getStartOffset", \r
212 function () {\r
213 return this.p0.getOffset ();\r
214 });\r
215 Clazz.overrideMethod (c$, "getEndOffset", \r
216 function () {\r
217 return this.p1.getOffset ();\r
218 });\r
219 Clazz.overrideMethod (c$, "getPainter", \r
220 function () {\r
221 return this.painter;\r
222 });\r
223 c$ = Clazz.p0p ();\r
224 };\r
225 c$.$DefaultHighlighter$LayeredHighlightInfo$ = function () {\r
226 Clazz.pu$h(self.c$);\r
227 c$ = Clazz.decorateAsClass (function () {\r
228 Clazz.prepareCallback (this, arguments);\r
229 this.x = 0;\r
230 this.y = 0;\r
231 this.width = 0;\r
232 this.height = 0;\r
233 Clazz.instantialize (this, arguments);\r
234 }, javax.swing.text.DefaultHighlighter, "LayeredHighlightInfo", javax.swing.text.DefaultHighlighter.HighlightInfo, null, Clazz.innerTypeInstance (javax.swing.text.DefaultHighlighter.HighlightInfo, this, null, Clazz.inheritArgs));\r
235 Clazz.defineMethod (c$, "union", \r
236 function (a) {\r
237 if (a == null) return;\r
238 var b;\r
239 if (Clazz.instanceOf (a, java.awt.Rectangle)) {\r
240 b = a;\r
241 } else {\r
242 b = a.getBounds ();\r
243 }if (this.width == 0 || this.height == 0) {\r
244 this.x = b.x;\r
245 this.y = b.y;\r
246 this.width = b.width;\r
247 this.height = b.height;\r
248 } else {\r
249 this.width = Math.max (this.x + this.width, b.x + b.width);\r
250 this.height = Math.max (this.y + this.height, b.y + b.height);\r
251 this.x = Math.min (this.x, b.x);\r
252 this.width -= this.x;\r
253 this.y = Math.min (this.y, b.y);\r
254 this.height -= this.y;\r
255 }}, "java.awt.Shape");\r
256 Clazz.defineMethod (c$, "paintLayeredHighlights", \r
257 function (a, b, c, d, e, f) {\r
258 var g = this.getStartOffset ();\r
259 var h = this.getEndOffset ();\r
260 b = Math.max (g, b);\r
261 c = Math.min (h, c);\r
262 this.union ((this.painter).paintLayer (a, b, c, d, e, f));\r
263 }, "java.awt.Graphics,~N,~N,java.awt.Shape,javax.swing.text.JTextComponent,javax.swing.text.View");\r
264 c$ = Clazz.p0p ();\r
265 };\r
266 c$.$DefaultHighlighter$SafeDamager$ = function () {\r
267 Clazz.pu$h(self.c$);\r
268 c$ = Clazz.decorateAsClass (function () {\r
269 Clazz.prepareCallback (this, arguments);\r
270 this.p0 = null;\r
271 this.p1 = null;\r
272 this.lastDoc = null;\r
273 Clazz.instantialize (this, arguments);\r
274 }, javax.swing.text.DefaultHighlighter, "SafeDamager", null, Runnable);\r
275 Clazz.prepareFields (c$, function () {\r
276 this.p0 =  new java.util.Vector (10);\r
277 this.p1 =  new java.util.Vector (10);\r
278 });\r
279 Clazz.overrideMethod (c$, "run", \r
280 function () {\r
281 if (this.b$["javax.swing.text.DefaultHighlighter"].component != null) {\r
282 var a = this.b$["javax.swing.text.DefaultHighlighter"].component.getUI ();\r
283 if (a != null && this.lastDoc === this.b$["javax.swing.text.DefaultHighlighter"].component.getDocument ()) {\r
284 var b = this.p0.size ();\r
285 for (var c = 0; c < b; c++) {\r
286 a.damageRange (this.b$["javax.swing.text.DefaultHighlighter"].component, (this.p0.get (c)).getOffset (), (this.p1.get (c)).getOffset ());\r
287 }\r
288 }}this.p0.clear ();\r
289 this.p1.clear ();\r
290 this.lastDoc = null;\r
291 });\r
292 Clazz.defineMethod (c$, "damageRange", \r
293 function (a, b) {\r
294 if (this.b$["javax.swing.text.DefaultHighlighter"].component == null) {\r
295 this.p0.clear ();\r
296 this.lastDoc = null;\r
297 return;\r
298 }var c = this.p0.isEmpty ();\r
299 var d = this.b$["javax.swing.text.DefaultHighlighter"].component.getDocument ();\r
300 if (d !== this.lastDoc) {\r
301 if (!this.p0.isEmpty ()) {\r
302 this.p0.clear ();\r
303 this.p1.clear ();\r
304 }this.lastDoc = d;\r
305 }this.p0.add (a);\r
306 this.p1.add (b);\r
307 if (c) {\r
308 javax.swing.SwingUtilities.invokeLater (this);\r
309 }}, "javax.swing.text.Position,javax.swing.text.Position");\r
310 c$ = Clazz.p0p ();\r
311 };\r
312 Clazz.pu$h(self.c$);\r
313 c$ = Clazz.decorateAsClass (function () {\r
314 this.color = null;\r
315 Clazz.instantialize (this, arguments);\r
316 }, javax.swing.text.DefaultHighlighter, "DefaultHighlightPainter", javax.swing.text.LayeredHighlighter.LayerPainter);\r
317 Clazz.makeConstructor (c$, \r
318 function (a) {\r
319 Clazz.superConstructor (this, javax.swing.text.DefaultHighlighter.DefaultHighlightPainter, []);\r
320 this.color = a;\r
321 }, "java.awt.Color");\r
322 Clazz.defineMethod (c$, "getColor", \r
323 function () {\r
324 return this.color;\r
325 });\r
326 Clazz.overrideMethod (c$, "paint", \r
327 function (a, b, c, d, e) {\r
328 var f = d.getBounds ();\r
329 try {\r
330 var g = e.getUI ();\r
331 var h = g.modelToView (e, b);\r
332 var i = g.modelToView (e, c);\r
333 var j = this.getColor ();\r
334 if (j == null) {\r
335 a.setColor (e.getSelectionColor ());\r
336 } else {\r
337 a.setColor (j);\r
338 }if (h.y == i.y) {\r
339 var k = h.union (i);\r
340 a.fillRect (k.x, k.y, k.width, k.height);\r
341 } else {\r
342 var k = f.x + f.width - h.x;\r
343 a.fillRect (h.x, h.y, k, h.height);\r
344 if ((h.y + h.height) != i.y) {\r
345 a.fillRect (f.x, h.y + h.height, f.width, i.y - (h.y + h.height));\r
346 }a.fillRect (f.x, i.y, (i.x - f.x), i.height);\r
347 }} catch (e) {\r
348 if (Clazz.exceptionOf (e, javax.swing.text.BadLocationException)) {\r
349 } else {\r
350 throw e;\r
351 }\r
352 }\r
353 }, "java.awt.Graphics,~N,~N,java.awt.Shape,javax.swing.text.JTextComponent");\r
354 Clazz.overrideMethod (c$, "paintLayer", \r
355 function (a, b, c, d, e, f) {\r
356 var g = this.getColor ();\r
357 if (g == null) {\r
358 a.setColor (e.getSelectionColor ());\r
359 } else {\r
360 a.setColor (g);\r
361 }var h;\r
362 if (b == f.getStartOffset () && c == f.getEndOffset ()) {\r
363 if (Clazz.instanceOf (d, java.awt.Rectangle)) {\r
364 h = d;\r
365 } else {\r
366 h = d.getBounds ();\r
367 }} else {\r
368 try {\r
369 var i = f.modelToView (b, javax.swing.text.Position.Bias.Forward, c, javax.swing.text.Position.Bias.Backward, d);\r
370 h = (Clazz.instanceOf (i, java.awt.Rectangle)) ? i : i.getBounds ();\r
371 } catch (e) {\r
372 if (Clazz.exceptionOf (e, javax.swing.text.BadLocationException)) {\r
373 h = null;\r
374 } else {\r
375 throw e;\r
376 }\r
377 }\r
378 }if (h != null) {\r
379 h.width = Math.max (h.width, 1);\r
380 a.fillRect (h.x, h.y, h.width, h.height);\r
381 }return h;\r
382 }, "java.awt.Graphics,~N,~N,java.awt.Shape,javax.swing.text.JTextComponent,javax.swing.text.View");\r
383 c$ = Clazz.p0p ();\r
384 c$.noHighlights = c$.prototype.noHighlights =  new Array (0);\r
385 c$.DefaultPainter = c$.prototype.DefaultPainter =  new javax.swing.text.DefaultHighlighter.DefaultHighlightPainter (null);\r
386 });\r