dfe30b969c85c2cf2b9f6809608752d6d91f8dbd
[jalviewjs.git] / site / swingjs / j2s / javax / swing / text / DefaultCaret.js
1 Clazz.declarePackage ("javax.swing.text");\r
2 Clazz.load (["java.awt.Rectangle", "java.awt.event.ActionListener", "$.FocusListener", "$.MouseListener", "$.MouseMotionListener", "java.beans.PropertyChangeListener", "javax.swing.event.DocumentListener", "javax.swing.text.Caret", "$.NavigationFilter", "javax.swing.event.EventListenerList"], "javax.swing.text.DefaultCaret", ["java.lang.Boolean", "$.IllegalArgumentException", "java.awt.Point", "java.awt.event.ActionEvent", "javax.swing.SwingUtilities", "javax.swing.event.ChangeEvent", "$.ChangeListener", "javax.swing.text.AbstractDocument", "javax.swing.text.AbstractDocument.UndoRedoDocumentEvent", "javax.swing.text.DefaultEditorKit", "$.DefaultHighlighter", "$.Document", "$.Position", "$.Segment", "$.StateInvariantError"], function () {\r
3 c$ = Clazz.decorateAsClass (function () {\r
4 this.listenerList = null;\r
5 this.changeEvent = null;\r
6 this.component = null;\r
7 this.updatePolicy = 0;\r
8 this.visible = false;\r
9 this.active = false;\r
10 this.dot = 0;\r
11 this.mark = 0;\r
12 this.selectionTag = null;\r
13 this.selectionVisible = false;\r
14 this.magicCaretPosition = null;\r
15 this.dotBias = null;\r
16 this.markBias = null;\r
17 this.dotLTR = false;\r
18 this.markLTR = false;\r
19 this.handler = null;\r
20 this.flagXPoints = null;\r
21 this.flagYPoints = null;\r
22 this.filterBypass = null;\r
23 this.ownsSelection = false;\r
24 this.forceCaretPositionChange = false;\r
25 this.shouldHandleRelease = false;\r
26 this.selectedWordEvent = null;\r
27 this.caretWidth = -1;\r
28 this.aspectRatio = -1;\r
29 if (!Clazz.isClassDefined ("javax.swing.text.DefaultCaret.SafeScroller")) {\r
30 javax.swing.text.DefaultCaret.$DefaultCaret$SafeScroller$ ();\r
31 }\r
32 if (!Clazz.isClassDefined ("javax.swing.text.DefaultCaret.Handler")) {\r
33 javax.swing.text.DefaultCaret.$DefaultCaret$Handler$ ();\r
34 }\r
35 if (!Clazz.isClassDefined ("javax.swing.text.DefaultCaret.DefaultFilterBypass")) {\r
36 javax.swing.text.DefaultCaret.$DefaultCaret$DefaultFilterBypass$ ();\r
37 }\r
38 Clazz.instantialize (this, arguments);\r
39 }, javax.swing.text, "DefaultCaret", java.awt.Rectangle, [javax.swing.text.Caret, java.awt.event.FocusListener, java.awt.event.MouseListener, java.awt.event.MouseMotionListener]);\r
40 Clazz.prepareFields (c$, function () {\r
41 this.listenerList =  new javax.swing.event.EventListenerList ();\r
42 this.handler = Clazz.innerTypeInstance (javax.swing.text.DefaultCaret.Handler, this, null);\r
43 this.flagXPoints =  Clazz.newIntArray (3, 0);\r
44 this.flagYPoints =  Clazz.newIntArray (3, 0);\r
45 });\r
46 Clazz.makeConstructor (c$, \r
47 function () {\r
48 Clazz.superConstructor (this, javax.swing.text.DefaultCaret, []);\r
49 });\r
50 Clazz.defineMethod (c$, "setUpdatePolicy", \r
51 function (policy) {\r
52 this.updatePolicy = policy;\r
53 }, "~N");\r
54 Clazz.defineMethod (c$, "getUpdatePolicy", \r
55 function () {\r
56 return this.updatePolicy;\r
57 });\r
58 Clazz.defineMethod (c$, "getComponent", \r
59 function () {\r
60 return this.component;\r
61 });\r
62 Clazz.defineMethod (c$, "repaint", \r
63 function () {\r
64 if (this.component != null) {\r
65 this.component.repaint (this.x, this.y, this.width, this.height);\r
66 }});\r
67 Clazz.defineMethod (c$, "damage", \r
68 function (r) {\r
69 if (r != null) {\r
70 var damageWidth = this.getCaretWidth (r.height);\r
71 this.x = r.x - 4 - (damageWidth >> 1);\r
72 this.y = r.y;\r
73 this.width = 9 + damageWidth;\r
74 this.height = r.height;\r
75 this.repaint ();\r
76 }}, "java.awt.Rectangle");\r
77 Clazz.defineMethod (c$, "adjustVisibility", \r
78 function (nloc) {\r
79 if (this.component == null) {\r
80 return;\r
81 }if (javax.swing.SwingUtilities.isEventDispatchThread ()) {\r
82 this.component.scrollRectToVisible (nloc);\r
83 } else {\r
84 javax.swing.SwingUtilities.invokeLater (Clazz.innerTypeInstance (javax.swing.text.DefaultCaret.SafeScroller, this, null, nloc));\r
85 }}, "java.awt.Rectangle");\r
86 Clazz.defineMethod (c$, "getSelectionPainter", \r
87 function () {\r
88 return javax.swing.text.DefaultHighlighter.DefaultPainter;\r
89 });\r
90 Clazz.defineMethod (c$, "positionCaret", \r
91 function (e) {\r
92 var pt =  new java.awt.Point (e.getX (), e.getY ());\r
93 var biasRet =  new Array (1);\r
94 var pos = this.component.getUI ().viewToModel (this.component, pt, biasRet);\r
95 if (biasRet[0] == null) biasRet[0] = javax.swing.text.Position.Bias.Forward;\r
96 if (pos >= 0) {\r
97 this.setDot (pos, biasRet[0]);\r
98 }}, "java.awt.event.MouseEvent");\r
99 Clazz.defineMethod (c$, "moveCaret", \r
100 function (e) {\r
101 var pt =  new java.awt.Point (e.getX (), e.getY ());\r
102 var biasRet =  new Array (1);\r
103 var pos = this.component.getUI ().viewToModel (this.component, pt, biasRet);\r
104 if (biasRet[0] == null) biasRet[0] = javax.swing.text.Position.Bias.Forward;\r
105 if (pos >= 0) {\r
106 this.moveDot (pos, biasRet[0]);\r
107 }}, "java.awt.event.MouseEvent");\r
108 Clazz.overrideMethod (c$, "focusGained", \r
109 function (e) {\r
110 if (this.component.isEnabled ()) {\r
111 if (this.component.isEditable ()) {\r
112 this.setVisible (true);\r
113 }this.setSelectionVisible (true);\r
114 }}, "java.awt.event.FocusEvent");\r
115 Clazz.overrideMethod (c$, "focusLost", \r
116 function (e) {\r
117 this.setVisible (false);\r
118 this.setSelectionVisible (this.ownsSelection || e.isTemporary ());\r
119 }, "java.awt.event.FocusEvent");\r
120 Clazz.overrideMethod (c$, "mouseClicked", \r
121 function (e) {\r
122 var nclicks = e.getClickCount ();\r
123 if (!e.isConsumed ()) {\r
124 if (javax.swing.SwingUtilities.isLeftMouseButton (e)) {\r
125 if (nclicks == 1) {\r
126 this.selectedWordEvent = null;\r
127 }} else if (javax.swing.SwingUtilities.isMiddleMouseButton (e)) {\r
128 }}}, "java.awt.event.MouseEvent");\r
129 Clazz.overrideMethod (c$, "mousePressed", \r
130 function (e) {\r
131 if (javax.swing.SwingUtilities.isLeftMouseButton (e)) {\r
132 if (e.isConsumed ()) {\r
133 this.shouldHandleRelease = true;\r
134 } else {\r
135 this.shouldHandleRelease = false;\r
136 this.adjustCaretAndFocus (e);\r
137 }}}, "java.awt.event.MouseEvent");\r
138 Clazz.defineMethod (c$, "adjustCaretAndFocus", \r
139 function (e) {\r
140 this.adjustCaret (e);\r
141 this.adjustFocus (false);\r
142 }, "java.awt.event.MouseEvent");\r
143 Clazz.defineMethod (c$, "adjustCaret", \r
144  function (e) {\r
145 if ((e.getModifiers () & 1) != 0 && this.getDot () != -1) {\r
146 this.moveCaret (e);\r
147 } else {\r
148 this.positionCaret (e);\r
149 }}, "java.awt.event.MouseEvent");\r
150 Clazz.defineMethod (c$, "adjustFocus", \r
151  function (inWindow) {\r
152 if ((this.component != null) && this.component.isEnabled () && this.component.isRequestFocusEnabled ()) {\r
153 if (inWindow) {\r
154 this.component.requestFocusInWindow ();\r
155 } else {\r
156 this.component.requestFocus ();\r
157 }}}, "~B");\r
158 Clazz.overrideMethod (c$, "mouseReleased", \r
159 function (e) {\r
160 if (!e.isConsumed () && this.shouldHandleRelease && javax.swing.SwingUtilities.isLeftMouseButton (e)) {\r
161 this.adjustCaretAndFocus (e);\r
162 }}, "java.awt.event.MouseEvent");\r
163 Clazz.overrideMethod (c$, "mouseEntered", \r
164 function (e) {\r
165 }, "java.awt.event.MouseEvent");\r
166 Clazz.overrideMethod (c$, "mouseExited", \r
167 function (e) {\r
168 }, "java.awt.event.MouseEvent");\r
169 Clazz.overrideMethod (c$, "mouseDragged", \r
170 function (e) {\r
171 if ((!e.isConsumed ()) && javax.swing.SwingUtilities.isLeftMouseButton (e)) {\r
172 this.moveCaret (e);\r
173 }}, "java.awt.event.MouseEvent");\r
174 Clazz.overrideMethod (c$, "mouseMoved", \r
175 function (e) {\r
176 }, "java.awt.event.MouseEvent");\r
177 Clazz.overrideMethod (c$, "paint", \r
178 function (g) {\r
179 if (this.isVisible ()) {\r
180 try {\r
181 var mapper = this.component.getUI ();\r
182 var r = mapper.modelToView (this.component, this.dot, this.dotBias);\r
183 if ((r == null) || ((r.width == 0) && (r.height == 0))) {\r
184 return;\r
185 }if (this.width > 0 && this.height > 0 && !this._contains (r.x, r.y, r.width, r.height)) {\r
186 var clip = g.getClipBounds ();\r
187 if (clip != null && !clip.contains (this)) {\r
188 this.repaint ();\r
189 }this.damage (r);\r
190 }g.setColor (this.component.getCaretColor ());\r
191 var paintWidth = this.getCaretWidth (r.height);\r
192 r.x -= paintWidth >> 1;\r
193 g.fillRect (r.x, r.y, paintWidth, r.height);\r
194 var doc = this.component.getDocument ();\r
195 if (Clazz.instanceOf (doc, javax.swing.text.AbstractDocument)) {\r
196 var bidi = (doc).getBidiRootElement ();\r
197 if ((bidi != null) && (bidi.getElementCount () > 1)) {\r
198 this.flagXPoints[0] = r.x + ((this.dotLTR) ? paintWidth : 0);\r
199 this.flagYPoints[0] = r.y;\r
200 this.flagXPoints[1] = this.flagXPoints[0];\r
201 this.flagYPoints[1] = this.flagYPoints[0] + 4;\r
202 this.flagXPoints[2] = this.flagXPoints[0] + ((this.dotLTR) ? 4 : -4);\r
203 this.flagYPoints[2] = this.flagYPoints[0];\r
204 g.fillPolygon (this.flagXPoints, this.flagYPoints, 3);\r
205 }}} catch (e) {\r
206 if (Clazz.exceptionOf (e, javax.swing.text.BadLocationException)) {\r
207 } else {\r
208 throw e;\r
209 }\r
210 }\r
211 }}, "java.awt.Graphics");\r
212 Clazz.overrideMethod (c$, "install", \r
213 function (c) {\r
214 this.component = c;\r
215 var doc = c.getDocument ();\r
216 this.dot = this.mark = 0;\r
217 this.dotLTR = this.markLTR = true;\r
218 this.dotBias = this.markBias = javax.swing.text.Position.Bias.Forward;\r
219 if (doc != null) {\r
220 doc.addDocumentListener (this.handler);\r
221 }c.addPropertyChangeListener (this.handler);\r
222 c.addFocusListener (this);\r
223 c.addMouseListener (this);\r
224 c.addMouseMotionListener (this);\r
225 if (this.component.hasFocus ()) {\r
226 this.focusGained (null);\r
227 }var ratio = c.getClientProperty ("caretAspectRatio");\r
228 if (ratio != null) {\r
229 this.aspectRatio = ratio.floatValue ();\r
230 } else {\r
231 this.aspectRatio = -1;\r
232 }var width = c.getClientProperty ("caretWidth");\r
233 if (width != null) {\r
234 this.caretWidth = width.intValue ();\r
235 } else {\r
236 this.caretWidth = -1;\r
237 }}, "javax.swing.text.JTextComponent");\r
238 Clazz.overrideMethod (c$, "deinstall", \r
239 function (c) {\r
240 c.removeMouseListener (this);\r
241 c.removeMouseMotionListener (this);\r
242 c.removeFocusListener (this);\r
243 c.removePropertyChangeListener (this.handler);\r
244 var doc = c.getDocument ();\r
245 if (doc != null) {\r
246 doc.removeDocumentListener (this.handler);\r
247 }{\r
248 this.component = null;\r
249 }}, "javax.swing.text.JTextComponent");\r
250 Clazz.overrideMethod (c$, "addChangeListener", \r
251 function (l) {\r
252 this.listenerList.add (javax.swing.event.ChangeListener, l);\r
253 }, "javax.swing.event.ChangeListener");\r
254 Clazz.overrideMethod (c$, "removeChangeListener", \r
255 function (l) {\r
256 this.listenerList.remove (javax.swing.event.ChangeListener, l);\r
257 }, "javax.swing.event.ChangeListener");\r
258 Clazz.defineMethod (c$, "getChangeListeners", \r
259 function () {\r
260 return this.listenerList.getListeners (javax.swing.event.ChangeListener);\r
261 });\r
262 Clazz.defineMethod (c$, "fireStateChanged", \r
263 function () {\r
264 var listeners = this.listenerList.getListenerList ();\r
265 for (var i = listeners.length - 2; i >= 0; i -= 2) {\r
266 if (listeners[i] === javax.swing.event.ChangeListener) {\r
267 if (this.changeEvent == null) this.changeEvent =  new javax.swing.event.ChangeEvent (this);\r
268 (listeners[i + 1]).stateChanged (this.changeEvent);\r
269 }}\r
270 });\r
271 Clazz.defineMethod (c$, "getListeners", \r
272 function (listenerType) {\r
273 return this.listenerList.getListeners (listenerType);\r
274 }, "Class");\r
275 Clazz.overrideMethod (c$, "setSelectionVisible", \r
276 function (vis) {\r
277 if (vis != this.selectionVisible) {\r
278 this.selectionVisible = vis;\r
279 if (this.selectionVisible) {\r
280 var h = this.component.getHighlighter ();\r
281 if ((this.dot != this.mark) && (h != null) && (this.selectionTag == null)) {\r
282 var p0 = Math.min (this.dot, this.mark);\r
283 var p1 = Math.max (this.dot, this.mark);\r
284 var p = this.getSelectionPainter ();\r
285 try {\r
286 this.selectionTag = h.addHighlight (p0, p1, p);\r
287 } catch (bl) {\r
288 if (Clazz.exceptionOf (bl, javax.swing.text.BadLocationException)) {\r
289 this.selectionTag = null;\r
290 } else {\r
291 throw bl;\r
292 }\r
293 }\r
294 }} else {\r
295 if (this.selectionTag != null) {\r
296 var h = this.component.getHighlighter ();\r
297 h.removeHighlight (this.selectionTag);\r
298 this.selectionTag = null;\r
299 }}}}, "~B");\r
300 Clazz.overrideMethod (c$, "isSelectionVisible", \r
301 function () {\r
302 return this.selectionVisible;\r
303 });\r
304 Clazz.defineMethod (c$, "isActive", \r
305 function () {\r
306 return this.active;\r
307 });\r
308 Clazz.overrideMethod (c$, "isVisible", \r
309 function () {\r
310 return this.visible;\r
311 });\r
312 Clazz.overrideMethod (c$, "setVisible", \r
313 function (e) {\r
314 if (this.component != null) {\r
315 this.active = e;\r
316 var mapper = this.component.getUI ();\r
317 if (this.visible != e) {\r
318 this.visible = e;\r
319 try {\r
320 var loc = mapper.modelToView (this.component, this.dot, this.dotBias);\r
321 this.damage (loc);\r
322 } catch (badloc) {\r
323 if (Clazz.exceptionOf (badloc, javax.swing.text.BadLocationException)) {\r
324 } else {\r
325 throw badloc;\r
326 }\r
327 }\r
328 }}}, "~B");\r
329 Clazz.overrideMethod (c$, "setBlinkRate", \r
330 function (rate) {\r
331 }, "~N");\r
332 Clazz.overrideMethod (c$, "getBlinkRate", \r
333 function () {\r
334 return 0;\r
335 });\r
336 Clazz.overrideMethod (c$, "getDot", \r
337 function () {\r
338 return this.dot;\r
339 });\r
340 Clazz.overrideMethod (c$, "getMark", \r
341 function () {\r
342 return this.mark;\r
343 });\r
344 Clazz.defineMethod (c$, "setDot", \r
345 function (dot) {\r
346 this.setDot (dot, javax.swing.text.Position.Bias.Forward);\r
347 }, "~N");\r
348 Clazz.defineMethod (c$, "moveDot", \r
349 function (dot) {\r
350 this.moveDot (dot, javax.swing.text.Position.Bias.Forward);\r
351 }, "~N");\r
352 Clazz.defineMethod (c$, "moveDot", \r
353 function (dot, dotBias) {\r
354 if (dotBias == null) {\r
355 throw  new IllegalArgumentException ("null bias");\r
356 }if (!this.component.isEnabled ()) {\r
357 this.setDot (dot, dotBias);\r
358 return;\r
359 }if (dot != this.dot) {\r
360 var filter = this.component.getNavigationFilter ();\r
361 if (filter != null) {\r
362 filter.moveDot (this.getFilterBypass (), dot, dotBias);\r
363 } else {\r
364 this.handleMoveDot (dot, dotBias);\r
365 }}}, "~N,javax.swing.text.Position.Bias");\r
366 Clazz.defineMethod (c$, "handleMoveDot", \r
367 function (dot, dotBias) {\r
368 this.changeCaretPosition (dot, dotBias);\r
369 if (this.selectionVisible) {\r
370 var h = this.component.getHighlighter ();\r
371 if (h != null) {\r
372 var p0 = Math.min (dot, this.mark);\r
373 var p1 = Math.max (dot, this.mark);\r
374 if (p0 == p1) {\r
375 if (this.selectionTag != null) {\r
376 h.removeHighlight (this.selectionTag);\r
377 this.selectionTag = null;\r
378 }} else {\r
379 try {\r
380 if (this.selectionTag != null) {\r
381 h.changeHighlight (this.selectionTag, p0, p1);\r
382 } else {\r
383 var p = this.getSelectionPainter ();\r
384 this.selectionTag = h.addHighlight (p0, p1, p);\r
385 }} catch (e) {\r
386 if (Clazz.exceptionOf (e, javax.swing.text.BadLocationException)) {\r
387 throw  new javax.swing.text.StateInvariantError ("Bad caret position");\r
388 } else {\r
389 throw e;\r
390 }\r
391 }\r
392 }}}}, "~N,javax.swing.text.Position.Bias");\r
393 Clazz.defineMethod (c$, "setDot", \r
394 function (dot, dotBias) {\r
395 if (dotBias == null) {\r
396 throw  new IllegalArgumentException ("null bias");\r
397 }var filter = this.component.getNavigationFilter ();\r
398 if (filter != null) {\r
399 filter.setDot (this.getFilterBypass (), dot, dotBias);\r
400 } else {\r
401 this.handleSetDot (dot, dotBias);\r
402 }}, "~N,javax.swing.text.Position.Bias");\r
403 Clazz.defineMethod (c$, "handleSetDot", \r
404 function (dot, dotBias) {\r
405 var doc = this.component.getDocument ();\r
406 if (doc != null) {\r
407 dot = Math.min (dot, doc.getLength ());\r
408 }dot = Math.max (dot, 0);\r
409 if (dot == 0) dotBias = javax.swing.text.Position.Bias.Forward;\r
410 this.mark = dot;\r
411 if (this.dot != dot || this.dotBias !== dotBias || this.selectionTag != null || this.forceCaretPositionChange) {\r
412 this.changeCaretPosition (dot, dotBias);\r
413 }this.markBias = this.dotBias;\r
414 this.markLTR = this.dotLTR;\r
415 var h = this.component.getHighlighter ();\r
416 if ((h != null) && (this.selectionTag != null)) {\r
417 h.removeHighlight (this.selectionTag);\r
418 this.selectionTag = null;\r
419 }}, "~N,javax.swing.text.Position.Bias");\r
420 Clazz.defineMethod (c$, "getDotBias", \r
421 function () {\r
422 return this.dotBias;\r
423 });\r
424 Clazz.defineMethod (c$, "getMarkBias", \r
425 function () {\r
426 return this.markBias;\r
427 });\r
428 Clazz.defineMethod (c$, "isDotLeftToRight", \r
429 function () {\r
430 return this.dotLTR;\r
431 });\r
432 Clazz.defineMethod (c$, "isMarkLeftToRight", \r
433 function () {\r
434 return this.markLTR;\r
435 });\r
436 Clazz.defineMethod (c$, "isPositionLTR", \r
437 function (position, bias) {\r
438 var doc = this.component.getDocument ();\r
439 if (Clazz.instanceOf (doc, javax.swing.text.AbstractDocument)) {\r
440 if (bias === javax.swing.text.Position.Bias.Backward && --position < 0) position = 0;\r
441 return (doc).isLeftToRight (position, position);\r
442 }return true;\r
443 }, "~N,javax.swing.text.Position.Bias");\r
444 Clazz.defineMethod (c$, "guessBiasForOffset", \r
445 function (offset, lastBias, lastLTR) {\r
446 if (lastLTR != this.isPositionLTR (offset, lastBias)) {\r
447 lastBias = javax.swing.text.Position.Bias.Backward;\r
448 } else if (lastBias !== javax.swing.text.Position.Bias.Backward && lastLTR != this.isPositionLTR (offset, javax.swing.text.Position.Bias.Backward)) {\r
449 lastBias = javax.swing.text.Position.Bias.Backward;\r
450 }if (lastBias === javax.swing.text.Position.Bias.Backward && offset > 0) {\r
451 try {\r
452 var s =  new javax.swing.text.Segment ();\r
453 this.component.getDocument ().getText (offset - 1, 1, s);\r
454 if (s.count > 0 && s.array[s.offset] == '\n') {\r
455 lastBias = javax.swing.text.Position.Bias.Forward;\r
456 }} catch (ble) {\r
457 if (Clazz.exceptionOf (ble, javax.swing.text.BadLocationException)) {\r
458 } else {\r
459 throw ble;\r
460 }\r
461 }\r
462 }return lastBias;\r
463 }, "~N,javax.swing.text.Position.Bias,~B");\r
464 Clazz.defineMethod (c$, "changeCaretPosition", \r
465 function (dot, dotBias) {\r
466 this.repaint ();\r
467 this.dot = dot;\r
468 this.dotBias = dotBias;\r
469 this.dotLTR = this.isPositionLTR (dot, dotBias);\r
470 this.fireStateChanged ();\r
471 this.updateSystemSelection ();\r
472 this.setMagicCaretPosition (null);\r
473 var callRepaintNewCaret = ((Clazz.isClassDefined ("javax.swing.text.DefaultCaret$1") ? 0 : javax.swing.text.DefaultCaret.$DefaultCaret$1$ ()), Clazz.innerTypeInstance (javax.swing.text.DefaultCaret$1, this, null));\r
474 javax.swing.SwingUtilities.invokeLater (callRepaintNewCaret);\r
475 }, "~N,javax.swing.text.Position.Bias");\r
476 Clazz.defineMethod (c$, "repaintNewCaret", \r
477 function () {\r
478 if (this.component != null) {\r
479 var mapper = this.component.getUI ();\r
480 var doc = this.component.getDocument ();\r
481 if ((mapper != null) && (doc != null)) {\r
482 var newLoc;\r
483 try {\r
484 newLoc = mapper.modelToView (this.component, this.dot, this.dotBias);\r
485 } catch (e) {\r
486 if (Clazz.exceptionOf (e, javax.swing.text.BadLocationException)) {\r
487 newLoc = null;\r
488 } else {\r
489 throw e;\r
490 }\r
491 }\r
492 if (newLoc != null) {\r
493 this.adjustVisibility (newLoc);\r
494 if (this.getMagicCaretPosition () == null) {\r
495 this.setMagicCaretPosition ( new java.awt.Point (newLoc.x, newLoc.y));\r
496 }}this.damage (newLoc);\r
497 }}});\r
498 Clazz.defineMethod (c$, "updateSystemSelection", \r
499  function () {\r
500 });\r
501 Clazz.defineMethod (c$, "ensureValidPosition", \r
502  function () {\r
503 var length = this.component.getDocument ().getLength ();\r
504 if (this.dot > length || this.mark > length) {\r
505 this.handleSetDot (length, javax.swing.text.Position.Bias.Forward);\r
506 }});\r
507 Clazz.overrideMethod (c$, "setMagicCaretPosition", \r
508 function (p) {\r
509 this.magicCaretPosition = p;\r
510 }, "java.awt.Point");\r
511 Clazz.overrideMethod (c$, "getMagicCaretPosition", \r
512 function () {\r
513 return this.magicCaretPosition;\r
514 });\r
515 Clazz.overrideMethod (c$, "equals", \r
516 function (obj) {\r
517 return (this === obj);\r
518 }, "~O");\r
519 Clazz.overrideMethod (c$, "toString", \r
520 function () {\r
521 var s = "Dot=(" + this.dot + ", " + this.dotBias + ")";\r
522 s += " Mark=(" + this.mark + ", " + this.markBias + ")";\r
523 return s;\r
524 });\r
525 Clazz.defineMethod (c$, "getFilterBypass", \r
526  function () {\r
527 if (this.filterBypass == null) {\r
528 this.filterBypass = Clazz.innerTypeInstance (javax.swing.text.DefaultCaret.DefaultFilterBypass, this, null);\r
529 }return this.filterBypass;\r
530 });\r
531 Clazz.defineMethod (c$, "_contains", \r
532  function (X, Y, W, H) {\r
533 var w = this.width;\r
534 var h = this.height;\r
535 if ((w | h | W | H) < 0) {\r
536 return false;\r
537 }var x = this.x;\r
538 var y = this.y;\r
539 if (X < x || Y < y) {\r
540 return false;\r
541 }if (W > 0) {\r
542 w += x;\r
543 W += X;\r
544 if (W <= X) {\r
545 if (w >= x || W > w) return false;\r
546 } else {\r
547 if (w >= x && W > w) return false;\r
548 }} else if ((x + w) < X) {\r
549 return false;\r
550 }if (H > 0) {\r
551 h += y;\r
552 H += Y;\r
553 if (H <= Y) {\r
554 if (h >= y || H > h) return false;\r
555 } else {\r
556 if (h >= y && H > h) return false;\r
557 }} else if ((y + h) < Y) {\r
558 return false;\r
559 }return true;\r
560 }, "~N,~N,~N,~N");\r
561 Clazz.defineMethod (c$, "getCaretWidth", \r
562 function (height) {\r
563 if (this.aspectRatio > -1) {\r
564 return Clazz.floatToInt (this.aspectRatio * height) + 1;\r
565 }if (this.caretWidth > -1) {\r
566 return this.caretWidth;\r
567 }return 1;\r
568 }, "~N");\r
569 c$.$DefaultCaret$SafeScroller$ = function () {\r
570 Clazz.pu$h(self.c$);\r
571 c$ = Clazz.decorateAsClass (function () {\r
572 Clazz.prepareCallback (this, arguments);\r
573 this.r = null;\r
574 Clazz.instantialize (this, arguments);\r
575 }, javax.swing.text.DefaultCaret, "SafeScroller", null, Runnable);\r
576 Clazz.makeConstructor (c$, \r
577 function (a) {\r
578 this.r = a;\r
579 }, "java.awt.Rectangle");\r
580 Clazz.overrideMethod (c$, "run", \r
581 function () {\r
582 if (this.b$["javax.swing.text.DefaultCaret"].component != null) {\r
583 this.b$["javax.swing.text.DefaultCaret"].component.scrollRectToVisible (this.r);\r
584 }});\r
585 c$ = Clazz.p0p ();\r
586 };\r
587 c$.$DefaultCaret$Handler$ = function () {\r
588 Clazz.pu$h(self.c$);\r
589 c$ = Clazz.decorateAsClass (function () {\r
590 Clazz.prepareCallback (this, arguments);\r
591 Clazz.instantialize (this, arguments);\r
592 }, javax.swing.text.DefaultCaret, "Handler", null, [java.beans.PropertyChangeListener, javax.swing.event.DocumentListener, java.awt.event.ActionListener]);\r
593 Clazz.overrideMethod (c$, "actionPerformed", \r
594 function (a) {\r
595 if (this.b$["javax.swing.text.DefaultCaret"].width == 0 || this.b$["javax.swing.text.DefaultCaret"].height == 0) {\r
596 if (this.b$["javax.swing.text.DefaultCaret"].component != null) {\r
597 var b = this.b$["javax.swing.text.DefaultCaret"].component.getUI ();\r
598 try {\r
599 var c = b.modelToView (this.b$["javax.swing.text.DefaultCaret"].component, this.b$["javax.swing.text.DefaultCaret"].dot, this.b$["javax.swing.text.DefaultCaret"].dotBias);\r
600 if (c != null && c.width != 0 && c.height != 0) {\r
601 this.b$["javax.swing.text.DefaultCaret"].damage (c);\r
602 }} catch (ble) {\r
603 if (Clazz.exceptionOf (ble, javax.swing.text.BadLocationException)) {\r
604 } else {\r
605 throw ble;\r
606 }\r
607 }\r
608 }}this.b$["javax.swing.text.DefaultCaret"].visible = !this.b$["javax.swing.text.DefaultCaret"].visible;\r
609 this.b$["javax.swing.text.DefaultCaret"].repaint ();\r
610 }, "java.awt.event.ActionEvent");\r
611 Clazz.overrideMethod (c$, "insertUpdate", \r
612 function (a) {\r
613 if (this.b$["javax.swing.text.DefaultCaret"].getUpdatePolicy () == 1 || (this.b$["javax.swing.text.DefaultCaret"].getUpdatePolicy () == 0 && !javax.swing.SwingUtilities.isEventDispatchThread ())) {\r
614 if ((a.getOffset () <= this.b$["javax.swing.text.DefaultCaret"].dot || a.getOffset () <= this.b$["javax.swing.text.DefaultCaret"].mark) && this.b$["javax.swing.text.DefaultCaret"].selectionTag != null) {\r
615 try {\r
616 this.b$["javax.swing.text.DefaultCaret"].component.getHighlighter ().changeHighlight (this.b$["javax.swing.text.DefaultCaret"].selectionTag, Math.min (this.b$["javax.swing.text.DefaultCaret"].dot, this.b$["javax.swing.text.DefaultCaret"].mark), Math.max (this.b$["javax.swing.text.DefaultCaret"].dot, this.b$["javax.swing.text.DefaultCaret"].mark));\r
617 } catch (e1) {\r
618 if (Clazz.exceptionOf (e1, javax.swing.text.BadLocationException)) {\r
619 e1.printStackTrace ();\r
620 } else {\r
621 throw e1;\r
622 }\r
623 }\r
624 }return;\r
625 }var b = 0;\r
626 var c = a.getOffset ();\r
627 var d = a.getLength ();\r
628 var e = this.b$["javax.swing.text.DefaultCaret"].dot;\r
629 var f = 0;\r
630 if (Clazz.instanceOf (a, javax.swing.text.AbstractDocument.UndoRedoDocumentEvent)) {\r
631 this.b$["javax.swing.text.DefaultCaret"].setDot (c + d);\r
632 return;\r
633 }if (e >= c) {\r
634 e += d;\r
635 f |= 1;\r
636 }var g = this.b$["javax.swing.text.DefaultCaret"].mark;\r
637 if (g >= c) {\r
638 g += d;\r
639 f |= 2;\r
640 }if (f != 0) {\r
641 var h = this.b$["javax.swing.text.DefaultCaret"].dotBias;\r
642 if (this.b$["javax.swing.text.DefaultCaret"].dot == c) {\r
643 var i = this.b$["javax.swing.text.DefaultCaret"].component.getDocument ();\r
644 var j;\r
645 try {\r
646 var k =  new javax.swing.text.Segment ();\r
647 i.getText (e - 1, 1, k);\r
648 j = (k.count > 0 && k.array[k.offset] == '\n');\r
649 } catch (ble) {\r
650 if (Clazz.exceptionOf (ble, javax.swing.text.BadLocationException)) {\r
651 j = false;\r
652 } else {\r
653 throw ble;\r
654 }\r
655 }\r
656 if (j) {\r
657 h = javax.swing.text.Position.Bias.Forward;\r
658 } else {\r
659 h = javax.swing.text.Position.Bias.Backward;\r
660 }}if (g == e) {\r
661 this.b$["javax.swing.text.DefaultCaret"].setDot (e, h);\r
662 this.b$["javax.swing.text.DefaultCaret"].ensureValidPosition ();\r
663 } else {\r
664 this.b$["javax.swing.text.DefaultCaret"].setDot (g, this.b$["javax.swing.text.DefaultCaret"].markBias);\r
665 if (this.b$["javax.swing.text.DefaultCaret"].getDot () == g) {\r
666 this.b$["javax.swing.text.DefaultCaret"].moveDot (e, h);\r
667 }this.b$["javax.swing.text.DefaultCaret"].ensureValidPosition ();\r
668 }}}, "javax.swing.event.DocumentEvent");\r
669 Clazz.overrideMethod (c$, "removeUpdate", \r
670 function (a) {\r
671 if (this.b$["javax.swing.text.DefaultCaret"].getUpdatePolicy () == 1 || (this.b$["javax.swing.text.DefaultCaret"].getUpdatePolicy () == 0 && !javax.swing.SwingUtilities.isEventDispatchThread ())) {\r
672 var b = this.b$["javax.swing.text.DefaultCaret"].component.getDocument ().getLength ();\r
673 this.b$["javax.swing.text.DefaultCaret"].dot = Math.min (this.b$["javax.swing.text.DefaultCaret"].dot, b);\r
674 this.b$["javax.swing.text.DefaultCaret"].mark = Math.min (this.b$["javax.swing.text.DefaultCaret"].mark, b);\r
675 if ((a.getOffset () < this.b$["javax.swing.text.DefaultCaret"].dot || a.getOffset () < this.b$["javax.swing.text.DefaultCaret"].mark) && this.b$["javax.swing.text.DefaultCaret"].selectionTag != null) {\r
676 try {\r
677 this.b$["javax.swing.text.DefaultCaret"].component.getHighlighter ().changeHighlight (this.b$["javax.swing.text.DefaultCaret"].selectionTag, Math.min (this.b$["javax.swing.text.DefaultCaret"].dot, this.b$["javax.swing.text.DefaultCaret"].mark), Math.max (this.b$["javax.swing.text.DefaultCaret"].dot, this.b$["javax.swing.text.DefaultCaret"].mark));\r
678 } catch (e1) {\r
679 if (Clazz.exceptionOf (e1, javax.swing.text.BadLocationException)) {\r
680 e1.printStackTrace ();\r
681 } else {\r
682 throw e1;\r
683 }\r
684 }\r
685 }return;\r
686 }var b = a.getOffset ();\r
687 var c = b + a.getLength ();\r
688 var d = 0;\r
689 var e = this.b$["javax.swing.text.DefaultCaret"].dot;\r
690 var f = false;\r
691 var g = this.b$["javax.swing.text.DefaultCaret"].mark;\r
692 var h = false;\r
693 if (Clazz.instanceOf (a, javax.swing.text.AbstractDocument.UndoRedoDocumentEvent)) {\r
694 this.b$["javax.swing.text.DefaultCaret"].setDot (b);\r
695 return;\r
696 }if (e >= c) {\r
697 e -= (c - b);\r
698 if (e == c) {\r
699 f = true;\r
700 }} else if (e >= b) {\r
701 e = b;\r
702 f = true;\r
703 }if (g >= c) {\r
704 g -= (c - b);\r
705 if (g == c) {\r
706 h = true;\r
707 }} else if (g >= b) {\r
708 g = b;\r
709 h = true;\r
710 }if (g == e) {\r
711 this.b$["javax.swing.text.DefaultCaret"].forceCaretPositionChange = true;\r
712 try {\r
713 this.b$["javax.swing.text.DefaultCaret"].setDot (e, this.b$["javax.swing.text.DefaultCaret"].guessBiasForOffset (e, this.b$["javax.swing.text.DefaultCaret"].dotBias, this.b$["javax.swing.text.DefaultCaret"].dotLTR));\r
714 } finally {\r
715 this.b$["javax.swing.text.DefaultCaret"].forceCaretPositionChange = false;\r
716 }\r
717 this.b$["javax.swing.text.DefaultCaret"].ensureValidPosition ();\r
718 } else {\r
719 var i = this.b$["javax.swing.text.DefaultCaret"].dotBias;\r
720 var j = this.b$["javax.swing.text.DefaultCaret"].markBias;\r
721 if (f) {\r
722 i = this.b$["javax.swing.text.DefaultCaret"].guessBiasForOffset (e, i, this.b$["javax.swing.text.DefaultCaret"].dotLTR);\r
723 }if (h) {\r
724 j = this.b$["javax.swing.text.DefaultCaret"].guessBiasForOffset (this.b$["javax.swing.text.DefaultCaret"].mark, j, this.b$["javax.swing.text.DefaultCaret"].markLTR);\r
725 }this.b$["javax.swing.text.DefaultCaret"].setDot (g, j);\r
726 if (this.b$["javax.swing.text.DefaultCaret"].getDot () == g) {\r
727 this.b$["javax.swing.text.DefaultCaret"].moveDot (e, i);\r
728 }this.b$["javax.swing.text.DefaultCaret"].ensureValidPosition ();\r
729 }}, "javax.swing.event.DocumentEvent");\r
730 Clazz.overrideMethod (c$, "changedUpdate", \r
731 function (a) {\r
732 if (this.b$["javax.swing.text.DefaultCaret"].getUpdatePolicy () == 1 || (this.b$["javax.swing.text.DefaultCaret"].getUpdatePolicy () == 0 && !javax.swing.SwingUtilities.isEventDispatchThread ())) {\r
733 return;\r
734 }if (Clazz.instanceOf (a, javax.swing.text.AbstractDocument.UndoRedoDocumentEvent)) {\r
735 this.b$["javax.swing.text.DefaultCaret"].setDot (a.getOffset () + a.getLength ());\r
736 }}, "javax.swing.event.DocumentEvent");\r
737 Clazz.overrideMethod (c$, "propertyChange", \r
738 function (a) {\r
739 var b = a.getOldValue ();\r
740 var c = a.getNewValue ();\r
741 if ((Clazz.instanceOf (b, javax.swing.text.Document)) || (Clazz.instanceOf (c, javax.swing.text.Document))) {\r
742 this.b$["javax.swing.text.DefaultCaret"].setDot (0);\r
743 if (b != null) {\r
744 (b).removeDocumentListener (this);\r
745 }if (c != null) {\r
746 (c).addDocumentListener (this);\r
747 }} else if ("enabled".equals (a.getPropertyName ())) {\r
748 var d = a.getNewValue ();\r
749 if (this.b$["javax.swing.text.DefaultCaret"].component.isFocusOwner ()) {\r
750 if (d === Boolean.TRUE) {\r
751 if (this.b$["javax.swing.text.DefaultCaret"].component.isEditable ()) {\r
752 this.b$["javax.swing.text.DefaultCaret"].setVisible (true);\r
753 }this.b$["javax.swing.text.DefaultCaret"].setSelectionVisible (true);\r
754 } else {\r
755 this.b$["javax.swing.text.DefaultCaret"].setVisible (false);\r
756 this.b$["javax.swing.text.DefaultCaret"].setSelectionVisible (false);\r
757 }}} else if ("caretWidth".equals (a.getPropertyName ())) {\r
758 var d = a.getNewValue ();\r
759 if (d != null) {\r
760 this.b$["javax.swing.text.DefaultCaret"].caretWidth = d.intValue ();\r
761 } else {\r
762 this.b$["javax.swing.text.DefaultCaret"].caretWidth = -1;\r
763 }this.b$["javax.swing.text.DefaultCaret"].repaint ();\r
764 } else if ("caretAspectRatio".equals (a.getPropertyName ())) {\r
765 var d = a.getNewValue ();\r
766 if (d != null) {\r
767 this.b$["javax.swing.text.DefaultCaret"].aspectRatio = d.floatValue ();\r
768 } else {\r
769 this.b$["javax.swing.text.DefaultCaret"].aspectRatio = -1;\r
770 }this.b$["javax.swing.text.DefaultCaret"].repaint ();\r
771 }}, "java.beans.PropertyChangeEvent");\r
772 c$ = Clazz.p0p ();\r
773 };\r
774 c$.$DefaultCaret$DefaultFilterBypass$ = function () {\r
775 Clazz.pu$h(self.c$);\r
776 c$ = Clazz.decorateAsClass (function () {\r
777 Clazz.prepareCallback (this, arguments);\r
778 Clazz.instantialize (this, arguments);\r
779 }, javax.swing.text.DefaultCaret, "DefaultFilterBypass", javax.swing.text.NavigationFilter.FilterBypass);\r
780 Clazz.overrideMethod (c$, "getCaret", \r
781 function () {\r
782 return this.b$["javax.swing.text.DefaultCaret"];\r
783 });\r
784 Clazz.overrideMethod (c$, "setDot", \r
785 function (a, b) {\r
786 this.b$["javax.swing.text.DefaultCaret"].handleSetDot (a, b);\r
787 }, "~N,javax.swing.text.Position.Bias");\r
788 Clazz.overrideMethod (c$, "moveDot", \r
789 function (a, b) {\r
790 this.b$["javax.swing.text.DefaultCaret"].handleMoveDot (a, b);\r
791 }, "~N,javax.swing.text.Position.Bias");\r
792 c$ = Clazz.p0p ();\r
793 };\r
794 c$.$DefaultCaret$1$ = function () {\r
795 Clazz.pu$h(self.c$);\r
796 c$ = Clazz.declareAnonymous (javax.swing.text, "DefaultCaret$1", null, Runnable);\r
797 Clazz.overrideMethod (c$, "run", \r
798 function () {\r
799 this.b$["javax.swing.text.DefaultCaret"].repaintNewCaret ();\r
800 });\r
801 c$ = Clazz.p0p ();\r
802 };\r
803 Clazz.defineStatics (c$,\r
804 "UPDATE_WHEN_ON_EDT", 0,\r
805 "NEVER_UPDATE", 1,\r
806 "ALWAYS_UPDATE", 2,\r
807 "$selectWord", null,\r
808 "selectLine", null);\r
809 });\r