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
6 this.impliedCR = false;
\r
7 this.skipWidth = false;
\r
8 this.expander = null;
\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
16 Clazz.superConstructor (this, javax.swing.text.GlyphView, [elem]);
\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
28 o = Clazz.superCall (this, javax.swing.text.GlyphView, "clone", []);
\r
30 if (Clazz.exceptionOf (cnse, CloneNotSupportedException)) {
\r
38 Clazz.defineMethod (c$, "getGlyphPainter",
\r
40 return this.painter;
\r
42 Clazz.defineMethod (c$, "setGlyphPainter",
\r
45 }, "javax.swing.text.GlyphView.GlyphPainter");
\r
46 Clazz.defineMethod (c$, "getText",
\r
48 var text = javax.swing.text.SegmentCache.getSharedSegment ();
\r
50 var doc = this.getDocument ();
\r
51 doc.getText (p0, p1 - p0, text);
\r
53 if (Clazz.exceptionOf (bl, javax.swing.text.BadLocationException)) {
\r
54 throw new javax.swing.text.StateInvariantError ("GlyphView: Stale view: " + bl);
\r
61 Clazz.defineMethod (c$, "getBackground",
\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
70 Clazz.defineMethod (c$, "getForeground",
\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
78 return c.getForeground ();
\r
81 Clazz.defineMethod (c$, "getFont",
\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
89 return c.getFont ();
\r
92 Clazz.defineMethod (c$, "isUnderline",
\r
94 var attr = this.getAttributes ();
\r
95 return javax.swing.text.StyleConstants.isUnderline (attr);
\r
97 Clazz.defineMethod (c$, "isStrikeThrough",
\r
99 var attr = this.getAttributes ();
\r
100 return javax.swing.text.StyleConstants.isStrikeThrough (attr);
\r
102 Clazz.defineMethod (c$, "isSubscript",
\r
104 var attr = this.getAttributes ();
\r
105 return javax.swing.text.StyleConstants.isSubscript (attr);
\r
107 Clazz.defineMethod (c$, "isSuperscript",
\r
109 var attr = this.getAttributes ();
\r
110 return javax.swing.text.StyleConstants.isSuperscript (attr);
\r
112 Clazz.defineMethod (c$, "getTabExpander",
\r
114 return this.expander;
\r
116 Clazz.defineMethod (c$, "checkPainter",
\r
118 if (this.painter == null) {
\r
119 if (javax.swing.text.GlyphView.defaultPainter == null) {
\r
120 var classname = "javax.swing.text.GlyphPainter1";
\r
123 var loader = this.getClass ().getClassLoader ();
\r
124 if (loader != null) {
\r
125 c = loader.loadClass (classname);
\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
132 throw new javax.swing.text.StateInvariantError ("GlyphView: Can't load glyph painter: " + classname);
\r
134 }this.setGlyphPainter (javax.swing.text.GlyphView.defaultPainter.getPainter (this, this.getStartOffset (), this.getEndOffset ()));
\r
136 Clazz.overrideMethod (c$, "getTabbedSpan",
\r
138 this.checkPainter ();
\r
139 var old = this.expander;
\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
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
155 Clazz.overrideMethod (c$, "getStartOffset",
\r
157 var e = this.getElement ();
\r
158 return (this.length > 0) ? e.getStartOffset () + this.offset : e.getStartOffset ();
\r
160 Clazz.defineMethod (c$, "getEndOffset",
\r
162 var e = this.getElement ();
\r
163 return (this.length > 0) ? e.getStartOffset () + this.offset + this.length : e.getEndOffset ();
\r
165 Clazz.overrideMethod (c$, "paint",
\r
167 }, "java.awt.Graphics,java.awt.Shape");
\r
168 Clazz.defineMethod (c$, "paintTextUsingColor",
\r
169 function (g, a, c, p0, p1) {
\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
183 javax.swing.text.SegmentCache.releaseSharedSegment (s);
\r
185 var p = this.getStartOffset ();
\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
192 g.drawLine (x0, yTmp, x1, yTmp);
\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
199 if (this.impliedCR) {
\r
201 }this.checkPainter ();
\r
202 var p0 = this.getStartOffset ();
\r
203 var p1 = this.getEndOffset ();
\r
206 if (this.skipWidth) {
\r
208 }return this.painter.getSpan (this, p0, p1, this.expander, this.x);
\r
210 var h = this.painter.getHeight (this);
\r
211 if (this.isSuperscript ()) {
\r
215 throw new IllegalArgumentException ("Invalid axis: " + axis);
\r
218 Clazz.defineMethod (c$, "getAlignment",
\r
220 this.checkPainter ();
\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
231 align = (h > 0) ? (h - (d + (a / 2))) / h : 0;
\r
233 align = (h > 0) ? (h - d) / h : 0;
\r
235 }return Clazz.superCall (this, javax.swing.text.GlyphView, "getAlignment", [axis]);
\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
250 this.checkPainter ();
\r
251 var p0 = this.getStartOffset ();
\r
252 var p1 = this.painter.getBoundedPosition (this, p0, pos, len);
\r
255 }if (this.getBreakSpot (p0, p1) != -1) {
\r
257 }if (p1 == this.getEndOffset ()) {
\r
261 }}return Clazz.superCall (this, javax.swing.text.GlyphView, "getBreakWeight", [axis, pos, len]);
\r
263 Clazz.overrideMethod (c$, "breakView",
\r
264 function (axis, p0, pos, len) {
\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
271 }if (p0 == this.getStartOffset () && p1 == this.getEndOffset ()) {
\r
273 }var v = this.createFragment (p0, p1);
\r
274 v.x = Clazz.floatToInt (pos);
\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
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
293 javax.swing.text.SegmentCache.releaseSharedSegment (s);
\r
296 Clazz.defineMethod (c$, "getBreakSpotUseBreakIterator",
\r
297 function (p0, p1) {
\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
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
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
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
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
334 if (this.impliedCR) {
\r
335 var parent = this.getElement ().getParentElement ();
\r
336 this.impliedCR = (parent != null && parent.getElementCount () > 1);
\r
338 Clazz.defineMethod (c$, "getJustificationInfo",
\r
339 function (rowStartOffset) {
\r
340 if (this.justificationInfo != null) {
\r
341 return this.justificationInfo;
\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
362 } else if (state == 1) {
\r
365 } else if (state == 2) {
\r
367 }} else if ('\t' == segment.array[i]) {
\r
372 if ('\n' != segment.array[i] && '\r' != segment.array[i]) {
\r
374 endContentPosition = i;
\r
375 }} else if (state == 1) {
\r
376 } else if (state == 2) {
\r
377 contentSpaces += leadingSpaces;
\r
379 }startContentPosition = i;
\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
391 Clazz.pu$h(self.c$);
\r
392 c$ = Clazz.decorateAsClass (function () {
\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
406 this.leadingSpaces = c;
\r
407 this.contentSpaces = d;
\r
408 this.trailingSpaces = e;
\r
411 }, "~N,~N,~N,~N,~N,~B,java.util.BitSet");
\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
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
428 }var i = a.getContainer ();
\r
429 if (Clazz.instanceOf (i, javax.swing.text.JTextComponent)) {
\r
430 var j = (i).getCaret ();
\r
432 k = (j != null) ? j.getMagicCaretPosition () : null;
\r
434 f[0] = javax.swing.text.Position.Bias.Forward;
\r
436 }var l = a.viewToModel (k.x, 0, d, f);
\r
440 if (g == a.getDocument ().getLength ()) {
\r
442 f[0] = javax.swing.text.Position.Bias.Forward;
\r
446 f[0] = javax.swing.text.Position.Bias.Forward;
\r
453 f[0] = javax.swing.text.Position.Bias.Forward;
\r
456 if (g == a.getDocument ().getLength ()) {
\r
458 f[0] = javax.swing.text.Position.Bias.Forward;
\r
462 f[0] = javax.swing.text.Position.Bias.Forward;
\r
466 }f[0] = javax.swing.text.Position.Bias.Forward;
\r
469 throw new IllegalArgumentException ("Bad direction: " + e);
\r
472 }, "javax.swing.text.GlyphView,~N,javax.swing.text.Position.Bias,java.awt.Shape,~N,~A");
\r
474 Clazz.defineStatics (c$,
\r
475 "IMPLIED_CR", "CR",
\r
476 "defaultPainter", null);
\r