004a8794cac15ae82b11142ecf0fae2fcff3325e
[jalviewjs.git] / site / j2s / javax / swing / text / GlyphView.js
1 Clazz.declarePackage ("javax.swing.text");\r
2 Clazz.load (["javax.swing.text.TabableView", "$.View"], "javax.swing.text.GlyphView", ["java.lang.Boolean", "$.Character", "$.IllegalArgumentException", "java.util.BitSet", "java.awt.Rectangle", "javax.swing.text.AbstractDocument", "$.JTextComponent", "$.Position", "$.SegmentCache", "$.StateInvariantError", "$.StyleConstants", "$.StyledDocument"], function () {\r
3 c$ = Clazz.decorateAsClass (function () {\r
4 this.offset = 0;\r
5 this.length = 0;\r
6 this.impliedCR = false;\r
7 this.skipWidth = false;\r
8 this.expander = null;\r
9 this.x = 0;\r
10 this.painter = null;\r
11 this.justificationInfo = null;\r
12 Clazz.instantialize (this, arguments);\r
13 }, javax.swing.text, "GlyphView", javax.swing.text.View, [javax.swing.text.TabableView, Cloneable]);\r
14 Clazz.makeConstructor (c$, \r
15 function (elem) {\r
16 Clazz.superConstructor (this, javax.swing.text.GlyphView, [elem]);\r
17 this.offset = 0;\r
18 this.length = 0;\r
19 var parent = elem.getParentElement ();\r
20 var attr = elem.getAttributes ();\r
21 this.impliedCR = (attr != null && attr.getAttribute ("CR") != null && parent != null && parent.getElementCount () > 1);\r
22 this.skipWidth = elem.getName ().equals ("br");\r
23 }, "javax.swing.text.Element");\r
24 Clazz.defineMethod (c$, "clone", \r
25 function () {\r
26 var o;\r
27 try {\r
28 o = Clazz.superCall (this, javax.swing.text.GlyphView, "clone", []);\r
29 } catch (cnse) {\r
30 if (Clazz.exceptionOf (cnse, CloneNotSupportedException)) {\r
31 o = null;\r
32 } else {\r
33 throw cnse;\r
34 }\r
35 }\r
36 return o;\r
37 });\r
38 Clazz.defineMethod (c$, "getGlyphPainter", \r
39 function () {\r
40 return this.painter;\r
41 });\r
42 Clazz.defineMethod (c$, "setGlyphPainter", \r
43 function (p) {\r
44 this.painter = p;\r
45 }, "javax.swing.text.GlyphView.GlyphPainter");\r
46 Clazz.defineMethod (c$, "getText", \r
47 function (p0, p1) {\r
48 var text = javax.swing.text.SegmentCache.getSharedSegment ();\r
49 try {\r
50 var doc = this.getDocument ();\r
51 doc.getText (p0, p1 - p0, text);\r
52 } catch (bl) {\r
53 if (Clazz.exceptionOf (bl, javax.swing.text.BadLocationException)) {\r
54 throw  new javax.swing.text.StateInvariantError ("GlyphView: Stale view: " + bl);\r
55 } else {\r
56 throw bl;\r
57 }\r
58 }\r
59 return text;\r
60 }, "~N,~N");\r
61 Clazz.defineMethod (c$, "getBackground", \r
62 function () {\r
63 var doc = this.getDocument ();\r
64 if (Clazz.instanceOf (doc, javax.swing.text.StyledDocument)) {\r
65 var attr = this.getAttributes ();\r
66 if (attr.isDefined (javax.swing.text.StyleConstants.Background)) {\r
67 return (doc).getBackground (attr);\r
68 }}return null;\r
69 });\r
70 Clazz.defineMethod (c$, "getForeground", \r
71 function () {\r
72 var doc = this.getDocument ();\r
73 if (Clazz.instanceOf (doc, javax.swing.text.StyledDocument)) {\r
74 var attr = this.getAttributes ();\r
75 return (doc).getForeground (attr);\r
76 }var c = this.getContainer ();\r
77 if (c != null) {\r
78 return c.getForeground ();\r
79 }return null;\r
80 });\r
81 Clazz.defineMethod (c$, "getFont", \r
82 function () {\r
83 var doc = this.getDocument ();\r
84 if (Clazz.instanceOf (doc, javax.swing.text.StyledDocument)) {\r
85 var attr = this.getAttributes ();\r
86 return (doc).getFont (attr);\r
87 }var c = this.getContainer ();\r
88 if (c != null) {\r
89 return c.getFont ();\r
90 }return null;\r
91 });\r
92 Clazz.defineMethod (c$, "isUnderline", \r
93 function () {\r
94 var attr = this.getAttributes ();\r
95 return javax.swing.text.StyleConstants.isUnderline (attr);\r
96 });\r
97 Clazz.defineMethod (c$, "isStrikeThrough", \r
98 function () {\r
99 var attr = this.getAttributes ();\r
100 return javax.swing.text.StyleConstants.isStrikeThrough (attr);\r
101 });\r
102 Clazz.defineMethod (c$, "isSubscript", \r
103 function () {\r
104 var attr = this.getAttributes ();\r
105 return javax.swing.text.StyleConstants.isSubscript (attr);\r
106 });\r
107 Clazz.defineMethod (c$, "isSuperscript", \r
108 function () {\r
109 var attr = this.getAttributes ();\r
110 return javax.swing.text.StyleConstants.isSuperscript (attr);\r
111 });\r
112 Clazz.defineMethod (c$, "getTabExpander", \r
113 function () {\r
114 return this.expander;\r
115 });\r
116 Clazz.defineMethod (c$, "checkPainter", \r
117 function () {\r
118 if (this.painter == null) {\r
119 if (javax.swing.text.GlyphView.defaultPainter == null) {\r
120 var classname = "javax.swing.text.GlyphPainter1";\r
121 try {\r
122 var c;\r
123 var loader = this.getClass ().getClassLoader ();\r
124 if (loader != null) {\r
125 c = loader.loadClass (classname);\r
126 } else {\r
127 c = Clazz._4Name (classname);\r
128 }var o = c.newInstance ();\r
129 if (Clazz.instanceOf (o, javax.swing.text.GlyphView.GlyphPainter)) {\r
130 javax.swing.text.GlyphView.defaultPainter = o;\r
131 }} catch (e) {\r
132 throw  new javax.swing.text.StateInvariantError ("GlyphView: Can't load glyph painter: " + classname);\r
133 }\r
134 }this.setGlyphPainter (javax.swing.text.GlyphView.defaultPainter.getPainter (this, this.getStartOffset (), this.getEndOffset ()));\r
135 }});\r
136 Clazz.overrideMethod (c$, "getTabbedSpan", \r
137 function (x, e) {\r
138 this.checkPainter ();\r
139 var old = this.expander;\r
140 this.expander = e;\r
141 if (this.expander !== old) {\r
142 this.preferenceChanged (null, true, false);\r
143 }this.x = Clazz.floatToInt (x);\r
144 var p0 = this.getStartOffset ();\r
145 var p1 = this.getEndOffset ();\r
146 var width = this.painter.getSpan (this, p0, p1, this.expander, x);\r
147 return width;\r
148 }, "~N,javax.swing.text.TabExpander");\r
149 Clazz.overrideMethod (c$, "getPartialSpan", \r
150 function (p0, p1) {\r
151 this.checkPainter ();\r
152 var width = this.painter.getSpan (this, p0, p1, this.expander, this.x);\r
153 return width;\r
154 }, "~N,~N");\r
155 Clazz.overrideMethod (c$, "getStartOffset", \r
156 function () {\r
157 var e = this.getElement ();\r
158 return (this.length > 0) ? e.getStartOffset () + this.offset : e.getStartOffset ();\r
159 });\r
160 Clazz.defineMethod (c$, "getEndOffset", \r
161 function () {\r
162 var e = this.getElement ();\r
163 return (this.length > 0) ? e.getStartOffset () + this.offset + this.length : e.getEndOffset ();\r
164 });\r
165 Clazz.overrideMethod (c$, "paint", \r
166 function (g, a) {\r
167 }, "java.awt.Graphics,java.awt.Shape");\r
168 Clazz.defineMethod (c$, "paintTextUsingColor", \r
169 function (g, a, c, p0, p1) {\r
170 g.setColor (c);\r
171 this.painter.paint (this, g, a, p0, p1);\r
172 var underline = this.isUnderline ();\r
173 var strike = this.isStrikeThrough ();\r
174 if (underline || strike) {\r
175 var alloc = (Clazz.instanceOf (a, java.awt.Rectangle)) ? a : a.getBounds ();\r
176 var parent = this.getParent ();\r
177 if ((parent != null) && (parent.getEndOffset () == p1)) {\r
178 var s = this.getText (p0, p1);\r
179 while (Character.isWhitespace (s.last ())) {\r
180 p1 -= 1;\r
181 s.count -= 1;\r
182 }\r
183 javax.swing.text.SegmentCache.releaseSharedSegment (s);\r
184 }var x0 = alloc.x;\r
185 var p = this.getStartOffset ();\r
186 if (p != p0) {\r
187 x0 += Clazz.floatToInt (this.painter.getSpan (this, p, p0, this.getTabExpander (), x0));\r
188 }var x1 = x0 + Clazz.floatToInt (this.painter.getSpan (this, p0, p1, this.getTabExpander (), x0));\r
189 var y = alloc.y + alloc.height - Clazz.floatToInt (this.painter.getDescent (this));\r
190 if (underline) {\r
191 var yTmp = y + 1;\r
192 g.drawLine (x0, yTmp, x1, yTmp);\r
193 }if (strike) {\r
194 var yTmp = y - Clazz.floatToInt (this.painter.getAscent (this) * 0.3);\r
195 g.drawLine (x0, yTmp, x1, yTmp);\r
196 }}}, "java.awt.Graphics,java.awt.Shape,java.awt.Color,~N,~N");\r
197 Clazz.overrideMethod (c$, "getPreferredSpan", \r
198 function (axis) {\r
199 if (this.impliedCR) {\r
200 return 0;\r
201 }this.checkPainter ();\r
202 var p0 = this.getStartOffset ();\r
203 var p1 = this.getEndOffset ();\r
204 switch (axis) {\r
205 case 0:\r
206 if (this.skipWidth) {\r
207 return 0;\r
208 }return this.painter.getSpan (this, p0, p1, this.expander, this.x);\r
209 case 1:\r
210 var h = this.painter.getHeight (this);\r
211 if (this.isSuperscript ()) {\r
212 h += h / 3;\r
213 }return h;\r
214 default:\r
215 throw  new IllegalArgumentException ("Invalid axis: " + axis);\r
216 }\r
217 }, "~N");\r
218 Clazz.defineMethod (c$, "getAlignment", \r
219 function (axis) {\r
220 this.checkPainter ();\r
221 if (axis == 1) {\r
222 var sup = this.isSuperscript ();\r
223 var sub = this.isSubscript ();\r
224 var h = this.painter.getHeight (this);\r
225 var d = this.painter.getDescent (this);\r
226 var a = this.painter.getAscent (this);\r
227 var align;\r
228 if (sup) {\r
229 align = 1.0;\r
230 } else if (sub) {\r
231 align = (h > 0) ? (h - (d + (a / 2))) / h : 0;\r
232 } else {\r
233 align = (h > 0) ? (h - d) / h : 0;\r
234 }return align;\r
235 }return Clazz.superCall (this, javax.swing.text.GlyphView, "getAlignment", [axis]);\r
236 }, "~N");\r
237 Clazz.defineMethod (c$, "modelToView", \r
238 function (pos, a, b) {\r
239 this.checkPainter ();\r
240 return this.painter.modelToView (this, pos, b, a);\r
241 }, "~N,java.awt.Shape,javax.swing.text.Position.Bias");\r
242 Clazz.defineMethod (c$, "viewToModel", \r
243 function (x, y, a, biasReturn) {\r
244 this.checkPainter ();\r
245 return this.painter.viewToModel (this, x, y, a, biasReturn);\r
246 }, "~N,~N,java.awt.Shape,~A");\r
247 Clazz.defineMethod (c$, "getBreakWeight", \r
248 function (axis, pos, len) {\r
249 if (axis == 0) {\r
250 this.checkPainter ();\r
251 var p0 = this.getStartOffset ();\r
252 var p1 = this.painter.getBoundedPosition (this, p0, pos, len);\r
253 if (p1 == p0) {\r
254 return 0;\r
255 }if (this.getBreakSpot (p0, p1) != -1) {\r
256 return 2000;\r
257 }if (p1 == this.getEndOffset ()) {\r
258 return 1000;\r
259 } else {\r
260 return 999;\r
261 }}return Clazz.superCall (this, javax.swing.text.GlyphView, "getBreakWeight", [axis, pos, len]);\r
262 }, "~N,~N,~N");\r
263 Clazz.overrideMethod (c$, "breakView", \r
264 function (axis, p0, pos, len) {\r
265 if (axis == 0) {\r
266 this.checkPainter ();\r
267 var p1 = this.painter.getBoundedPosition (this, p0, pos, len);\r
268 var breakSpot = this.getBreakSpot (p0, p1);\r
269 if (breakSpot != -1) {\r
270 p1 = breakSpot;\r
271 }if (p0 == this.getStartOffset () && p1 == this.getEndOffset ()) {\r
272 return this;\r
273 }var v = this.createFragment (p0, p1);\r
274 v.x = Clazz.floatToInt (pos);\r
275 return v;\r
276 }return this;\r
277 }, "~N,~N,~N,~N");\r
278 Clazz.defineMethod (c$, "getBreakSpot", \r
279  function (p0, p1) {\r
280 var doc = this.getDocument ();\r
281 if (doc != null && Boolean.TRUE.equals (doc.getProperty (javax.swing.text.AbstractDocument.MultiByteProperty))) {\r
282 return this.getBreakSpotUseBreakIterator (p0, p1);\r
283 }return this.getBreakSpotUseWhitespace (p0, p1);\r
284 }, "~N,~N");\r
285 Clazz.defineMethod (c$, "getBreakSpotUseWhitespace", \r
286  function (p0, p1) {\r
287 var s = this.getText (p0, p1);\r
288 for (var ch = s.last (); ch != '\uffff'; ch = s.previous ()) {\r
289 if (Character.isWhitespace (ch)) {\r
290 javax.swing.text.SegmentCache.releaseSharedSegment (s);\r
291 return s.getIndex () - s.getBeginIndex () + 1 + p0;\r
292 }}\r
293 javax.swing.text.SegmentCache.releaseSharedSegment (s);\r
294 return -1;\r
295 }, "~N,~N");\r
296 Clazz.defineMethod (c$, "getBreakSpotUseBreakIterator", \r
297  function (p0, p1) {\r
298 return 0;\r
299 }, "~N,~N");\r
300 Clazz.overrideMethod (c$, "createFragment", \r
301 function (p0, p1) {\r
302 this.checkPainter ();\r
303 var elem = this.getElement ();\r
304 var v = this.clone ();\r
305 v.offset = p0 - elem.getStartOffset ();\r
306 v.length = p1 - p0;\r
307 v.painter = this.painter.getPainter (v, p0, p1);\r
308 v.justificationInfo = null;\r
309 return v;\r
310 }, "~N,~N");\r
311 Clazz.overrideMethod (c$, "getNextVisualPositionFrom", \r
312 function (pos, b, a, direction, biasRet) {\r
313 return this.painter.getNextVisualPositionFrom (this, pos, b, a, direction, biasRet);\r
314 }, "~N,javax.swing.text.Position.Bias,java.awt.Shape,~N,~A");\r
315 Clazz.overrideMethod (c$, "insertUpdate", \r
316 function (e, a, f) {\r
317 this.justificationInfo = null;\r
318 this.syncCR ();\r
319 this.preferenceChanged (null, true, false);\r
320 }, "javax.swing.event.DocumentEvent,java.awt.Shape,javax.swing.text.ViewFactory");\r
321 Clazz.overrideMethod (c$, "removeUpdate", \r
322 function (e, a, f) {\r
323 this.justificationInfo = null;\r
324 this.syncCR ();\r
325 this.preferenceChanged (null, true, false);\r
326 }, "javax.swing.event.DocumentEvent,java.awt.Shape,javax.swing.text.ViewFactory");\r
327 Clazz.overrideMethod (c$, "changedUpdate", \r
328 function (e, a, f) {\r
329 this.syncCR ();\r
330 this.preferenceChanged (null, true, true);\r
331 }, "javax.swing.event.DocumentEvent,java.awt.Shape,javax.swing.text.ViewFactory");\r
332 Clazz.defineMethod (c$, "syncCR", \r
333  function () {\r
334 if (this.impliedCR) {\r
335 var parent = this.getElement ().getParentElement ();\r
336 this.impliedCR = (parent != null && parent.getElementCount () > 1);\r
337 }});\r
338 Clazz.defineMethod (c$, "getJustificationInfo", \r
339 function (rowStartOffset) {\r
340 if (this.justificationInfo != null) {\r
341 return this.justificationInfo;\r
342 }var TRAILING = 0;\r
343 var CONTENT = 1;\r
344 var SPACES = 2;\r
345 var startOffset = this.getStartOffset ();\r
346 var endOffset = this.getEndOffset ();\r
347 var segment = this.getText (startOffset, endOffset);\r
348 var txtOffset = segment.offset;\r
349 var txtEnd = segment.offset + segment.count - 1;\r
350 var startContentPosition = txtEnd + 1;\r
351 var endContentPosition = txtOffset - 1;\r
352 var trailingSpaces = 0;\r
353 var contentSpaces = 0;\r
354 var leadingSpaces = 0;\r
355 var hasTab = false;\r
356 var spaceMap =  new java.util.BitSet (endOffset - startOffset + 1);\r
357 for (var i = txtEnd, state = 0; i >= txtOffset; i--) {\r
358 if (' ' == segment.array[i]) {\r
359 spaceMap.set (i - txtOffset);\r
360 if (state == 0) {\r
361 trailingSpaces++;\r
362 } else if (state == 1) {\r
363 state = 2;\r
364 leadingSpaces = 1;\r
365 } else if (state == 2) {\r
366 leadingSpaces++;\r
367 }} else if ('\t' == segment.array[i]) {\r
368 hasTab = true;\r
369 break;\r
370 } else {\r
371 if (state == 0) {\r
372 if ('\n' != segment.array[i] && '\r' != segment.array[i]) {\r
373 state = 1;\r
374 endContentPosition = i;\r
375 }} else if (state == 1) {\r
376 } else if (state == 2) {\r
377 contentSpaces += leadingSpaces;\r
378 leadingSpaces = 0;\r
379 }startContentPosition = i;\r
380 }}\r
381 javax.swing.text.SegmentCache.releaseSharedSegment (segment);\r
382 var startJustifiableContent = -1;\r
383 if (startContentPosition < txtEnd) {\r
384 startJustifiableContent = startContentPosition - txtOffset;\r
385 }var endJustifiableContent = -1;\r
386 if (endContentPosition > txtOffset) {\r
387 endJustifiableContent = endContentPosition - txtOffset;\r
388 }this.justificationInfo =  new javax.swing.text.GlyphView.JustificationInfo (startJustifiableContent, endJustifiableContent, leadingSpaces, contentSpaces, trailingSpaces, hasTab, spaceMap);\r
389 return this.justificationInfo;\r
390 }, "~N");\r
391 Clazz.pu$h(self.c$);\r
392 c$ = Clazz.decorateAsClass (function () {\r
393 this.start = 0;\r
394 this.end = 0;\r
395 this.leadingSpaces = 0;\r
396 this.contentSpaces = 0;\r
397 this.trailingSpaces = 0;\r
398 this.hasTab = false;\r
399 this.spaceMap = null;\r
400 Clazz.instantialize (this, arguments);\r
401 }, javax.swing.text.GlyphView, "JustificationInfo");\r
402 Clazz.makeConstructor (c$, \r
403 function (a, b, c, d, e, f, g) {\r
404 this.start = a;\r
405 this.end = b;\r
406 this.leadingSpaces = c;\r
407 this.contentSpaces = d;\r
408 this.trailingSpaces = e;\r
409 this.hasTab = f;\r
410 this.spaceMap = g;\r
411 }, "~N,~N,~N,~N,~N,~B,java.util.BitSet");\r
412 c$ = Clazz.p0p ();\r
413 Clazz.pu$h(self.c$);\r
414 c$ = Clazz.declareType (javax.swing.text.GlyphView, "GlyphPainter");\r
415 Clazz.defineMethod (c$, "getPainter", \r
416 function (a, b, c) {\r
417 return this;\r
418 }, "javax.swing.text.GlyphView,~N,~N");\r
419 Clazz.defineMethod (c$, "getNextVisualPositionFrom", \r
420 function (a, b, c, d, e, f) {\r
421 var g = a.getStartOffset ();\r
422 var h = a.getEndOffset ();\r
423 switch (e) {\r
424 case 1:\r
425 case 5:\r
426 if (b != -1) {\r
427 return -1;\r
428 }var i = a.getContainer ();\r
429 if (Clazz.instanceOf (i, javax.swing.text.JTextComponent)) {\r
430 var j = (i).getCaret ();\r
431 var k;\r
432 k = (j != null) ? j.getMagicCaretPosition () : null;\r
433 if (k == null) {\r
434 f[0] = javax.swing.text.Position.Bias.Forward;\r
435 return g;\r
436 }var l = a.viewToModel (k.x, 0, d, f);\r
437 return l;\r
438 }break;\r
439 case 3:\r
440 if (g == a.getDocument ().getLength ()) {\r
441 if (b == -1) {\r
442 f[0] = javax.swing.text.Position.Bias.Forward;\r
443 return g;\r
444 }return -1;\r
445 }if (b == -1) {\r
446 f[0] = javax.swing.text.Position.Bias.Forward;\r
447 return g;\r
448 }if (b == h) {\r
449 return -1;\r
450 }if (++b == h) {\r
451 return -1;\r
452 } else {\r
453 f[0] = javax.swing.text.Position.Bias.Forward;\r
454 }return b;\r
455 case 7:\r
456 if (g == a.getDocument ().getLength ()) {\r
457 if (b == -1) {\r
458 f[0] = javax.swing.text.Position.Bias.Forward;\r
459 return g;\r
460 }return -1;\r
461 }if (b == -1) {\r
462 f[0] = javax.swing.text.Position.Bias.Forward;\r
463 return h - 1;\r
464 }if (b == g) {\r
465 return -1;\r
466 }f[0] = javax.swing.text.Position.Bias.Forward;\r
467 return (b - 1);\r
468 default:\r
469 throw  new IllegalArgumentException ("Bad direction: " + e);\r
470 }\r
471 return b;\r
472 }, "javax.swing.text.GlyphView,~N,javax.swing.text.Position.Bias,java.awt.Shape,~N,~A");\r
473 c$ = Clazz.p0p ();\r
474 Clazz.defineStatics (c$,\r
475 "IMPLIED_CR", "CR",\r
476 "defaultPainter", null);\r
477 });\r