3418d0de7ec74fa862561985a952d25582830643
[jalviewjs.git] / site / j2s / javax / swing / text / GlyphView.js
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 () {
4 this.offset = 0;
5 this.length = 0;
6 this.impliedCR = false;
7 this.skipWidth = false;
8 this.expander = null;
9 this.x = 0;
10 this.painter = null;
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$, 
15 function (elem) {
16 Clazz.superConstructor (this, javax.swing.text.GlyphView, [elem]);
17 this.offset = 0;
18 this.length = 0;
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", 
25 function () {
26 var o;
27 try {
28 o = Clazz.superCall (this, javax.swing.text.GlyphView, "clone", []);
29 } catch (cnse) {
30 if (Clazz.exceptionOf (cnse, CloneNotSupportedException)) {
31 o = null;
32 } else {
33 throw cnse;
34 }
35 }
36 return o;
37 });
38 Clazz.defineMethod (c$, "getGlyphPainter", 
39 function () {
40 return this.painter;
41 });
42 Clazz.defineMethod (c$, "setGlyphPainter", 
43 function (p) {
44 this.painter = p;
45 }, "javax.swing.text.GlyphView.GlyphPainter");
46 Clazz.defineMethod (c$, "getText", 
47 function (p0, p1) {
48 var text = javax.swing.text.SegmentCache.getSharedSegment ();
49 try {
50 var doc = this.getDocument ();
51 doc.getText (p0, p1 - p0, text);
52 } catch (bl) {
53 if (Clazz.exceptionOf (bl, javax.swing.text.BadLocationException)) {
54 throw  new javax.swing.text.StateInvariantError ("GlyphView: Stale view: " + bl);
55 } else {
56 throw bl;
57 }
58 }
59 return text;
60 }, "~N,~N");
61 Clazz.defineMethod (c$, "getBackground", 
62 function () {
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);
68 }}return null;
69 });
70 Clazz.defineMethod (c$, "getForeground", 
71 function () {
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 ();
77 if (c != null) {
78 return c.getForeground ();
79 }return null;
80 });
81 Clazz.defineMethod (c$, "getFont", 
82 function () {
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 ();
88 if (c != null) {
89 return c.getFont ();
90 }return null;
91 });
92 Clazz.defineMethod (c$, "isUnderline", 
93 function () {
94 var attr = this.getAttributes ();
95 return javax.swing.text.StyleConstants.isUnderline (attr);
96 });
97 Clazz.defineMethod (c$, "isStrikeThrough", 
98 function () {
99 var attr = this.getAttributes ();
100 return javax.swing.text.StyleConstants.isStrikeThrough (attr);
101 });
102 Clazz.defineMethod (c$, "isSubscript", 
103 function () {
104 var attr = this.getAttributes ();
105 return javax.swing.text.StyleConstants.isSubscript (attr);
106 });
107 Clazz.defineMethod (c$, "isSuperscript", 
108 function () {
109 var attr = this.getAttributes ();
110 return javax.swing.text.StyleConstants.isSuperscript (attr);
111 });
112 Clazz.defineMethod (c$, "getTabExpander", 
113 function () {
114 return this.expander;
115 });
116 Clazz.defineMethod (c$, "checkPainter", 
117 function () {
118 if (this.painter == null) {
119 if (javax.swing.text.GlyphView.defaultPainter == null) {
120 var classname = "javax.swing.text.GlyphPainter1";
121 try {
122 var c;
123 var loader = this.getClass ().getClassLoader ();
124 if (loader != null) {
125 c = loader.loadClass (classname);
126 } else {
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;
131 }} catch (e) {
132 throw  new javax.swing.text.StateInvariantError ("GlyphView: Can't load glyph painter: " + classname);
133 }
134 }this.setGlyphPainter (javax.swing.text.GlyphView.defaultPainter.getPainter (this, this.getStartOffset (), this.getEndOffset ()));
135 }});
136 Clazz.overrideMethod (c$, "getTabbedSpan", 
137 function (x, e) {
138 this.checkPainter ();
139 var old = this.expander;
140 this.expander = e;
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);
147 return width;
148 }, "~N,javax.swing.text.TabExpander");
149 Clazz.overrideMethod (c$, "getPartialSpan", 
150 function (p0, p1) {
151 this.checkPainter ();
152 var width = this.painter.getSpan (this, p0, p1, this.expander, this.x);
153 return width;
154 }, "~N,~N");
155 Clazz.overrideMethod (c$, "getStartOffset", 
156 function () {
157 var e = this.getElement ();
158 return (this.length > 0) ? e.getStartOffset () + this.offset : e.getStartOffset ();
159 });
160 Clazz.defineMethod (c$, "getEndOffset", 
161 function () {
162 var e = this.getElement ();
163 return (this.length > 0) ? e.getStartOffset () + this.offset + this.length : e.getEndOffset ();
164 });
165 Clazz.overrideMethod (c$, "paint", 
166 function (g, a) {
167 }, "java.awt.Graphics,java.awt.Shape");
168 Clazz.defineMethod (c$, "paintTextUsingColor", 
169 function (g, a, c, p0, p1) {
170 g.setColor (c);
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 ())) {
180 p1 -= 1;
181 s.count -= 1;
182 }
183 javax.swing.text.SegmentCache.releaseSharedSegment (s);
184 }var x0 = alloc.x;
185 var p = this.getStartOffset ();
186 if (p != p0) {
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));
190 if (underline) {
191 var yTmp = y + 1;
192 g.drawLine (x0, yTmp, x1, yTmp);
193 }if (strike) {
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", 
198 function (axis) {
199 if (this.impliedCR) {
200 return 0;
201 }this.checkPainter ();
202 var p0 = this.getStartOffset ();
203 var p1 = this.getEndOffset ();
204 switch (axis) {
205 case 0:
206 if (this.skipWidth) {
207 return 0;
208 }return this.painter.getSpan (this, p0, p1, this.expander, this.x);
209 case 1:
210 var h = this.painter.getHeight (this);
211 if (this.isSuperscript ()) {
212 h += h / 3;
213 }return h;
214 default:
215 throw  new IllegalArgumentException ("Invalid axis: " + axis);
216 }
217 }, "~N");
218 Clazz.defineMethod (c$, "getAlignment", 
219 function (axis) {
220 this.checkPainter ();
221 if (axis == 1) {
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);
227 var align;
228 if (sup) {
229 align = 1.0;
230 } else if (sub) {
231 align = (h > 0) ? (h - (d + (a / 2))) / h : 0;
232 } else {
233 align = (h > 0) ? (h - d) / h : 0;
234 }return align;
235 }return Clazz.superCall (this, javax.swing.text.GlyphView, "getAlignment", [axis]);
236 }, "~N");
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) {
249 if (axis == 0) {
250 this.checkPainter ();
251 var p0 = this.getStartOffset ();
252 var p1 = this.painter.getBoundedPosition (this, p0, pos, len);
253 if (p1 == p0) {
254 return 0;
255 }if (this.getBreakSpot (p0, p1) != -1) {
256 return 2000;
257 }if (p1 == this.getEndOffset ()) {
258 return 1000;
259 } else {
260 return 999;
261 }}return Clazz.superCall (this, javax.swing.text.GlyphView, "getBreakWeight", [axis, pos, len]);
262 }, "~N,~N,~N");
263 Clazz.overrideMethod (c$, "breakView", 
264 function (axis, p0, pos, len) {
265 if (axis == 0) {
266 this.checkPainter ();
267 var p1 = this.painter.getBoundedPosition (this, p0, pos, len);
268 var breakSpot = this.getBreakSpot (p0, p1);
269 if (breakSpot != -1) {
270 p1 = breakSpot;
271 }if (p0 == this.getStartOffset () && p1 == this.getEndOffset ()) {
272 return this;
273 }var v = this.createFragment (p0, p1);
274 v.x = Clazz.floatToInt (pos);
275 return v;
276 }return this;
277 }, "~N,~N,~N,~N");
278 Clazz.defineMethod (c$, "getBreakSpot", 
279  function (p0, p1) {
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);
284 }, "~N,~N");
285 Clazz.defineMethod (c$, "getBreakSpotUseWhitespace", 
286  function (p0, p1) {
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;
292 }}
293 javax.swing.text.SegmentCache.releaseSharedSegment (s);
294 return -1;
295 }, "~N,~N");
296 Clazz.defineMethod (c$, "getBreakSpotUseBreakIterator", 
297  function (p0, p1) {
298 return 0;
299 }, "~N,~N");
300 Clazz.overrideMethod (c$, "createFragment", 
301 function (p0, p1) {
302 this.checkPainter ();
303 var elem = this.getElement ();
304 var v = this.clone ();
305 v.offset = p0 - elem.getStartOffset ();
306 v.length = p1 - p0;
307 v.painter = this.painter.getPainter (v, p0, p1);
308 v.justificationInfo = null;
309 return v;
310 }, "~N,~N");
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", 
316 function (e, a, f) {
317 this.justificationInfo = null;
318 this.syncCR ();
319 this.preferenceChanged (null, true, false);
320 }, "javax.swing.event.DocumentEvent,java.awt.Shape,javax.swing.text.ViewFactory");
321 Clazz.overrideMethod (c$, "removeUpdate", 
322 function (e, a, f) {
323 this.justificationInfo = null;
324 this.syncCR ();
325 this.preferenceChanged (null, true, false);
326 }, "javax.swing.event.DocumentEvent,java.awt.Shape,javax.swing.text.ViewFactory");
327 Clazz.overrideMethod (c$, "changedUpdate", 
328 function (e, a, f) {
329 this.syncCR ();
330 this.preferenceChanged (null, true, true);
331 }, "javax.swing.event.DocumentEvent,java.awt.Shape,javax.swing.text.ViewFactory");
332 Clazz.defineMethod (c$, "syncCR", 
333  function () {
334 if (this.impliedCR) {
335 var parent = this.getElement ().getParentElement ();
336 this.impliedCR = (parent != null && parent.getElementCount () > 1);
337 }});
338 Clazz.defineMethod (c$, "getJustificationInfo", 
339 function (rowStartOffset) {
340 if (this.justificationInfo != null) {
341 return this.justificationInfo;
342 }var TRAILING = 0;
343 var CONTENT = 1;
344 var SPACES = 2;
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;
355 var hasTab = false;
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);
360 if (state == 0) {
361 trailingSpaces++;
362 } else if (state == 1) {
363 state = 2;
364 leadingSpaces = 1;
365 } else if (state == 2) {
366 leadingSpaces++;
367 }} else if ('\t' == segment.array[i]) {
368 hasTab = true;
369 break;
370 } else {
371 if (state == 0) {
372 if ('\n' != segment.array[i] && '\r' != segment.array[i]) {
373 state = 1;
374 endContentPosition = i;
375 }} else if (state == 1) {
376 } else if (state == 2) {
377 contentSpaces += leadingSpaces;
378 leadingSpaces = 0;
379 }startContentPosition = i;
380 }}
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;
390 }, "~N");
391 Clazz.pu$h(self.c$);
392 c$ = Clazz.decorateAsClass (function () {
393 this.start = 0;
394 this.end = 0;
395 this.leadingSpaces = 0;
396 this.contentSpaces = 0;
397 this.trailingSpaces = 0;
398 this.hasTab = false;
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) {
404 this.start = a;
405 this.end = b;
406 this.leadingSpaces = c;
407 this.contentSpaces = d;
408 this.trailingSpaces = e;
409 this.hasTab = f;
410 this.spaceMap = g;
411 }, "~N,~N,~N,~N,~N,~B,java.util.BitSet");
412 c$ = Clazz.p0p ();
413 Clazz.pu$h(self.c$);
414 c$ = Clazz.declareType (javax.swing.text.GlyphView, "GlyphPainter");
415 Clazz.defineMethod (c$, "getPainter", 
416 function (a, b, c) {
417 return this;
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 ();
423 switch (e) {
424 case 1:
425 case 5:
426 if (b != -1) {
427 return -1;
428 }var i = a.getContainer ();
429 if (Clazz.instanceOf (i, javax.swing.text.JTextComponent)) {
430 var j = (i).getCaret ();
431 var k;
432 k = (j != null) ? j.getMagicCaretPosition () : null;
433 if (k == null) {
434 f[0] = javax.swing.text.Position.Bias.Forward;
435 return g;
436 }var l = a.viewToModel (k.x, 0, d, f);
437 return l;
438 }break;
439 case 3:
440 if (g == a.getDocument ().getLength ()) {
441 if (b == -1) {
442 f[0] = javax.swing.text.Position.Bias.Forward;
443 return g;
444 }return -1;
445 }if (b == -1) {
446 f[0] = javax.swing.text.Position.Bias.Forward;
447 return g;
448 }if (b == h) {
449 return -1;
450 }if (++b == h) {
451 return -1;
452 } else {
453 f[0] = javax.swing.text.Position.Bias.Forward;
454 }return b;
455 case 7:
456 if (g == a.getDocument ().getLength ()) {
457 if (b == -1) {
458 f[0] = javax.swing.text.Position.Bias.Forward;
459 return g;
460 }return -1;
461 }if (b == -1) {
462 f[0] = javax.swing.text.Position.Bias.Forward;
463 return h - 1;
464 }if (b == g) {
465 return -1;
466 }f[0] = javax.swing.text.Position.Bias.Forward;
467 return (b - 1);
468 default:
469 throw  new IllegalArgumentException ("Bad direction: " + e);
470 }
471 return b;
472 }, "javax.swing.text.GlyphView,~N,javax.swing.text.Position.Bias,java.awt.Shape,~N,~A");
473 c$ = Clazz.p0p ();
474 Clazz.defineStatics (c$,
475 "IMPLIED_CR", "CR",
476 "defaultPainter", null);
477 });