1 Clazz.declarePackage ("javax.swing.text");
\r
2 Clazz.load (null, "javax.swing.text.Utilities", ["javax.swing.JComponent", "javax.swing.text.CompositeView", "$.Position", "$.StyleConstants", "$.StyledDocument"], function () {
\r
3 c$ = Clazz.declareType (javax.swing.text, "Utilities");
\r
4 c$.getJComponent = Clazz.defineMethod (c$, "getJComponent",
\r
7 var component = view.getContainer ();
\r
8 if (Clazz.instanceOf (component, javax.swing.JComponent)) {
\r
11 }, "javax.swing.text.View");
\r
12 c$.getTabbedTextWidth = Clazz.defineMethod (c$, "getTabbedTextWidth",
\r
13 function (s, metrics, x, e, startOffset) {
\r
14 return javax.swing.text.Utilities.getTabbedTextWidth (null, s, metrics, x, e, startOffset, null);
\r
15 }, "javax.swing.text.Segment,java.awt.FontMetrics,~N,javax.swing.text.TabExpander,~N");
\r
16 c$.getTabbedTextWidth = Clazz.defineMethod (c$, "getTabbedTextWidth",
\r
17 function (view, s, metrics, x, e, startOffset, justificationData) {
\r
20 var txtOffset = s.offset;
\r
21 var n = s.offset + s.count;
\r
24 var spaceAddonLeftoverEnd = -1;
\r
25 var startJustifiableContent = 0;
\r
26 var endJustifiableContent = 0;
\r
27 if (justificationData != null) {
\r
28 var offset = -startOffset + txtOffset;
\r
30 if (view != null && (parent = view.getParent ()) != null) {
\r
31 offset += parent.getStartOffset ();
\r
32 }spaceAddon = justificationData[0];
\r
33 spaceAddonLeftoverEnd = justificationData[1] + offset;
\r
34 startJustifiableContent = justificationData[2] + offset;
\r
35 endJustifiableContent = justificationData[3] + offset;
\r
36 }for (var i = txtOffset; i < n; i++) {
\r
37 if (txt[i] == '\t' || ((spaceAddon != 0 || i <= spaceAddonLeftoverEnd) && (txt[i] == ' ') && startJustifiableContent <= i && i <= endJustifiableContent)) {
\r
38 nextX += metrics.charsWidth (txt, i - charCount, charCount);
\r
40 if (txt[i] == '\t') {
\r
42 nextX = Clazz.floatToInt (e.nextTabStop (nextX, startOffset + i - txtOffset));
\r
44 nextX += metrics.charWidth (' ');
\r
45 }} else if (txt[i] == ' ') {
\r
46 nextX += metrics.charWidth (' ') + spaceAddon;
\r
47 if (i <= spaceAddonLeftoverEnd) {
\r
49 }}} else if (txt[i] == '\n') {
\r
50 nextX += metrics.charsWidth (txt, i - charCount, charCount);
\r
55 nextX += metrics.charsWidth (txt, n - charCount, charCount);
\r
57 }, "javax.swing.text.View,javax.swing.text.Segment,java.awt.FontMetrics,~N,javax.swing.text.TabExpander,~N,~A");
\r
58 c$.getTabbedTextOffset = Clazz.defineMethod (c$, "getTabbedTextOffset",
\r
59 function (s, metrics, x0, x, e, startOffset) {
\r
60 return javax.swing.text.Utilities.getTabbedTextOffset (s, metrics, x0, x, e, startOffset, true);
\r
61 }, "javax.swing.text.Segment,java.awt.FontMetrics,~N,~N,javax.swing.text.TabExpander,~N");
\r
62 c$.getTabbedTextOffset = Clazz.defineMethod (c$, "getTabbedTextOffset",
\r
63 function (view, s, metrics, x0, x, e, startOffset, justificationData) {
\r
64 return javax.swing.text.Utilities.getTabbedTextOffset (view, s, metrics, x0, x, e, startOffset, true, justificationData);
\r
65 }, "javax.swing.text.View,javax.swing.text.Segment,java.awt.FontMetrics,~N,~N,javax.swing.text.TabExpander,~N,~A");
\r
66 c$.getTabbedTextOffset = Clazz.defineMethod (c$, "getTabbedTextOffset",
\r
67 function (s, metrics, x0, x, e, startOffset, round) {
\r
68 return javax.swing.text.Utilities.getTabbedTextOffset (null, s, metrics, x0, x, e, startOffset, round, null);
\r
69 }, "javax.swing.text.Segment,java.awt.FontMetrics,~N,~N,javax.swing.text.TabExpander,~N,~B");
\r
70 c$.getTabbedTextOffset = Clazz.defineMethod (c$, "getTabbedTextOffset",
\r
71 function (view, s, metrics, x0, x, e, startOffset, round, justificationData) {
\r
77 var txtOffset = s.offset;
\r
78 var txtCount = s.count;
\r
80 var spaceAddonLeftoverEnd = -1;
\r
81 var startJustifiableContent = 0;
\r
82 var endJustifiableContent = 0;
\r
83 if (justificationData != null) {
\r
84 var offset = -startOffset + txtOffset;
\r
86 if (view != null && (parent = view.getParent ()) != null) {
\r
87 offset += parent.getStartOffset ();
\r
88 }spaceAddon = justificationData[0];
\r
89 spaceAddonLeftoverEnd = justificationData[1] + offset;
\r
90 startJustifiableContent = justificationData[2] + offset;
\r
91 endJustifiableContent = justificationData[3] + offset;
\r
92 }var n = s.offset + s.count;
\r
93 for (var i = s.offset; i < n; i++) {
\r
94 if (txt[i] == '\t' || ((spaceAddon != 0 || i <= spaceAddonLeftoverEnd) && (txt[i] == ' ') && startJustifiableContent <= i && i <= endJustifiableContent)) {
\r
95 if (txt[i] == '\t') {
\r
97 nextX = Clazz.floatToInt (e.nextTabStop (nextX, startOffset + i - txtOffset));
\r
99 nextX += metrics.charWidth (' ');
\r
100 }} else if (txt[i] == ' ') {
\r
101 nextX += metrics.charWidth (' ') + spaceAddon;
\r
102 if (i <= spaceAddonLeftoverEnd) {
\r
105 nextX += metrics.charWidth (txt[i]);
\r
106 }if ((x >= currX) && (x < nextX)) {
\r
107 if ((round == false) || ((x - currX) < (nextX - x))) {
\r
108 return i - txtOffset;
\r
110 return i + 1 - txtOffset;
\r
114 }, "javax.swing.text.View,javax.swing.text.Segment,java.awt.FontMetrics,~N,~N,javax.swing.text.TabExpander,~N,~B,~A");
\r
115 c$.getBreakLocation = Clazz.defineMethod (c$, "getBreakLocation",
\r
116 function (s, metrics, x0, x, e, startOffset) {
\r
118 }, "javax.swing.text.Segment,java.awt.FontMetrics,~N,~N,javax.swing.text.TabExpander,~N");
\r
119 c$.getRowStart = Clazz.defineMethod (c$, "getRowStart",
\r
120 function (c, offs) {
\r
121 var r = c.modelToView (offs);
\r
124 }var lastOffs = offs;
\r
126 while ((r != null) && (y == r.y)) {
\r
127 if (r.height != 0) {
\r
130 r = (lastOffs >= 0) ? c.modelToView (lastOffs) : null;
\r
133 }, "javax.swing.text.JTextComponent,~N");
\r
134 c$.getRowEnd = Clazz.defineMethod (c$, "getRowEnd",
\r
135 function (c, offs) {
\r
136 var r = c.modelToView (offs);
\r
139 }var n = c.getDocument ().getLength ();
\r
140 var lastOffs = offs;
\r
142 while ((r != null) && (y == r.y)) {
\r
143 if (r.height != 0) {
\r
146 r = (lastOffs <= n) ? c.modelToView (lastOffs) : null;
\r
149 }, "javax.swing.text.JTextComponent,~N");
\r
150 c$.getPositionAbove = Clazz.defineMethod (c$, "getPositionAbove",
\r
151 function (c, offs, x) {
\r
152 var lastOffs = javax.swing.text.Utilities.getRowStart (c, offs) - 1;
\r
153 if (lastOffs < 0) {
\r
155 }var bestSpan = 2147483647;
\r
158 if (lastOffs >= 0) {
\r
159 r = c.modelToView (lastOffs);
\r
161 }while ((r != null) && (y == r.y)) {
\r
162 var span = Math.abs (r.x - x);
\r
163 if (span < bestSpan) {
\r
167 r = (lastOffs >= 0) ? c.modelToView (lastOffs) : null;
\r
170 }, "javax.swing.text.JTextComponent,~N,~N");
\r
171 c$.getPositionBelow = Clazz.defineMethod (c$, "getPositionBelow",
\r
172 function (c, offs, x) {
\r
173 var lastOffs = javax.swing.text.Utilities.getRowEnd (c, offs) + 1;
\r
174 if (lastOffs <= 0) {
\r
176 }var bestSpan = 2147483647;
\r
177 var n = c.getDocument ().getLength ();
\r
180 if (lastOffs <= n) {
\r
181 r = c.modelToView (lastOffs);
\r
183 }while ((r != null) && (y == r.y)) {
\r
184 var span = Math.abs (x - r.x);
\r
185 if (span < bestSpan) {
\r
189 r = (lastOffs <= n) ? c.modelToView (lastOffs) : null;
\r
192 }, "javax.swing.text.JTextComponent,~N,~N");
\r
193 c$.getWordStart = Clazz.defineMethod (c$, "getWordStart",
\r
194 function (c, offs) {
\r
196 }, "javax.swing.text.JTextComponent,~N");
\r
197 c$.getWordEnd = Clazz.defineMethod (c$, "getWordEnd",
\r
198 function (c, offs) {
\r
200 }, "javax.swing.text.JTextComponent,~N");
\r
201 c$.getNextWord = Clazz.defineMethod (c$, "getNextWord",
\r
202 function (c, offs) {
\r
204 var line = javax.swing.text.Utilities.getParagraphElement (c, offs);
\r
205 for (nextWord = javax.swing.text.Utilities.getNextWordInParagraph (c, line, offs, false); nextWord == -1; nextWord = javax.swing.text.Utilities.getNextWordInParagraph (c, line, offs, true)) {
\r
206 offs = line.getEndOffset ();
\r
207 line = javax.swing.text.Utilities.getParagraphElement (c, offs);
\r
210 }, "javax.swing.text.JTextComponent,~N");
\r
211 c$.getNextWordInParagraph = Clazz.defineMethod (c$, "getNextWordInParagraph",
\r
212 function (c, line, offs, first) {
\r
214 }, "javax.swing.text.JTextComponent,javax.swing.text.Element,~N,~B");
\r
215 c$.getPreviousWord = Clazz.defineMethod (c$, "getPreviousWord",
\r
216 function (c, offs) {
\r
218 var line = javax.swing.text.Utilities.getParagraphElement (c, offs);
\r
219 for (prevWord = javax.swing.text.Utilities.getPrevWordInParagraph (c, line, offs); prevWord == -1; prevWord = javax.swing.text.Utilities.getPrevWordInParagraph (c, line, offs)) {
\r
220 offs = line.getStartOffset () - 1;
\r
221 line = javax.swing.text.Utilities.getParagraphElement (c, offs);
\r
224 }, "javax.swing.text.JTextComponent,~N");
\r
225 c$.getPrevWordInParagraph = Clazz.defineMethod (c$, "getPrevWordInParagraph",
\r
226 function (c, line, offs) {
\r
228 }, "javax.swing.text.JTextComponent,javax.swing.text.Element,~N");
\r
229 c$.getParagraphElement = Clazz.defineMethod (c$, "getParagraphElement",
\r
230 function (c, offs) {
\r
231 var doc = c.getDocument ();
\r
232 if (Clazz.instanceOf (doc, javax.swing.text.StyledDocument)) {
\r
233 return (doc).getParagraphElement (offs);
\r
234 }var map = doc.getDefaultRootElement ();
\r
235 var index = map.getElementIndex (offs);
\r
236 var paragraph = map.getElement (index);
\r
237 if ((offs >= paragraph.getStartOffset ()) && (offs < paragraph.getEndOffset ())) {
\r
240 }, "javax.swing.text.JTextComponent,~N");
\r
241 c$.isComposedTextElement = Clazz.defineMethod (c$, "isComposedTextElement",
\r
242 function (doc, offset) {
\r
243 var elem = doc.getDefaultRootElement ();
\r
244 while (!elem.isLeaf ()) {
\r
245 elem = elem.getElement (elem.getElementIndex (offset));
\r
247 return javax.swing.text.Utilities.isComposedTextElement (elem);
\r
248 }, "javax.swing.text.Document,~N");
\r
249 c$.isComposedTextElement = Clazz.defineMethod (c$, "isComposedTextElement",
\r
251 var as = elem.getAttributes ();
\r
252 return javax.swing.text.Utilities.isComposedTextAttributeDefined (as);
\r
253 }, "javax.swing.text.Element");
\r
254 c$.isComposedTextAttributeDefined = Clazz.defineMethod (c$, "isComposedTextAttributeDefined",
\r
256 return ((as != null) && (as.isDefined (javax.swing.text.StyleConstants.ComposedTextAttribute)));
\r
257 }, "javax.swing.text.AttributeSet");
\r
258 c$.isLeftToRight = Clazz.defineMethod (c$, "isLeftToRight",
\r
260 return c.getComponentOrientation ().isLeftToRight ();
\r
261 }, "java.awt.Component");
\r
262 c$.getNextVisualPositionFrom = Clazz.defineMethod (c$, "getNextVisualPositionFrom",
\r
263 function (v, pos, b, alloc, direction, biasRet) {
\r
264 if (v.getViewCount () == 0) {
\r
266 }var top = (direction == 1 || direction == 7);
\r
269 var childIndex = (top) ? v.getViewCount () - 1 : 0;
\r
270 var child = v.getView (childIndex);
\r
271 var childBounds = v.getChildAllocation (childIndex, alloc);
\r
272 retValue = child.getNextVisualPositionFrom (pos, b, childBounds, direction, biasRet);
\r
273 if (retValue == -1 && !top && v.getViewCount () > 1) {
\r
274 child = v.getView (1);
\r
275 childBounds = v.getChildAllocation (1, alloc);
\r
276 retValue = child.getNextVisualPositionFrom (-1, biasRet[0], childBounds, direction, biasRet);
\r
278 var increment = (top) ? -1 : 1;
\r
280 if (b === javax.swing.text.Position.Bias.Backward && pos > 0) {
\r
281 childIndex = v.getViewIndex (pos - 1, javax.swing.text.Position.Bias.Forward);
\r
283 childIndex = v.getViewIndex (pos, javax.swing.text.Position.Bias.Forward);
\r
284 }var child = v.getView (childIndex);
\r
285 var childBounds = v.getChildAllocation (childIndex, alloc);
\r
286 retValue = child.getNextVisualPositionFrom (pos, b, childBounds, direction, biasRet);
\r
287 if ((direction == 3 || direction == 7) && (Clazz.instanceOf (v, javax.swing.text.CompositeView)) && (v).flipEastAndWestAtEnds (pos, b)) {
\r
289 }childIndex += increment;
\r
290 if (retValue == -1 && childIndex >= 0 && childIndex < v.getViewCount ()) {
\r
291 child = v.getView (childIndex);
\r
292 childBounds = v.getChildAllocation (childIndex, alloc);
\r
293 retValue = child.getNextVisualPositionFrom (-1, b, childBounds, direction, biasRet);
\r
294 if (retValue == pos && biasRet[0] !== b) {
\r
295 return javax.swing.text.Utilities.getNextVisualPositionFrom (v, pos, biasRet[0], alloc, direction, biasRet);
\r
296 }} else if (retValue != -1 && biasRet[0] !== b && ((increment == 1 && child.getEndOffset () == retValue) || (increment == -1 && child.getStartOffset () == retValue)) && childIndex >= 0 && childIndex < v.getViewCount ()) {
\r
297 child = v.getView (childIndex);
\r
298 childBounds = v.getChildAllocation (childIndex, alloc);
\r
299 var originalBias = biasRet[0];
\r
300 var nextPos = child.getNextVisualPositionFrom (-1, b, childBounds, direction, biasRet);
\r
301 if (biasRet[0] === b) {
\r
302 retValue = nextPos;
\r
304 biasRet[0] = originalBias;
\r
305 }}}return retValue;
\r
306 }, "javax.swing.text.View,~N,javax.swing.text.Position.Bias,java.awt.Shape,~N,~A");
\r