1 Clazz.declarePackage ("javax.swing.text");
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 () {
3 c$ = Clazz.decorateAsClass (function () {
6 this.impliedCR = false;
7 this.skipWidth = false;
11 this.justificationInfo = null;
12 Clazz.instantialize (this, arguments);
13 }, javax.swing.text, "GlyphView", javax.swing.text.View, [javax.swing.text.TabableView, Cloneable]);
14 Clazz.makeConstructor (c$,
16 Clazz.superConstructor (this, javax.swing.text.GlyphView, [elem]);
19 var parent = elem.getParentElement ();
20 var attr = elem.getAttributes ();
21 this.impliedCR = (attr != null && attr.getAttribute ("CR") != null && parent != null && parent.getElementCount () > 1);
22 this.skipWidth = elem.getName ().equals ("br");
23 }, "javax.swing.text.Element");
24 Clazz.defineMethod (c$, "clone",
28 o = Clazz.superCall (this, javax.swing.text.GlyphView, "clone", []);
30 if (Clazz.exceptionOf (cnse, CloneNotSupportedException)) {
38 Clazz.defineMethod (c$, "getGlyphPainter",
42 Clazz.defineMethod (c$, "setGlyphPainter",
45 }, "javax.swing.text.GlyphView.GlyphPainter");
46 Clazz.defineMethod (c$, "getText",
48 var text = javax.swing.text.SegmentCache.getSharedSegment ();
50 var doc = this.getDocument ();
51 doc.getText (p0, p1 - p0, text);
53 if (Clazz.exceptionOf (bl, javax.swing.text.BadLocationException)) {
54 throw new javax.swing.text.StateInvariantError ("GlyphView: Stale view: " + bl);
61 Clazz.defineMethod (c$, "getBackground",
63 var doc = this.getDocument ();
64 if (Clazz.instanceOf (doc, javax.swing.text.StyledDocument)) {
65 var attr = this.getAttributes ();
66 if (attr.isDefined (javax.swing.text.StyleConstants.Background)) {
67 return (doc).getBackground (attr);
70 Clazz.defineMethod (c$, "getForeground",
72 var doc = this.getDocument ();
73 if (Clazz.instanceOf (doc, javax.swing.text.StyledDocument)) {
74 var attr = this.getAttributes ();
75 return (doc).getForeground (attr);
76 }var c = this.getContainer ();
78 return c.getForeground ();
81 Clazz.defineMethod (c$, "getFont",
83 var doc = this.getDocument ();
84 if (Clazz.instanceOf (doc, javax.swing.text.StyledDocument)) {
85 var attr = this.getAttributes ();
86 return (doc).getFont (attr);
87 }var c = this.getContainer ();
92 Clazz.defineMethod (c$, "isUnderline",
94 var attr = this.getAttributes ();
95 return javax.swing.text.StyleConstants.isUnderline (attr);
97 Clazz.defineMethod (c$, "isStrikeThrough",
99 var attr = this.getAttributes ();
100 return javax.swing.text.StyleConstants.isStrikeThrough (attr);
102 Clazz.defineMethod (c$, "isSubscript",
104 var attr = this.getAttributes ();
105 return javax.swing.text.StyleConstants.isSubscript (attr);
107 Clazz.defineMethod (c$, "isSuperscript",
109 var attr = this.getAttributes ();
110 return javax.swing.text.StyleConstants.isSuperscript (attr);
112 Clazz.defineMethod (c$, "getTabExpander",
114 return this.expander;
116 Clazz.defineMethod (c$, "checkPainter",
118 if (this.painter == null) {
119 if (javax.swing.text.GlyphView.defaultPainter == null) {
120 var classname = "javax.swing.text.GlyphPainter1";
123 var loader = this.getClass ().getClassLoader ();
124 if (loader != null) {
125 c = loader.loadClass (classname);
127 c = Clazz._4Name (classname);
128 }var o = c.newInstance ();
129 if (Clazz.instanceOf (o, javax.swing.text.GlyphView.GlyphPainter)) {
130 javax.swing.text.GlyphView.defaultPainter = o;
132 throw new javax.swing.text.StateInvariantError ("GlyphView: Can't load glyph painter: " + classname);
134 }this.setGlyphPainter (javax.swing.text.GlyphView.defaultPainter.getPainter (this, this.getStartOffset (), this.getEndOffset ()));
136 Clazz.overrideMethod (c$, "getTabbedSpan",
138 this.checkPainter ();
139 var old = this.expander;
141 if (this.expander !== old) {
142 this.preferenceChanged (null, true, false);
143 }this.x = Clazz.floatToInt (x);
144 var p0 = this.getStartOffset ();
145 var p1 = this.getEndOffset ();
146 var width = this.painter.getSpan (this, p0, p1, this.expander, x);
148 }, "~N,javax.swing.text.TabExpander");
149 Clazz.overrideMethod (c$, "getPartialSpan",
151 this.checkPainter ();
152 var width = this.painter.getSpan (this, p0, p1, this.expander, this.x);
155 Clazz.overrideMethod (c$, "getStartOffset",
157 var e = this.getElement ();
158 return (this.length > 0) ? e.getStartOffset () + this.offset : e.getStartOffset ();
160 Clazz.defineMethod (c$, "getEndOffset",
162 var e = this.getElement ();
163 return (this.length > 0) ? e.getStartOffset () + this.offset + this.length : e.getEndOffset ();
165 Clazz.overrideMethod (c$, "paint",
167 }, "java.awt.Graphics,java.awt.Shape");
168 Clazz.defineMethod (c$, "paintTextUsingColor",
169 function (g, a, c, p0, p1) {
171 this.painter.paint (this, g, a, p0, p1);
172 var underline = this.isUnderline ();
173 var strike = this.isStrikeThrough ();
174 if (underline || strike) {
175 var alloc = (Clazz.instanceOf (a, java.awt.Rectangle)) ? a : a.getBounds ();
176 var parent = this.getParent ();
177 if ((parent != null) && (parent.getEndOffset () == p1)) {
178 var s = this.getText (p0, p1);
179 while (Character.isWhitespace (s.last ())) {
183 javax.swing.text.SegmentCache.releaseSharedSegment (s);
185 var p = this.getStartOffset ();
187 x0 += Clazz.floatToInt (this.painter.getSpan (this, p, p0, this.getTabExpander (), x0));
188 }var x1 = x0 + Clazz.floatToInt (this.painter.getSpan (this, p0, p1, this.getTabExpander (), x0));
189 var y = alloc.y + alloc.height - Clazz.floatToInt (this.painter.getDescent (this));
192 g.drawLine (x0, yTmp, x1, yTmp);
194 var yTmp = y - Clazz.floatToInt (this.painter.getAscent (this) * 0.3);
195 g.drawLine (x0, yTmp, x1, yTmp);
196 }}}, "java.awt.Graphics,java.awt.Shape,java.awt.Color,~N,~N");
197 Clazz.overrideMethod (c$, "getPreferredSpan",
199 if (this.impliedCR) {
201 }this.checkPainter ();
202 var p0 = this.getStartOffset ();
203 var p1 = this.getEndOffset ();
206 if (this.skipWidth) {
208 }return this.painter.getSpan (this, p0, p1, this.expander, this.x);
210 var h = this.painter.getHeight (this);
211 if (this.isSuperscript ()) {
215 throw new IllegalArgumentException ("Invalid axis: " + axis);
218 Clazz.defineMethod (c$, "getAlignment",
220 this.checkPainter ();
222 var sup = this.isSuperscript ();
223 var sub = this.isSubscript ();
224 var h = this.painter.getHeight (this);
225 var d = this.painter.getDescent (this);
226 var a = this.painter.getAscent (this);
231 align = (h > 0) ? (h - (d + (a / 2))) / h : 0;
233 align = (h > 0) ? (h - d) / h : 0;
235 }return Clazz.superCall (this, javax.swing.text.GlyphView, "getAlignment", [axis]);
237 Clazz.defineMethod (c$, "modelToView",
238 function (pos, a, b) {
239 this.checkPainter ();
240 return this.painter.modelToView (this, pos, b, a);
241 }, "~N,java.awt.Shape,javax.swing.text.Position.Bias");
242 Clazz.defineMethod (c$, "viewToModel",
243 function (x, y, a, biasReturn) {
244 this.checkPainter ();
245 return this.painter.viewToModel (this, x, y, a, biasReturn);
246 }, "~N,~N,java.awt.Shape,~A");
247 Clazz.defineMethod (c$, "getBreakWeight",
248 function (axis, pos, len) {
250 this.checkPainter ();
251 var p0 = this.getStartOffset ();
252 var p1 = this.painter.getBoundedPosition (this, p0, pos, len);
255 }if (this.getBreakSpot (p0, p1) != -1) {
257 }if (p1 == this.getEndOffset ()) {
261 }}return Clazz.superCall (this, javax.swing.text.GlyphView, "getBreakWeight", [axis, pos, len]);
263 Clazz.overrideMethod (c$, "breakView",
264 function (axis, p0, pos, len) {
266 this.checkPainter ();
267 var p1 = this.painter.getBoundedPosition (this, p0, pos, len);
268 var breakSpot = this.getBreakSpot (p0, p1);
269 if (breakSpot != -1) {
271 }if (p0 == this.getStartOffset () && p1 == this.getEndOffset ()) {
273 }var v = this.createFragment (p0, p1);
274 v.x = Clazz.floatToInt (pos);
278 Clazz.defineMethod (c$, "getBreakSpot",
280 var doc = this.getDocument ();
281 if (doc != null && Boolean.TRUE.equals (doc.getProperty (javax.swing.text.AbstractDocument.MultiByteProperty))) {
282 return this.getBreakSpotUseBreakIterator (p0, p1);
283 }return this.getBreakSpotUseWhitespace (p0, p1);
285 Clazz.defineMethod (c$, "getBreakSpotUseWhitespace",
287 var s = this.getText (p0, p1);
288 for (var ch = s.last (); ch != '\uffff'; ch = s.previous ()) {
289 if (Character.isWhitespace (ch)) {
290 javax.swing.text.SegmentCache.releaseSharedSegment (s);
291 return s.getIndex () - s.getBeginIndex () + 1 + p0;
293 javax.swing.text.SegmentCache.releaseSharedSegment (s);
296 Clazz.defineMethod (c$, "getBreakSpotUseBreakIterator",
300 Clazz.overrideMethod (c$, "createFragment",
302 this.checkPainter ();
303 var elem = this.getElement ();
304 var v = this.clone ();
305 v.offset = p0 - elem.getStartOffset ();
307 v.painter = this.painter.getPainter (v, p0, p1);
308 v.justificationInfo = null;
311 Clazz.overrideMethod (c$, "getNextVisualPositionFrom",
312 function (pos, b, a, direction, biasRet) {
313 return this.painter.getNextVisualPositionFrom (this, pos, b, a, direction, biasRet);
314 }, "~N,javax.swing.text.Position.Bias,java.awt.Shape,~N,~A");
315 Clazz.overrideMethod (c$, "insertUpdate",
317 this.justificationInfo = null;
319 this.preferenceChanged (null, true, false);
320 }, "javax.swing.event.DocumentEvent,java.awt.Shape,javax.swing.text.ViewFactory");
321 Clazz.overrideMethod (c$, "removeUpdate",
323 this.justificationInfo = null;
325 this.preferenceChanged (null, true, false);
326 }, "javax.swing.event.DocumentEvent,java.awt.Shape,javax.swing.text.ViewFactory");
327 Clazz.overrideMethod (c$, "changedUpdate",
330 this.preferenceChanged (null, true, true);
331 }, "javax.swing.event.DocumentEvent,java.awt.Shape,javax.swing.text.ViewFactory");
332 Clazz.defineMethod (c$, "syncCR",
334 if (this.impliedCR) {
335 var parent = this.getElement ().getParentElement ();
336 this.impliedCR = (parent != null && parent.getElementCount () > 1);
338 Clazz.defineMethod (c$, "getJustificationInfo",
339 function (rowStartOffset) {
340 if (this.justificationInfo != null) {
341 return this.justificationInfo;
345 var startOffset = this.getStartOffset ();
346 var endOffset = this.getEndOffset ();
347 var segment = this.getText (startOffset, endOffset);
348 var txtOffset = segment.offset;
349 var txtEnd = segment.offset + segment.count - 1;
350 var startContentPosition = txtEnd + 1;
351 var endContentPosition = txtOffset - 1;
352 var trailingSpaces = 0;
353 var contentSpaces = 0;
354 var leadingSpaces = 0;
356 var spaceMap = new java.util.BitSet (endOffset - startOffset + 1);
357 for (var i = txtEnd, state = 0; i >= txtOffset; i--) {
358 if (' ' == segment.array[i]) {
359 spaceMap.set (i - txtOffset);
362 } else if (state == 1) {
365 } else if (state == 2) {
367 }} else if ('\t' == segment.array[i]) {
372 if ('\n' != segment.array[i] && '\r' != segment.array[i]) {
374 endContentPosition = i;
375 }} else if (state == 1) {
376 } else if (state == 2) {
377 contentSpaces += leadingSpaces;
379 }startContentPosition = i;
381 javax.swing.text.SegmentCache.releaseSharedSegment (segment);
382 var startJustifiableContent = -1;
383 if (startContentPosition < txtEnd) {
384 startJustifiableContent = startContentPosition - txtOffset;
385 }var endJustifiableContent = -1;
386 if (endContentPosition > txtOffset) {
387 endJustifiableContent = endContentPosition - txtOffset;
388 }this.justificationInfo = new javax.swing.text.GlyphView.JustificationInfo (startJustifiableContent, endJustifiableContent, leadingSpaces, contentSpaces, trailingSpaces, hasTab, spaceMap);
389 return this.justificationInfo;
392 c$ = Clazz.decorateAsClass (function () {
395 this.leadingSpaces = 0;
396 this.contentSpaces = 0;
397 this.trailingSpaces = 0;
399 this.spaceMap = null;
400 Clazz.instantialize (this, arguments);
401 }, javax.swing.text.GlyphView, "JustificationInfo");
402 Clazz.makeConstructor (c$,
403 function (a, b, c, d, e, f, g) {
406 this.leadingSpaces = c;
407 this.contentSpaces = d;
408 this.trailingSpaces = e;
411 }, "~N,~N,~N,~N,~N,~B,java.util.BitSet");
414 c$ = Clazz.declareType (javax.swing.text.GlyphView, "GlyphPainter");
415 Clazz.defineMethod (c$, "getPainter",
418 }, "javax.swing.text.GlyphView,~N,~N");
419 Clazz.defineMethod (c$, "getNextVisualPositionFrom",
420 function (a, b, c, d, e, f) {
421 var g = a.getStartOffset ();
422 var h = a.getEndOffset ();
428 }var i = a.getContainer ();
429 if (Clazz.instanceOf (i, javax.swing.text.JTextComponent)) {
430 var j = (i).getCaret ();
432 k = (j != null) ? j.getMagicCaretPosition () : null;
434 f[0] = javax.swing.text.Position.Bias.Forward;
436 }var l = a.viewToModel (k.x, 0, d, f);
440 if (g == a.getDocument ().getLength ()) {
442 f[0] = javax.swing.text.Position.Bias.Forward;
446 f[0] = javax.swing.text.Position.Bias.Forward;
453 f[0] = javax.swing.text.Position.Bias.Forward;
456 if (g == a.getDocument ().getLength ()) {
458 f[0] = javax.swing.text.Position.Bias.Forward;
462 f[0] = javax.swing.text.Position.Bias.Forward;
466 }f[0] = javax.swing.text.Position.Bias.Forward;
469 throw new IllegalArgumentException ("Bad direction: " + e);
472 }, "javax.swing.text.GlyphView,~N,javax.swing.text.Position.Bias,java.awt.Shape,~N,~A");
474 Clazz.defineStatics (c$,
476 "defaultPainter", null);