Merge branch 'master' of https://source.jalview.org/git/jalviewjs.git
[jalviewjs.git] / site / j2s / javax / swing / text / GlyphView.js
index 004a879..3418d0d 100644 (file)
-Clazz.declarePackage ("javax.swing.text");\r
-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
-c$ = Clazz.decorateAsClass (function () {\r
-this.offset = 0;\r
-this.length = 0;\r
-this.impliedCR = false;\r
-this.skipWidth = false;\r
-this.expander = null;\r
-this.x = 0;\r
-this.painter = null;\r
-this.justificationInfo = null;\r
-Clazz.instantialize (this, arguments);\r
-}, javax.swing.text, "GlyphView", javax.swing.text.View, [javax.swing.text.TabableView, Cloneable]);\r
-Clazz.makeConstructor (c$, \r
-function (elem) {\r
-Clazz.superConstructor (this, javax.swing.text.GlyphView, [elem]);\r
-this.offset = 0;\r
-this.length = 0;\r
-var parent = elem.getParentElement ();\r
-var attr = elem.getAttributes ();\r
-this.impliedCR = (attr != null && attr.getAttribute ("CR") != null && parent != null && parent.getElementCount () > 1);\r
-this.skipWidth = elem.getName ().equals ("br");\r
-}, "javax.swing.text.Element");\r
-Clazz.defineMethod (c$, "clone", \r
-function () {\r
-var o;\r
-try {\r
-o = Clazz.superCall (this, javax.swing.text.GlyphView, "clone", []);\r
-} catch (cnse) {\r
-if (Clazz.exceptionOf (cnse, CloneNotSupportedException)) {\r
-o = null;\r
-} else {\r
-throw cnse;\r
-}\r
-}\r
-return o;\r
-});\r
-Clazz.defineMethod (c$, "getGlyphPainter", \r
-function () {\r
-return this.painter;\r
-});\r
-Clazz.defineMethod (c$, "setGlyphPainter", \r
-function (p) {\r
-this.painter = p;\r
-}, "javax.swing.text.GlyphView.GlyphPainter");\r
-Clazz.defineMethod (c$, "getText", \r
-function (p0, p1) {\r
-var text = javax.swing.text.SegmentCache.getSharedSegment ();\r
-try {\r
-var doc = this.getDocument ();\r
-doc.getText (p0, p1 - p0, text);\r
-} catch (bl) {\r
-if (Clazz.exceptionOf (bl, javax.swing.text.BadLocationException)) {\r
-throw  new javax.swing.text.StateInvariantError ("GlyphView: Stale view: " + bl);\r
-} else {\r
-throw bl;\r
-}\r
-}\r
-return text;\r
-}, "~N,~N");\r
-Clazz.defineMethod (c$, "getBackground", \r
-function () {\r
-var doc = this.getDocument ();\r
-if (Clazz.instanceOf (doc, javax.swing.text.StyledDocument)) {\r
-var attr = this.getAttributes ();\r
-if (attr.isDefined (javax.swing.text.StyleConstants.Background)) {\r
-return (doc).getBackground (attr);\r
-}}return null;\r
-});\r
-Clazz.defineMethod (c$, "getForeground", \r
-function () {\r
-var doc = this.getDocument ();\r
-if (Clazz.instanceOf (doc, javax.swing.text.StyledDocument)) {\r
-var attr = this.getAttributes ();\r
-return (doc).getForeground (attr);\r
-}var c = this.getContainer ();\r
-if (c != null) {\r
-return c.getForeground ();\r
-}return null;\r
-});\r
-Clazz.defineMethod (c$, "getFont", \r
-function () {\r
-var doc = this.getDocument ();\r
-if (Clazz.instanceOf (doc, javax.swing.text.StyledDocument)) {\r
-var attr = this.getAttributes ();\r
-return (doc).getFont (attr);\r
-}var c = this.getContainer ();\r
-if (c != null) {\r
-return c.getFont ();\r
-}return null;\r
-});\r
-Clazz.defineMethod (c$, "isUnderline", \r
-function () {\r
-var attr = this.getAttributes ();\r
-return javax.swing.text.StyleConstants.isUnderline (attr);\r
-});\r
-Clazz.defineMethod (c$, "isStrikeThrough", \r
-function () {\r
-var attr = this.getAttributes ();\r
-return javax.swing.text.StyleConstants.isStrikeThrough (attr);\r
-});\r
-Clazz.defineMethod (c$, "isSubscript", \r
-function () {\r
-var attr = this.getAttributes ();\r
-return javax.swing.text.StyleConstants.isSubscript (attr);\r
-});\r
-Clazz.defineMethod (c$, "isSuperscript", \r
-function () {\r
-var attr = this.getAttributes ();\r
-return javax.swing.text.StyleConstants.isSuperscript (attr);\r
-});\r
-Clazz.defineMethod (c$, "getTabExpander", \r
-function () {\r
-return this.expander;\r
-});\r
-Clazz.defineMethod (c$, "checkPainter", \r
-function () {\r
-if (this.painter == null) {\r
-if (javax.swing.text.GlyphView.defaultPainter == null) {\r
-var classname = "javax.swing.text.GlyphPainter1";\r
-try {\r
-var c;\r
-var loader = this.getClass ().getClassLoader ();\r
-if (loader != null) {\r
-c = loader.loadClass (classname);\r
-} else {\r
-c = Clazz._4Name (classname);\r
-}var o = c.newInstance ();\r
-if (Clazz.instanceOf (o, javax.swing.text.GlyphView.GlyphPainter)) {\r
-javax.swing.text.GlyphView.defaultPainter = o;\r
-}} catch (e) {\r
-throw  new javax.swing.text.StateInvariantError ("GlyphView: Can't load glyph painter: " + classname);\r
-}\r
-}this.setGlyphPainter (javax.swing.text.GlyphView.defaultPainter.getPainter (this, this.getStartOffset (), this.getEndOffset ()));\r
-}});\r
-Clazz.overrideMethod (c$, "getTabbedSpan", \r
-function (x, e) {\r
-this.checkPainter ();\r
-var old = this.expander;\r
-this.expander = e;\r
-if (this.expander !== old) {\r
-this.preferenceChanged (null, true, false);\r
-}this.x = Clazz.floatToInt (x);\r
-var p0 = this.getStartOffset ();\r
-var p1 = this.getEndOffset ();\r
-var width = this.painter.getSpan (this, p0, p1, this.expander, x);\r
-return width;\r
-}, "~N,javax.swing.text.TabExpander");\r
-Clazz.overrideMethod (c$, "getPartialSpan", \r
-function (p0, p1) {\r
-this.checkPainter ();\r
-var width = this.painter.getSpan (this, p0, p1, this.expander, this.x);\r
-return width;\r
-}, "~N,~N");\r
-Clazz.overrideMethod (c$, "getStartOffset", \r
-function () {\r
-var e = this.getElement ();\r
-return (this.length > 0) ? e.getStartOffset () + this.offset : e.getStartOffset ();\r
-});\r
-Clazz.defineMethod (c$, "getEndOffset", \r
-function () {\r
-var e = this.getElement ();\r
-return (this.length > 0) ? e.getStartOffset () + this.offset + this.length : e.getEndOffset ();\r
-});\r
-Clazz.overrideMethod (c$, "paint", \r
-function (g, a) {\r
-}, "java.awt.Graphics,java.awt.Shape");\r
-Clazz.defineMethod (c$, "paintTextUsingColor", \r
-function (g, a, c, p0, p1) {\r
-g.setColor (c);\r
-this.painter.paint (this, g, a, p0, p1);\r
-var underline = this.isUnderline ();\r
-var strike = this.isStrikeThrough ();\r
-if (underline || strike) {\r
-var alloc = (Clazz.instanceOf (a, java.awt.Rectangle)) ? a : a.getBounds ();\r
-var parent = this.getParent ();\r
-if ((parent != null) && (parent.getEndOffset () == p1)) {\r
-var s = this.getText (p0, p1);\r
-while (Character.isWhitespace (s.last ())) {\r
-p1 -= 1;\r
-s.count -= 1;\r
-}\r
-javax.swing.text.SegmentCache.releaseSharedSegment (s);\r
-}var x0 = alloc.x;\r
-var p = this.getStartOffset ();\r
-if (p != p0) {\r
-x0 += Clazz.floatToInt (this.painter.getSpan (this, p, p0, this.getTabExpander (), x0));\r
-}var x1 = x0 + Clazz.floatToInt (this.painter.getSpan (this, p0, p1, this.getTabExpander (), x0));\r
-var y = alloc.y + alloc.height - Clazz.floatToInt (this.painter.getDescent (this));\r
-if (underline) {\r
-var yTmp = y + 1;\r
-g.drawLine (x0, yTmp, x1, yTmp);\r
-}if (strike) {\r
-var yTmp = y - Clazz.floatToInt (this.painter.getAscent (this) * 0.3);\r
-g.drawLine (x0, yTmp, x1, yTmp);\r
-}}}, "java.awt.Graphics,java.awt.Shape,java.awt.Color,~N,~N");\r
-Clazz.overrideMethod (c$, "getPreferredSpan", \r
-function (axis) {\r
-if (this.impliedCR) {\r
-return 0;\r
-}this.checkPainter ();\r
-var p0 = this.getStartOffset ();\r
-var p1 = this.getEndOffset ();\r
-switch (axis) {\r
-case 0:\r
-if (this.skipWidth) {\r
-return 0;\r
-}return this.painter.getSpan (this, p0, p1, this.expander, this.x);\r
-case 1:\r
-var h = this.painter.getHeight (this);\r
-if (this.isSuperscript ()) {\r
-h += h / 3;\r
-}return h;\r
-default:\r
-throw  new IllegalArgumentException ("Invalid axis: " + axis);\r
-}\r
-}, "~N");\r
-Clazz.defineMethod (c$, "getAlignment", \r
-function (axis) {\r
-this.checkPainter ();\r
-if (axis == 1) {\r
-var sup = this.isSuperscript ();\r
-var sub = this.isSubscript ();\r
-var h = this.painter.getHeight (this);\r
-var d = this.painter.getDescent (this);\r
-var a = this.painter.getAscent (this);\r
-var align;\r
-if (sup) {\r
-align = 1.0;\r
-} else if (sub) {\r
-align = (h > 0) ? (h - (d + (a / 2))) / h : 0;\r
-} else {\r
-align = (h > 0) ? (h - d) / h : 0;\r
-}return align;\r
-}return Clazz.superCall (this, javax.swing.text.GlyphView, "getAlignment", [axis]);\r
-}, "~N");\r
-Clazz.defineMethod (c$, "modelToView", \r
-function (pos, a, b) {\r
-this.checkPainter ();\r
-return this.painter.modelToView (this, pos, b, a);\r
-}, "~N,java.awt.Shape,javax.swing.text.Position.Bias");\r
-Clazz.defineMethod (c$, "viewToModel", \r
-function (x, y, a, biasReturn) {\r
-this.checkPainter ();\r
-return this.painter.viewToModel (this, x, y, a, biasReturn);\r
-}, "~N,~N,java.awt.Shape,~A");\r
-Clazz.defineMethod (c$, "getBreakWeight", \r
-function (axis, pos, len) {\r
-if (axis == 0) {\r
-this.checkPainter ();\r
-var p0 = this.getStartOffset ();\r
-var p1 = this.painter.getBoundedPosition (this, p0, pos, len);\r
-if (p1 == p0) {\r
-return 0;\r
-}if (this.getBreakSpot (p0, p1) != -1) {\r
-return 2000;\r
-}if (p1 == this.getEndOffset ()) {\r
-return 1000;\r
-} else {\r
-return 999;\r
-}}return Clazz.superCall (this, javax.swing.text.GlyphView, "getBreakWeight", [axis, pos, len]);\r
-}, "~N,~N,~N");\r
-Clazz.overrideMethod (c$, "breakView", \r
-function (axis, p0, pos, len) {\r
-if (axis == 0) {\r
-this.checkPainter ();\r
-var p1 = this.painter.getBoundedPosition (this, p0, pos, len);\r
-var breakSpot = this.getBreakSpot (p0, p1);\r
-if (breakSpot != -1) {\r
-p1 = breakSpot;\r
-}if (p0 == this.getStartOffset () && p1 == this.getEndOffset ()) {\r
-return this;\r
-}var v = this.createFragment (p0, p1);\r
-v.x = Clazz.floatToInt (pos);\r
-return v;\r
-}return this;\r
-}, "~N,~N,~N,~N");\r
-Clazz.defineMethod (c$, "getBreakSpot", \r
- function (p0, p1) {\r
-var doc = this.getDocument ();\r
-if (doc != null && Boolean.TRUE.equals (doc.getProperty (javax.swing.text.AbstractDocument.MultiByteProperty))) {\r
-return this.getBreakSpotUseBreakIterator (p0, p1);\r
-}return this.getBreakSpotUseWhitespace (p0, p1);\r
-}, "~N,~N");\r
-Clazz.defineMethod (c$, "getBreakSpotUseWhitespace", \r
- function (p0, p1) {\r
-var s = this.getText (p0, p1);\r
-for (var ch = s.last (); ch != '\uffff'; ch = s.previous ()) {\r
-if (Character.isWhitespace (ch)) {\r
-javax.swing.text.SegmentCache.releaseSharedSegment (s);\r
-return s.getIndex () - s.getBeginIndex () + 1 + p0;\r
-}}\r
-javax.swing.text.SegmentCache.releaseSharedSegment (s);\r
-return -1;\r
-}, "~N,~N");\r
-Clazz.defineMethod (c$, "getBreakSpotUseBreakIterator", \r
- function (p0, p1) {\r
-return 0;\r
-}, "~N,~N");\r
-Clazz.overrideMethod (c$, "createFragment", \r
-function (p0, p1) {\r
-this.checkPainter ();\r
-var elem = this.getElement ();\r
-var v = this.clone ();\r
-v.offset = p0 - elem.getStartOffset ();\r
-v.length = p1 - p0;\r
-v.painter = this.painter.getPainter (v, p0, p1);\r
-v.justificationInfo = null;\r
-return v;\r
-}, "~N,~N");\r
-Clazz.overrideMethod (c$, "getNextVisualPositionFrom", \r
-function (pos, b, a, direction, biasRet) {\r
-return this.painter.getNextVisualPositionFrom (this, pos, b, a, direction, biasRet);\r
-}, "~N,javax.swing.text.Position.Bias,java.awt.Shape,~N,~A");\r
-Clazz.overrideMethod (c$, "insertUpdate", \r
-function (e, a, f) {\r
-this.justificationInfo = null;\r
-this.syncCR ();\r
-this.preferenceChanged (null, true, false);\r
-}, "javax.swing.event.DocumentEvent,java.awt.Shape,javax.swing.text.ViewFactory");\r
-Clazz.overrideMethod (c$, "removeUpdate", \r
-function (e, a, f) {\r
-this.justificationInfo = null;\r
-this.syncCR ();\r
-this.preferenceChanged (null, true, false);\r
-}, "javax.swing.event.DocumentEvent,java.awt.Shape,javax.swing.text.ViewFactory");\r
-Clazz.overrideMethod (c$, "changedUpdate", \r
-function (e, a, f) {\r
-this.syncCR ();\r
-this.preferenceChanged (null, true, true);\r
-}, "javax.swing.event.DocumentEvent,java.awt.Shape,javax.swing.text.ViewFactory");\r
-Clazz.defineMethod (c$, "syncCR", \r
- function () {\r
-if (this.impliedCR) {\r
-var parent = this.getElement ().getParentElement ();\r
-this.impliedCR = (parent != null && parent.getElementCount () > 1);\r
-}});\r
-Clazz.defineMethod (c$, "getJustificationInfo", \r
-function (rowStartOffset) {\r
-if (this.justificationInfo != null) {\r
-return this.justificationInfo;\r
-}var TRAILING = 0;\r
-var CONTENT = 1;\r
-var SPACES = 2;\r
-var startOffset = this.getStartOffset ();\r
-var endOffset = this.getEndOffset ();\r
-var segment = this.getText (startOffset, endOffset);\r
-var txtOffset = segment.offset;\r
-var txtEnd = segment.offset + segment.count - 1;\r
-var startContentPosition = txtEnd + 1;\r
-var endContentPosition = txtOffset - 1;\r
-var trailingSpaces = 0;\r
-var contentSpaces = 0;\r
-var leadingSpaces = 0;\r
-var hasTab = false;\r
-var spaceMap =  new java.util.BitSet (endOffset - startOffset + 1);\r
-for (var i = txtEnd, state = 0; i >= txtOffset; i--) {\r
-if (' ' == segment.array[i]) {\r
-spaceMap.set (i - txtOffset);\r
-if (state == 0) {\r
-trailingSpaces++;\r
-} else if (state == 1) {\r
-state = 2;\r
-leadingSpaces = 1;\r
-} else if (state == 2) {\r
-leadingSpaces++;\r
-}} else if ('\t' == segment.array[i]) {\r
-hasTab = true;\r
-break;\r
-} else {\r
-if (state == 0) {\r
-if ('\n' != segment.array[i] && '\r' != segment.array[i]) {\r
-state = 1;\r
-endContentPosition = i;\r
-}} else if (state == 1) {\r
-} else if (state == 2) {\r
-contentSpaces += leadingSpaces;\r
-leadingSpaces = 0;\r
-}startContentPosition = i;\r
-}}\r
-javax.swing.text.SegmentCache.releaseSharedSegment (segment);\r
-var startJustifiableContent = -1;\r
-if (startContentPosition < txtEnd) {\r
-startJustifiableContent = startContentPosition - txtOffset;\r
-}var endJustifiableContent = -1;\r
-if (endContentPosition > txtOffset) {\r
-endJustifiableContent = endContentPosition - txtOffset;\r
-}this.justificationInfo =  new javax.swing.text.GlyphView.JustificationInfo (startJustifiableContent, endJustifiableContent, leadingSpaces, contentSpaces, trailingSpaces, hasTab, spaceMap);\r
-return this.justificationInfo;\r
-}, "~N");\r
-Clazz.pu$h(self.c$);\r
-c$ = Clazz.decorateAsClass (function () {\r
-this.start = 0;\r
-this.end = 0;\r
-this.leadingSpaces = 0;\r
-this.contentSpaces = 0;\r
-this.trailingSpaces = 0;\r
-this.hasTab = false;\r
-this.spaceMap = null;\r
-Clazz.instantialize (this, arguments);\r
-}, javax.swing.text.GlyphView, "JustificationInfo");\r
-Clazz.makeConstructor (c$, \r
-function (a, b, c, d, e, f, g) {\r
-this.start = a;\r
-this.end = b;\r
-this.leadingSpaces = c;\r
-this.contentSpaces = d;\r
-this.trailingSpaces = e;\r
-this.hasTab = f;\r
-this.spaceMap = g;\r
-}, "~N,~N,~N,~N,~N,~B,java.util.BitSet");\r
-c$ = Clazz.p0p ();\r
-Clazz.pu$h(self.c$);\r
-c$ = Clazz.declareType (javax.swing.text.GlyphView, "GlyphPainter");\r
-Clazz.defineMethod (c$, "getPainter", \r
-function (a, b, c) {\r
-return this;\r
-}, "javax.swing.text.GlyphView,~N,~N");\r
-Clazz.defineMethod (c$, "getNextVisualPositionFrom", \r
-function (a, b, c, d, e, f) {\r
-var g = a.getStartOffset ();\r
-var h = a.getEndOffset ();\r
-switch (e) {\r
-case 1:\r
-case 5:\r
-if (b != -1) {\r
-return -1;\r
-}var i = a.getContainer ();\r
-if (Clazz.instanceOf (i, javax.swing.text.JTextComponent)) {\r
-var j = (i).getCaret ();\r
-var k;\r
-k = (j != null) ? j.getMagicCaretPosition () : null;\r
-if (k == null) {\r
-f[0] = javax.swing.text.Position.Bias.Forward;\r
-return g;\r
-}var l = a.viewToModel (k.x, 0, d, f);\r
-return l;\r
-}break;\r
-case 3:\r
-if (g == a.getDocument ().getLength ()) {\r
-if (b == -1) {\r
-f[0] = javax.swing.text.Position.Bias.Forward;\r
-return g;\r
-}return -1;\r
-}if (b == -1) {\r
-f[0] = javax.swing.text.Position.Bias.Forward;\r
-return g;\r
-}if (b == h) {\r
-return -1;\r
-}if (++b == h) {\r
-return -1;\r
-} else {\r
-f[0] = javax.swing.text.Position.Bias.Forward;\r
-}return b;\r
-case 7:\r
-if (g == a.getDocument ().getLength ()) {\r
-if (b == -1) {\r
-f[0] = javax.swing.text.Position.Bias.Forward;\r
-return g;\r
-}return -1;\r
-}if (b == -1) {\r
-f[0] = javax.swing.text.Position.Bias.Forward;\r
-return h - 1;\r
-}if (b == g) {\r
-return -1;\r
-}f[0] = javax.swing.text.Position.Bias.Forward;\r
-return (b - 1);\r
-default:\r
-throw  new IllegalArgumentException ("Bad direction: " + e);\r
-}\r
-return b;\r
-}, "javax.swing.text.GlyphView,~N,javax.swing.text.Position.Bias,java.awt.Shape,~N,~A");\r
-c$ = Clazz.p0p ();\r
-Clazz.defineStatics (c$,\r
-"IMPLIED_CR", "CR",\r
-"defaultPainter", null);\r
-});\r
+Clazz.declarePackage ("javax.swing.text");
+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 () {
+c$ = Clazz.decorateAsClass (function () {
+this.offset = 0;
+this.length = 0;
+this.impliedCR = false;
+this.skipWidth = false;
+this.expander = null;
+this.x = 0;
+this.painter = null;
+this.justificationInfo = null;
+Clazz.instantialize (this, arguments);
+}, javax.swing.text, "GlyphView", javax.swing.text.View, [javax.swing.text.TabableView, Cloneable]);
+Clazz.makeConstructor (c$, 
+function (elem) {
+Clazz.superConstructor (this, javax.swing.text.GlyphView, [elem]);
+this.offset = 0;
+this.length = 0;
+var parent = elem.getParentElement ();
+var attr = elem.getAttributes ();
+this.impliedCR = (attr != null && attr.getAttribute ("CR") != null && parent != null && parent.getElementCount () > 1);
+this.skipWidth = elem.getName ().equals ("br");
+}, "javax.swing.text.Element");
+Clazz.defineMethod (c$, "clone", 
+function () {
+var o;
+try {
+o = Clazz.superCall (this, javax.swing.text.GlyphView, "clone", []);
+} catch (cnse) {
+if (Clazz.exceptionOf (cnse, CloneNotSupportedException)) {
+o = null;
+} else {
+throw cnse;
+}
+}
+return o;
+});
+Clazz.defineMethod (c$, "getGlyphPainter", 
+function () {
+return this.painter;
+});
+Clazz.defineMethod (c$, "setGlyphPainter", 
+function (p) {
+this.painter = p;
+}, "javax.swing.text.GlyphView.GlyphPainter");
+Clazz.defineMethod (c$, "getText", 
+function (p0, p1) {
+var text = javax.swing.text.SegmentCache.getSharedSegment ();
+try {
+var doc = this.getDocument ();
+doc.getText (p0, p1 - p0, text);
+} catch (bl) {
+if (Clazz.exceptionOf (bl, javax.swing.text.BadLocationException)) {
+throw  new javax.swing.text.StateInvariantError ("GlyphView: Stale view: " + bl);
+} else {
+throw bl;
+}
+}
+return text;
+}, "~N,~N");
+Clazz.defineMethod (c$, "getBackground", 
+function () {
+var doc = this.getDocument ();
+if (Clazz.instanceOf (doc, javax.swing.text.StyledDocument)) {
+var attr = this.getAttributes ();
+if (attr.isDefined (javax.swing.text.StyleConstants.Background)) {
+return (doc).getBackground (attr);
+}}return null;
+});
+Clazz.defineMethod (c$, "getForeground", 
+function () {
+var doc = this.getDocument ();
+if (Clazz.instanceOf (doc, javax.swing.text.StyledDocument)) {
+var attr = this.getAttributes ();
+return (doc).getForeground (attr);
+}var c = this.getContainer ();
+if (c != null) {
+return c.getForeground ();
+}return null;
+});
+Clazz.defineMethod (c$, "getFont", 
+function () {
+var doc = this.getDocument ();
+if (Clazz.instanceOf (doc, javax.swing.text.StyledDocument)) {
+var attr = this.getAttributes ();
+return (doc).getFont (attr);
+}var c = this.getContainer ();
+if (c != null) {
+return c.getFont ();
+}return null;
+});
+Clazz.defineMethod (c$, "isUnderline", 
+function () {
+var attr = this.getAttributes ();
+return javax.swing.text.StyleConstants.isUnderline (attr);
+});
+Clazz.defineMethod (c$, "isStrikeThrough", 
+function () {
+var attr = this.getAttributes ();
+return javax.swing.text.StyleConstants.isStrikeThrough (attr);
+});
+Clazz.defineMethod (c$, "isSubscript", 
+function () {
+var attr = this.getAttributes ();
+return javax.swing.text.StyleConstants.isSubscript (attr);
+});
+Clazz.defineMethod (c$, "isSuperscript", 
+function () {
+var attr = this.getAttributes ();
+return javax.swing.text.StyleConstants.isSuperscript (attr);
+});
+Clazz.defineMethod (c$, "getTabExpander", 
+function () {
+return this.expander;
+});
+Clazz.defineMethod (c$, "checkPainter", 
+function () {
+if (this.painter == null) {
+if (javax.swing.text.GlyphView.defaultPainter == null) {
+var classname = "javax.swing.text.GlyphPainter1";
+try {
+var c;
+var loader = this.getClass ().getClassLoader ();
+if (loader != null) {
+c = loader.loadClass (classname);
+} else {
+c = Clazz._4Name (classname);
+}var o = c.newInstance ();
+if (Clazz.instanceOf (o, javax.swing.text.GlyphView.GlyphPainter)) {
+javax.swing.text.GlyphView.defaultPainter = o;
+}} catch (e) {
+throw  new javax.swing.text.StateInvariantError ("GlyphView: Can't load glyph painter: " + classname);
+}
+}this.setGlyphPainter (javax.swing.text.GlyphView.defaultPainter.getPainter (this, this.getStartOffset (), this.getEndOffset ()));
+}});
+Clazz.overrideMethod (c$, "getTabbedSpan", 
+function (x, e) {
+this.checkPainter ();
+var old = this.expander;
+this.expander = e;
+if (this.expander !== old) {
+this.preferenceChanged (null, true, false);
+}this.x = Clazz.floatToInt (x);
+var p0 = this.getStartOffset ();
+var p1 = this.getEndOffset ();
+var width = this.painter.getSpan (this, p0, p1, this.expander, x);
+return width;
+}, "~N,javax.swing.text.TabExpander");
+Clazz.overrideMethod (c$, "getPartialSpan", 
+function (p0, p1) {
+this.checkPainter ();
+var width = this.painter.getSpan (this, p0, p1, this.expander, this.x);
+return width;
+}, "~N,~N");
+Clazz.overrideMethod (c$, "getStartOffset", 
+function () {
+var e = this.getElement ();
+return (this.length > 0) ? e.getStartOffset () + this.offset : e.getStartOffset ();
+});
+Clazz.defineMethod (c$, "getEndOffset", 
+function () {
+var e = this.getElement ();
+return (this.length > 0) ? e.getStartOffset () + this.offset + this.length : e.getEndOffset ();
+});
+Clazz.overrideMethod (c$, "paint", 
+function (g, a) {
+}, "java.awt.Graphics,java.awt.Shape");
+Clazz.defineMethod (c$, "paintTextUsingColor", 
+function (g, a, c, p0, p1) {
+g.setColor (c);
+this.painter.paint (this, g, a, p0, p1);
+var underline = this.isUnderline ();
+var strike = this.isStrikeThrough ();
+if (underline || strike) {
+var alloc = (Clazz.instanceOf (a, java.awt.Rectangle)) ? a : a.getBounds ();
+var parent = this.getParent ();
+if ((parent != null) && (parent.getEndOffset () == p1)) {
+var s = this.getText (p0, p1);
+while (Character.isWhitespace (s.last ())) {
+p1 -= 1;
+s.count -= 1;
+}
+javax.swing.text.SegmentCache.releaseSharedSegment (s);
+}var x0 = alloc.x;
+var p = this.getStartOffset ();
+if (p != p0) {
+x0 += Clazz.floatToInt (this.painter.getSpan (this, p, p0, this.getTabExpander (), x0));
+}var x1 = x0 + Clazz.floatToInt (this.painter.getSpan (this, p0, p1, this.getTabExpander (), x0));
+var y = alloc.y + alloc.height - Clazz.floatToInt (this.painter.getDescent (this));
+if (underline) {
+var yTmp = y + 1;
+g.drawLine (x0, yTmp, x1, yTmp);
+}if (strike) {
+var yTmp = y - Clazz.floatToInt (this.painter.getAscent (this) * 0.3);
+g.drawLine (x0, yTmp, x1, yTmp);
+}}}, "java.awt.Graphics,java.awt.Shape,java.awt.Color,~N,~N");
+Clazz.overrideMethod (c$, "getPreferredSpan", 
+function (axis) {
+if (this.impliedCR) {
+return 0;
+}this.checkPainter ();
+var p0 = this.getStartOffset ();
+var p1 = this.getEndOffset ();
+switch (axis) {
+case 0:
+if (this.skipWidth) {
+return 0;
+}return this.painter.getSpan (this, p0, p1, this.expander, this.x);
+case 1:
+var h = this.painter.getHeight (this);
+if (this.isSuperscript ()) {
+h += h / 3;
+}return h;
+default:
+throw  new IllegalArgumentException ("Invalid axis: " + axis);
+}
+}, "~N");
+Clazz.defineMethod (c$, "getAlignment", 
+function (axis) {
+this.checkPainter ();
+if (axis == 1) {
+var sup = this.isSuperscript ();
+var sub = this.isSubscript ();
+var h = this.painter.getHeight (this);
+var d = this.painter.getDescent (this);
+var a = this.painter.getAscent (this);
+var align;
+if (sup) {
+align = 1.0;
+} else if (sub) {
+align = (h > 0) ? (h - (d + (a / 2))) / h : 0;
+} else {
+align = (h > 0) ? (h - d) / h : 0;
+}return align;
+}return Clazz.superCall (this, javax.swing.text.GlyphView, "getAlignment", [axis]);
+}, "~N");
+Clazz.defineMethod (c$, "modelToView", 
+function (pos, a, b) {
+this.checkPainter ();
+return this.painter.modelToView (this, pos, b, a);
+}, "~N,java.awt.Shape,javax.swing.text.Position.Bias");
+Clazz.defineMethod (c$, "viewToModel", 
+function (x, y, a, biasReturn) {
+this.checkPainter ();
+return this.painter.viewToModel (this, x, y, a, biasReturn);
+}, "~N,~N,java.awt.Shape,~A");
+Clazz.defineMethod (c$, "getBreakWeight", 
+function (axis, pos, len) {
+if (axis == 0) {
+this.checkPainter ();
+var p0 = this.getStartOffset ();
+var p1 = this.painter.getBoundedPosition (this, p0, pos, len);
+if (p1 == p0) {
+return 0;
+}if (this.getBreakSpot (p0, p1) != -1) {
+return 2000;
+}if (p1 == this.getEndOffset ()) {
+return 1000;
+} else {
+return 999;
+}}return Clazz.superCall (this, javax.swing.text.GlyphView, "getBreakWeight", [axis, pos, len]);
+}, "~N,~N,~N");
+Clazz.overrideMethod (c$, "breakView", 
+function (axis, p0, pos, len) {
+if (axis == 0) {
+this.checkPainter ();
+var p1 = this.painter.getBoundedPosition (this, p0, pos, len);
+var breakSpot = this.getBreakSpot (p0, p1);
+if (breakSpot != -1) {
+p1 = breakSpot;
+}if (p0 == this.getStartOffset () && p1 == this.getEndOffset ()) {
+return this;
+}var v = this.createFragment (p0, p1);
+v.x = Clazz.floatToInt (pos);
+return v;
+}return this;
+}, "~N,~N,~N,~N");
+Clazz.defineMethod (c$, "getBreakSpot", 
+ function (p0, p1) {
+var doc = this.getDocument ();
+if (doc != null && Boolean.TRUE.equals (doc.getProperty (javax.swing.text.AbstractDocument.MultiByteProperty))) {
+return this.getBreakSpotUseBreakIterator (p0, p1);
+}return this.getBreakSpotUseWhitespace (p0, p1);
+}, "~N,~N");
+Clazz.defineMethod (c$, "getBreakSpotUseWhitespace", 
+ function (p0, p1) {
+var s = this.getText (p0, p1);
+for (var ch = s.last (); ch != '\uffff'; ch = s.previous ()) {
+if (Character.isWhitespace (ch)) {
+javax.swing.text.SegmentCache.releaseSharedSegment (s);
+return s.getIndex () - s.getBeginIndex () + 1 + p0;
+}}
+javax.swing.text.SegmentCache.releaseSharedSegment (s);
+return -1;
+}, "~N,~N");
+Clazz.defineMethod (c$, "getBreakSpotUseBreakIterator", 
+ function (p0, p1) {
+return 0;
+}, "~N,~N");
+Clazz.overrideMethod (c$, "createFragment", 
+function (p0, p1) {
+this.checkPainter ();
+var elem = this.getElement ();
+var v = this.clone ();
+v.offset = p0 - elem.getStartOffset ();
+v.length = p1 - p0;
+v.painter = this.painter.getPainter (v, p0, p1);
+v.justificationInfo = null;
+return v;
+}, "~N,~N");
+Clazz.overrideMethod (c$, "getNextVisualPositionFrom", 
+function (pos, b, a, direction, biasRet) {
+return this.painter.getNextVisualPositionFrom (this, pos, b, a, direction, biasRet);
+}, "~N,javax.swing.text.Position.Bias,java.awt.Shape,~N,~A");
+Clazz.overrideMethod (c$, "insertUpdate", 
+function (e, a, f) {
+this.justificationInfo = null;
+this.syncCR ();
+this.preferenceChanged (null, true, false);
+}, "javax.swing.event.DocumentEvent,java.awt.Shape,javax.swing.text.ViewFactory");
+Clazz.overrideMethod (c$, "removeUpdate", 
+function (e, a, f) {
+this.justificationInfo = null;
+this.syncCR ();
+this.preferenceChanged (null, true, false);
+}, "javax.swing.event.DocumentEvent,java.awt.Shape,javax.swing.text.ViewFactory");
+Clazz.overrideMethod (c$, "changedUpdate", 
+function (e, a, f) {
+this.syncCR ();
+this.preferenceChanged (null, true, true);
+}, "javax.swing.event.DocumentEvent,java.awt.Shape,javax.swing.text.ViewFactory");
+Clazz.defineMethod (c$, "syncCR", 
+ function () {
+if (this.impliedCR) {
+var parent = this.getElement ().getParentElement ();
+this.impliedCR = (parent != null && parent.getElementCount () > 1);
+}});
+Clazz.defineMethod (c$, "getJustificationInfo", 
+function (rowStartOffset) {
+if (this.justificationInfo != null) {
+return this.justificationInfo;
+}var TRAILING = 0;
+var CONTENT = 1;
+var SPACES = 2;
+var startOffset = this.getStartOffset ();
+var endOffset = this.getEndOffset ();
+var segment = this.getText (startOffset, endOffset);
+var txtOffset = segment.offset;
+var txtEnd = segment.offset + segment.count - 1;
+var startContentPosition = txtEnd + 1;
+var endContentPosition = txtOffset - 1;
+var trailingSpaces = 0;
+var contentSpaces = 0;
+var leadingSpaces = 0;
+var hasTab = false;
+var spaceMap =  new java.util.BitSet (endOffset - startOffset + 1);
+for (var i = txtEnd, state = 0; i >= txtOffset; i--) {
+if (' ' == segment.array[i]) {
+spaceMap.set (i - txtOffset);
+if (state == 0) {
+trailingSpaces++;
+} else if (state == 1) {
+state = 2;
+leadingSpaces = 1;
+} else if (state == 2) {
+leadingSpaces++;
+}} else if ('\t' == segment.array[i]) {
+hasTab = true;
+break;
+} else {
+if (state == 0) {
+if ('\n' != segment.array[i] && '\r' != segment.array[i]) {
+state = 1;
+endContentPosition = i;
+}} else if (state == 1) {
+} else if (state == 2) {
+contentSpaces += leadingSpaces;
+leadingSpaces = 0;
+}startContentPosition = i;
+}}
+javax.swing.text.SegmentCache.releaseSharedSegment (segment);
+var startJustifiableContent = -1;
+if (startContentPosition < txtEnd) {
+startJustifiableContent = startContentPosition - txtOffset;
+}var endJustifiableContent = -1;
+if (endContentPosition > txtOffset) {
+endJustifiableContent = endContentPosition - txtOffset;
+}this.justificationInfo =  new javax.swing.text.GlyphView.JustificationInfo (startJustifiableContent, endJustifiableContent, leadingSpaces, contentSpaces, trailingSpaces, hasTab, spaceMap);
+return this.justificationInfo;
+}, "~N");
+Clazz.pu$h(self.c$);
+c$ = Clazz.decorateAsClass (function () {
+this.start = 0;
+this.end = 0;
+this.leadingSpaces = 0;
+this.contentSpaces = 0;
+this.trailingSpaces = 0;
+this.hasTab = false;
+this.spaceMap = null;
+Clazz.instantialize (this, arguments);
+}, javax.swing.text.GlyphView, "JustificationInfo");
+Clazz.makeConstructor (c$, 
+function (a, b, c, d, e, f, g) {
+this.start = a;
+this.end = b;
+this.leadingSpaces = c;
+this.contentSpaces = d;
+this.trailingSpaces = e;
+this.hasTab = f;
+this.spaceMap = g;
+}, "~N,~N,~N,~N,~N,~B,java.util.BitSet");
+c$ = Clazz.p0p ();
+Clazz.pu$h(self.c$);
+c$ = Clazz.declareType (javax.swing.text.GlyphView, "GlyphPainter");
+Clazz.defineMethod (c$, "getPainter", 
+function (a, b, c) {
+return this;
+}, "javax.swing.text.GlyphView,~N,~N");
+Clazz.defineMethod (c$, "getNextVisualPositionFrom", 
+function (a, b, c, d, e, f) {
+var g = a.getStartOffset ();
+var h = a.getEndOffset ();
+switch (e) {
+case 1:
+case 5:
+if (b != -1) {
+return -1;
+}var i = a.getContainer ();
+if (Clazz.instanceOf (i, javax.swing.text.JTextComponent)) {
+var j = (i).getCaret ();
+var k;
+k = (j != null) ? j.getMagicCaretPosition () : null;
+if (k == null) {
+f[0] = javax.swing.text.Position.Bias.Forward;
+return g;
+}var l = a.viewToModel (k.x, 0, d, f);
+return l;
+}break;
+case 3:
+if (g == a.getDocument ().getLength ()) {
+if (b == -1) {
+f[0] = javax.swing.text.Position.Bias.Forward;
+return g;
+}return -1;
+}if (b == -1) {
+f[0] = javax.swing.text.Position.Bias.Forward;
+return g;
+}if (b == h) {
+return -1;
+}if (++b == h) {
+return -1;
+} else {
+f[0] = javax.swing.text.Position.Bias.Forward;
+}return b;
+case 7:
+if (g == a.getDocument ().getLength ()) {
+if (b == -1) {
+f[0] = javax.swing.text.Position.Bias.Forward;
+return g;
+}return -1;
+}if (b == -1) {
+f[0] = javax.swing.text.Position.Bias.Forward;
+return h - 1;
+}if (b == g) {
+return -1;
+}f[0] = javax.swing.text.Position.Bias.Forward;
+return (b - 1);
+default:
+throw  new IllegalArgumentException ("Bad direction: " + e);
+}
+return b;
+}, "javax.swing.text.GlyphView,~N,javax.swing.text.Position.Bias,java.awt.Shape,~N,~A");
+c$ = Clazz.p0p ();
+Clazz.defineStatics (c$,
+"IMPLIED_CR", "CR",
+"defaultPainter", null);
+});