1 Clazz.declarePackage ("javax.swing.text");
\r
2 Clazz.load (["javax.swing.text.BoxView", "$.FlowView", "$.TabExpander"], "javax.swing.text.ParagraphView", ["java.lang.Boolean", "$.IllegalArgumentException", "java.util.Arrays", "java.awt.Rectangle", "java.awt.font.TextAttribute", "javax.swing.text.AbstractDocument", "javax.swing.text.FlowView.FlowStrategy", "javax.swing.text.GlyphView", "$.Position", "$.Segment", "$.StateInvariantError", "$.StyleConstants", "$.TabableView"], function () {
\r
3 c$ = Clazz.decorateAsClass (function () {
\r
4 this.justification = 0;
\r
5 this.lineSpacing = 0;
\r
6 this.firstLineIndent = 0;
\r
8 if (!Clazz.isClassDefined ("javax.swing.text.ParagraphView.Row")) {
\r
9 javax.swing.text.ParagraphView.$ParagraphView$Row$ ();
\r
11 Clazz.instantialize (this, arguments);
\r
12 }, javax.swing.text, "ParagraphView", javax.swing.text.FlowView, javax.swing.text.TabExpander);
\r
13 Clazz.makeConstructor (c$,
\r
15 Clazz.superConstructor (this, javax.swing.text.ParagraphView, [elem, 1]);
\r
16 this.setPropertiesFromAttributes ();
\r
17 var doc = elem.getDocument ();
\r
18 var i18nFlag = doc.getProperty ("i18n");
\r
19 if ((i18nFlag != null) && i18nFlag.equals (Boolean.TRUE)) {
\r
21 if (javax.swing.text.ParagraphView.i18nStrategy == null) {
\r
22 var classname = "javax.swing.text.TextLayoutStrategy";
\r
23 var loader = this.getClass ().getClassLoader ();
\r
24 if (loader != null) {
\r
25 javax.swing.text.ParagraphView.i18nStrategy = loader.loadClass (classname);
\r
27 javax.swing.text.ParagraphView.i18nStrategy = Clazz._4Name (classname);
\r
28 }}var o = javax.swing.text.ParagraphView.i18nStrategy.newInstance ();
\r
29 if (Clazz.instanceOf (o, javax.swing.text.FlowView.FlowStrategy)) {
\r
32 throw new javax.swing.text.StateInvariantError ("ParagraphView: Can't create i18n strategy: " + e.getMessage ());
\r
34 }}, "javax.swing.text.Element");
\r
35 Clazz.defineMethod (c$, "setJustification",
\r
37 this.justification = j;
\r
39 Clazz.defineMethod (c$, "setLineSpacing",
\r
41 this.lineSpacing = ls;
\r
43 Clazz.defineMethod (c$, "setFirstLineIndent",
\r
45 this.firstLineIndent = Clazz.floatToInt (fi);
\r
47 Clazz.defineMethod (c$, "setPropertiesFromAttributes",
\r
49 var attr = this.getAttributes ();
\r
51 this.setParagraphInsets (attr);
\r
52 var a = attr.getAttribute (javax.swing.text.StyleConstants.Alignment);
\r
55 var doc = this.getElement ().getDocument ();
\r
56 var o = doc.getProperty (java.awt.font.TextAttribute.RUN_DIRECTION);
\r
57 if ((o != null) && o.equals (java.awt.font.TextAttribute.RUN_DIRECTION_RTL)) {
\r
62 alignment = a.intValue ();
\r
63 }this.setJustification (alignment);
\r
64 this.setLineSpacing (javax.swing.text.StyleConstants.getLineSpacing (attr));
\r
65 this.setFirstLineIndent (javax.swing.text.StyleConstants.getFirstLineIndent (attr));
\r
67 Clazz.defineMethod (c$, "getLayoutViewCount",
\r
69 return this.layoutPool.getViewCount ();
\r
71 Clazz.defineMethod (c$, "getLayoutView",
\r
73 return this.layoutPool.getView (index);
\r
75 Clazz.defineMethod (c$, "adjustRow",
\r
76 function (r, desiredSpan, x) {
\r
77 }, "javax.swing.text.ParagraphView.Row,~N,~N");
\r
78 Clazz.overrideMethod (c$, "getNextNorthSouthVisualPositionFrom",
\r
79 function (pos, b, a, direction, biasRet) {
\r
82 vIndex = (direction == 1) ? this.getViewCount () - 1 : 0;
\r
84 if (b === javax.swing.text.Position.Bias.Backward && pos > 0) {
\r
85 vIndex = this.getViewIndexAtPosition (pos - 1);
\r
87 vIndex = this.getViewIndexAtPosition (pos);
\r
88 }if (direction == 1) {
\r
92 } else if (++vIndex >= this.getViewCount ()) {
\r
94 }}var text = this.getContainer ();
\r
95 var c = text.getCaret ();
\r
97 magicPoint = (c != null) ? c.getMagicCaretPosition () : null;
\r
99 if (magicPoint == null) {
\r
102 posBounds = text.getUI ().modelToView (text, pos, b);
\r
104 if (Clazz.exceptionOf (exc, javax.swing.text.BadLocationException)) {
\r
110 if (posBounds == null) {
\r
113 x = posBounds.getBounds ().x;
\r
116 }return this.getClosestPositionTo (pos, b, a, direction, biasRet, vIndex, x);
\r
117 }, "~N,javax.swing.text.Position.Bias,java.awt.Shape,~N,~A");
\r
118 Clazz.defineMethod (c$, "getClosestPositionTo",
\r
119 function (pos, b, a, direction, biasRet, rowIndex, x) {
\r
120 var text = this.getContainer ();
\r
121 var doc = this.getDocument ();
\r
122 var aDoc = (Clazz.instanceOf (doc, javax.swing.text.AbstractDocument)) ? doc : null;
\r
123 var row = this.getView (rowIndex);
\r
125 biasRet[0] = javax.swing.text.Position.Bias.Forward;
\r
126 for (var vc = 0, numViews = row.getViewCount (); vc < numViews; vc++) {
\r
127 var v = row.getView (vc);
\r
128 var start = v.getStartOffset ();
\r
129 var ltr = (aDoc != null) ? aDoc.isLeftToRight (start, start + 1) : true;
\r
132 for (var end = v.getEndOffset (); lastPos < end; lastPos++) {
\r
133 var xx = text.modelToView (lastPos).getBounds ().x;
\r
135 while (++lastPos < end && text.modelToView (lastPos).getBounds ().x == xx) {
\r
141 for (lastPos = v.getEndOffset () - 1; lastPos >= start; lastPos--) {
\r
142 var xx = text.modelToView (lastPos).getBounds ().x;
\r
144 while (--lastPos >= start && text.modelToView (lastPos).getBounds ().x == xx) {
\r
150 if (lastPos == -1) {
\r
151 return this.getStartOffset ();
\r
153 }, "~N,javax.swing.text.Position.Bias,java.awt.Shape,~N,~A,~N,~N");
\r
154 Clazz.overrideMethod (c$, "flipEastAndWestAtEnds",
\r
155 function (position, bias) {
\r
156 var doc = this.getDocument ();
\r
157 if (Clazz.instanceOf (doc, javax.swing.text.AbstractDocument) && !(doc).isLeftToRight (this.getStartOffset (), this.getStartOffset () + 1)) {
\r
160 }, "~N,javax.swing.text.Position.Bias");
\r
161 Clazz.overrideMethod (c$, "getFlowSpan",
\r
163 var child = this.getView (index);
\r
165 if (Clazz.instanceOf (child, javax.swing.text.ParagraphView.Row)) {
\r
167 adjust = row.getLeftInset () + row.getRightInset ();
\r
168 }return (this.layoutSpan == 2147483647) ? this.layoutSpan : (this.layoutSpan - adjust);
\r
170 Clazz.overrideMethod (c$, "getFlowStart",
\r
172 var child = this.getView (index);
\r
174 if (Clazz.instanceOf (child, javax.swing.text.ParagraphView.Row)) {
\r
176 adjust = row.getLeftInset ();
\r
177 }return this.tabBase + adjust;
\r
179 Clazz.overrideMethod (c$, "createRow",
\r
181 return Clazz.innerTypeInstance (javax.swing.text.ParagraphView.Row, this, null, this.getElement ());
\r
183 Clazz.overrideMethod (c$, "nextTabStop",
\r
184 function (x, tabOffset) {
\r
185 if (this.justification != 0) return x + 10.0;
\r
187 var tabs = this.getTabSet ();
\r
188 if (tabs == null) {
\r
189 return (this.tabBase + ((Clazz.doubleToInt (Clazz.floatToInt (x) / 72) + 1) * 72));
\r
190 }var tab = tabs.getTabAfter (x + .01);
\r
192 return this.tabBase + x + 5.0;
\r
193 }var alignment = tab.getAlignment ();
\r
195 switch (alignment) {
\r
198 return this.tabBase + tab.getPosition ();
\r
200 return this.tabBase + tab.getPosition ();
\r
203 offset = this.findOffsetToCharactersInString (javax.swing.text.ParagraphView.tabChars, tabOffset + 1);
\r
206 offset = this.findOffsetToCharactersInString (javax.swing.text.ParagraphView.tabDecimalChars, tabOffset + 1);
\r
209 if (offset == -1) {
\r
210 offset = this.getEndOffset ();
\r
211 }var charsSize = this.getPartialSize (tabOffset + 1, offset);
\r
212 switch (alignment) {
\r
215 return this.tabBase + Math.max (x, tab.getPosition () - charsSize);
\r
217 return this.tabBase + Math.max (x, tab.getPosition () - charsSize / 2.0);
\r
221 Clazz.defineMethod (c$, "getTabSet",
\r
223 return javax.swing.text.StyleConstants.getTabSet (this.getElement ().getAttributes ());
\r
225 Clazz.defineMethod (c$, "getPartialSize",
\r
226 function (startOffset, endOffset) {
\r
229 var numViews = this.getViewCount ();
\r
233 viewIndex = this.getElement ().getElementIndex (startOffset);
\r
234 numViews = this.layoutPool.getViewCount ();
\r
235 while (startOffset < endOffset && viewIndex < numViews) {
\r
236 view = this.layoutPool.getView (viewIndex++);
\r
237 viewEnd = view.getEndOffset ();
\r
238 tempEnd = Math.min (endOffset, viewEnd);
\r
239 if (Clazz.instanceOf (view, javax.swing.text.TabableView)) size += (view).getPartialSpan (startOffset, tempEnd);
\r
240 else if (startOffset == view.getStartOffset () && tempEnd == view.getEndOffset ()) size += view.getPreferredSpan (0);
\r
242 startOffset = viewEnd;
\r
246 Clazz.defineMethod (c$, "findOffsetToCharactersInString",
\r
247 function (string, start) {
\r
248 var stringLength = string.length;
\r
249 var end = this.getEndOffset ();
\r
250 var seg = new javax.swing.text.Segment ();
\r
252 this.getDocument ().getText (start, end - start, seg);
\r
254 if (Clazz.exceptionOf (ble, javax.swing.text.BadLocationException)) {
\r
260 for (var counter = seg.offset, maxCounter = seg.offset + seg.count; counter < maxCounter; counter++) {
\r
261 var currentChar = seg.array[counter];
\r
262 for (var subCounter = 0; subCounter < stringLength; subCounter++) {
\r
263 if (currentChar == string[subCounter]) return counter - seg.offset + start;
\r
268 Clazz.defineMethod (c$, "getTabBase",
\r
270 return this.tabBase;
\r
272 Clazz.defineMethod (c$, "paint",
\r
274 var alloc = (Clazz.instanceOf (a, java.awt.Rectangle)) ? a : a.getBounds ();
\r
275 this.tabBase = alloc.x + this.getLeftInset ();
\r
276 Clazz.superCall (this, javax.swing.text.ParagraphView, "paint", [g, a]);
\r
277 if (this.firstLineIndent < 0) {
\r
278 var sh = this.getChildAllocation (0, a);
\r
279 if ((sh != null) && sh.intersects (alloc)) {
\r
280 var x = alloc.x + this.getLeftInset () + this.firstLineIndent;
\r
281 var y = alloc.y + this.getTopInset ();
\r
282 var clip = g.getClipBounds ();
\r
283 this.tempRect.x = x + this.getOffset (0, 0);
\r
284 this.tempRect.y = y + this.getOffset (1, 0);
\r
285 this.tempRect.width = this.getSpan (0, 0) - this.firstLineIndent;
\r
286 this.tempRect.height = this.getSpan (1, 0);
\r
287 if (this.tempRect.intersects (clip)) {
\r
288 this.tempRect.x = this.tempRect.x - this.firstLineIndent;
\r
289 this.paintChild (g, this.tempRect, 0);
\r
290 }}}}, "java.awt.Graphics,java.awt.Shape");
\r
291 Clazz.defineMethod (c$, "getAlignment",
\r
296 if (this.getViewCount () != 0) {
\r
297 var paragraphSpan = Clazz.floatToInt (this.getPreferredSpan (1));
\r
298 var v = this.getView (0);
\r
299 var rowSpan = Clazz.floatToInt (v.getPreferredSpan (1));
\r
300 a = (paragraphSpan != 0) ? ((Clazz.doubleToInt (rowSpan / 2))) / paragraphSpan : 0;
\r
305 throw new IllegalArgumentException ("Invalid axis: " + axis);
\r
308 Clazz.defineMethod (c$, "breakView",
\r
309 function (axis, len, a) {
\r
312 var alloc = a.getBounds ();
\r
313 this.setSize (alloc.width, alloc.height);
\r
316 }, "~N,~N,java.awt.Shape");
\r
317 Clazz.defineMethod (c$, "getBreakWeight",
\r
318 function (axis, len) {
\r
323 Clazz.defineMethod (c$, "changedUpdate",
\r
324 function (changes, a, f) {
\r
325 this.setPropertiesFromAttributes ();
\r
326 this.layoutChanged (0);
\r
327 this.layoutChanged (1);
\r
328 Clazz.superCall (this, javax.swing.text.ParagraphView, "changedUpdate", [changes, a, f]);
\r
329 }, "javax.swing.event.DocumentEvent,java.awt.Shape,javax.swing.text.ViewFactory");
\r
330 c$.$ParagraphView$Row$ = function () {
\r
331 Clazz.pu$h(self.c$);
\r
332 c$ = Clazz.decorateAsClass (function () {
\r
333 Clazz.prepareCallback (this, arguments);
\r
334 this.justificationData = null;
\r
335 Clazz.instantialize (this, arguments);
\r
336 }, javax.swing.text.ParagraphView, "Row", javax.swing.text.BoxView);
\r
337 Clazz.makeConstructor (c$,
\r
339 Clazz.superConstructor (this, javax.swing.text.ParagraphView.Row, [a, 0]);
\r
340 }, "javax.swing.text.Element");
\r
341 Clazz.overrideMethod (c$, "loadChildren",
\r
343 }, "javax.swing.text.ViewFactory");
\r
344 Clazz.defineMethod (c$, "getAttributes",
\r
346 var a = this.getParent ();
\r
347 return (a != null) ? a.getAttributes () : null;
\r
349 Clazz.defineMethod (c$, "getAlignment",
\r
352 switch (this.b$["javax.swing.text.ParagraphView"].justification) {
\r
361 if (this.isJustifiableDocument ()) {
\r
365 }return Clazz.superCall (this, javax.swing.text.ParagraphView.Row, "getAlignment", [a]);
\r
367 Clazz.defineMethod (c$, "modelToView",
\r
368 function (a, b, c) {
\r
369 var d = b.getBounds ();
\r
370 var e = this.getViewAtPosition (a, d);
\r
371 if ((e != null) && (!e.getElement ().isLeaf ())) {
\r
372 return Clazz.superCall (this, javax.swing.text.ParagraphView.Row, "modelToView", [a, b, c]);
\r
373 }d = b.getBounds ();
\r
376 var h = Clazz.superCall (this, javax.swing.text.ParagraphView.Row, "modelToView", [a, b, c]);
\r
377 d = h.getBounds ();
\r
381 }, "~N,java.awt.Shape,javax.swing.text.Position.Bias");
\r
382 Clazz.defineMethod (c$, "getStartOffset",
\r
384 var a = 2147483647;
\r
385 var b = this.getViewCount ();
\r
386 for (var c = 0; c < b; c++) {
\r
387 var d = this.getView (c);
\r
388 a = Math.min (a, d.getStartOffset ());
\r
392 Clazz.defineMethod (c$, "getEndOffset",
\r
395 var b = this.getViewCount ();
\r
396 for (var c = 0; c < b; c++) {
\r
397 var d = this.getView (c);
\r
398 a = Math.max (a, d.getEndOffset ());
\r
402 Clazz.overrideMethod (c$, "layoutMinorAxis",
\r
403 function (a, b, c, d) {
\r
404 this.baselineLayout (a, b, c, d);
\r
406 Clazz.overrideMethod (c$, "calculateMinorAxisRequirements",
\r
408 return this.baselineRequirements (a, b);
\r
409 }, "~N,javax.swing.SizeRequirements");
\r
410 Clazz.defineMethod (c$, "isLastRow",
\r
413 return ((a = this.getParent ()) == null || this === a.getView (a.getViewCount () - 1));
\r
415 Clazz.defineMethod (c$, "isBrokenRow",
\r
418 var b = this.getViewCount ();
\r
420 var c = this.getView (b - 1);
\r
421 if (c.getBreakWeight (0, 0, 0) >= 3000) {
\r
425 Clazz.defineMethod (c$, "isJustifiableDocument",
\r
427 return (!Boolean.TRUE.equals (this.getDocument ().getProperty ("i18n")));
\r
429 Clazz.defineMethod (c$, "isJustifyEnabled",
\r
431 var a = (this.b$["javax.swing.text.ParagraphView"].justification == 3);
\r
432 a = a && this.isJustifiableDocument ();
\r
433 a = a && !this.isLastRow ();
\r
434 a = a && !this.isBrokenRow ();
\r
437 Clazz.defineMethod (c$, "calculateMajorAxisRequirements",
\r
439 var c = this.justificationData;
\r
440 this.justificationData = null;
\r
441 var d = Clazz.superCall (this, javax.swing.text.ParagraphView.Row, "calculateMajorAxisRequirements", [a, b]);
\r
442 if (this.isJustifyEnabled ()) {
\r
443 this.justificationData = c;
\r
445 }, "~N,javax.swing.SizeRequirements");
\r
446 Clazz.defineMethod (c$, "layoutMajorAxis",
\r
447 function (a, b, c, d) {
\r
448 var e = this.justificationData;
\r
449 this.justificationData = null;
\r
450 Clazz.superCall (this, javax.swing.text.ParagraphView.Row, "layoutMajorAxis", [a, b, c, d]);
\r
451 if (!this.isJustifyEnabled ()) {
\r
454 for (var span, $span = 0, $$span = d; $span < $$span.length && ((span = $$span[$span]) || true); $span++) {
\r
463 var k = this.getStartOffset ();
\r
464 var l = this.getEndOffset ();
\r
465 var m = Clazz.newIntArray (l - k, 0);
\r
466 java.util.Arrays.fill (m, 0);
\r
467 for (var n = this.getViewCount () - 1; n >= 0; n--) {
\r
468 var o = this.getView (n);
\r
469 if (Clazz.instanceOf (o, javax.swing.text.GlyphView)) {
\r
470 var p = (o).getJustificationInfo (k);
\r
471 var q = o.getStartOffset ();
\r
473 for (var s = 0; s < p.spaceMap.length (); s++) {
\r
474 if (p.spaceMap.get (s)) {
\r
479 g += p.trailingSpaces;
\r
481 j += p.trailingSpaces;
\r
482 }}if (p.start >= 0) {
\r
485 }if (p.end >= 0 && i < 0) {
\r
487 }g += p.contentSpaces;
\r
488 j = p.leadingSpaces;
\r
495 var p = (g > 0) ? Clazz.doubleToInt (o / g) : 0;
\r
497 for (var r = h - k, s = o - p * g; s > 0; s -= m[r], r++) {
\r
500 if (p > 0 || q >= 0) {
\r
501 this.justificationData = (e != null) ? e : Clazz.newIntArray (4, 0);
\r
502 this.justificationData[0] = p;
\r
503 this.justificationData[1] = q;
\r
504 this.justificationData[2] = h - k;
\r
505 this.justificationData[3] = i - k;
\r
506 Clazz.superCall (this, javax.swing.text.ParagraphView.Row, "layoutMajorAxis", [a, b, c, d]);
\r
507 }}, "~N,~N,~A,~A");
\r
508 Clazz.defineMethod (c$, "getMaximumSpan",
\r
511 if (0 == a && this.isJustifyEnabled ()) {
\r
514 b = Clazz.superCall (this, javax.swing.text.ParagraphView.Row, "getMaximumSpan", [a]);
\r
517 Clazz.overrideMethod (c$, "getViewIndexAtPosition",
\r
519 if (a < this.getStartOffset () || a >= this.getEndOffset ()) return -1;
\r
520 for (var b = this.getViewCount () - 1; b >= 0; b--) {
\r
521 var c = this.getView (b);
\r
522 if (a >= c.getStartOffset () && a < c.getEndOffset ()) {
\r
527 Clazz.defineMethod (c$, "getLeftInset",
\r
531 if ((a = this.getParent ()) != null) {
\r
532 if (this === a.getView (0)) {
\r
533 b = this.b$["javax.swing.text.ParagraphView"].firstLineIndent;
\r
534 }}return (Clazz.superCall (this, javax.swing.text.ParagraphView.Row, "getLeftInset", []) + b);
\r
536 Clazz.defineMethod (c$, "getBottomInset",
\r
538 return Clazz.floatToShort (Clazz.superCall (this, javax.swing.text.ParagraphView.Row, "getBottomInset", []) + ((this.minorRequest != null) ? this.minorRequest.preferred : 0) * this.b$["javax.swing.text.ParagraphView"].lineSpacing);
\r
540 Clazz.defineStatics (c$,
\r
542 "SPACE_ADDON_LEFTOVER_END", 1,
\r
543 "START_JUSTIFIABLE", 2,
\r
544 "END_JUSTIFIABLE", 3);
\r
547 Clazz.defineStatics (c$,
\r
548 "i18nStrategy", null,
\r
550 "tabDecimalChars", null);
\r
552 javax.swing.text.ParagraphView.tabChars = Clazz.newCharArray (1, '\0');
\r
553 javax.swing.text.ParagraphView.tabChars[0] = '\t';
\r
554 javax.swing.text.ParagraphView.tabDecimalChars = Clazz.newCharArray (2, '\0');
\r
555 javax.swing.text.ParagraphView.tabDecimalChars[0] = '\t';
\r
556 javax.swing.text.ParagraphView.tabDecimalChars[1] = '.';
\r