eac11a951733373e640d05a7d21deda74a7a0dea
[jalviewjs.git] / site / swingjs / j2s / javax / swing / text / Utilities.js
1 Clazz.declarePackage ("javax.swing.text");
2 Clazz.load (null, "javax.swing.text.Utilities", ["javax.swing.JComponent", "javax.swing.text.CompositeView", "$.Position", "$.StyleConstants", "$.StyledDocument"], function () {
3 c$ = Clazz.declareType (javax.swing.text, "Utilities");
4 c$.getJComponent = Clazz.defineMethod (c$, "getJComponent", 
5 function (view) {
6 if (view != null) {
7 var component = view.getContainer ();
8 if (Clazz.instanceOf (component, javax.swing.JComponent)) {
9 return component;
10 }}return null;
11 }, "javax.swing.text.View");
12 c$.getTabbedTextWidth = Clazz.defineMethod (c$, "getTabbedTextWidth", 
13 function (s, metrics, x, e, startOffset) {
14 return javax.swing.text.Utilities.getTabbedTextWidth (null, s, metrics, x, e, startOffset, null);
15 }, "javax.swing.text.Segment,java.awt.FontMetrics,~N,javax.swing.text.TabExpander,~N");
16 c$.getTabbedTextWidth = Clazz.defineMethod (c$, "getTabbedTextWidth", 
17 function (view, s, metrics, x, e, startOffset, justificationData) {
18 var nextX = x;
19 var txt = s.array;
20 var txtOffset = s.offset;
21 var n = s.offset + s.count;
22 var charCount = 0;
23 var spaceAddon = 0;
24 var spaceAddonLeftoverEnd = -1;
25 var startJustifiableContent = 0;
26 var endJustifiableContent = 0;
27 if (justificationData != null) {
28 var offset = -startOffset + txtOffset;
29 var parent = null;
30 if (view != null && (parent = view.getParent ()) != null) {
31 offset += parent.getStartOffset ();
32 }spaceAddon = justificationData[0];
33 spaceAddonLeftoverEnd = justificationData[1] + offset;
34 startJustifiableContent = justificationData[2] + offset;
35 endJustifiableContent = justificationData[3] + offset;
36 }for (var i = txtOffset; i < n; i++) {
37 if (txt[i] == '\t' || ((spaceAddon != 0 || i <= spaceAddonLeftoverEnd) && (txt[i] == ' ') && startJustifiableContent <= i && i <= endJustifiableContent)) {
38 nextX += metrics.charsWidth (txt, i - charCount, charCount);
39 charCount = 0;
40 if (txt[i] == '\t') {
41 if (e != null) {
42 nextX = Clazz.floatToInt (e.nextTabStop (nextX, startOffset + i - txtOffset));
43 } else {
44 nextX += metrics.charWidth (' ');
45 }} else if (txt[i] == ' ') {
46 nextX += metrics.charWidth (' ') + spaceAddon;
47 if (i <= spaceAddonLeftoverEnd) {
48 nextX++;
49 }}} else if (txt[i] == '\n') {
50 nextX += metrics.charsWidth (txt, i - charCount, charCount);
51 charCount = 0;
52 } else {
53 charCount++;
54 }}
55 nextX += metrics.charsWidth (txt, n - charCount, charCount);
56 return nextX - x;
57 }, "javax.swing.text.View,javax.swing.text.Segment,java.awt.FontMetrics,~N,javax.swing.text.TabExpander,~N,~A");
58 c$.getTabbedTextOffset = Clazz.defineMethod (c$, "getTabbedTextOffset", 
59 function (s, metrics, x0, x, e, startOffset) {
60 return javax.swing.text.Utilities.getTabbedTextOffset (s, metrics, x0, x, e, startOffset, true);
61 }, "javax.swing.text.Segment,java.awt.FontMetrics,~N,~N,javax.swing.text.TabExpander,~N");
62 c$.getTabbedTextOffset = Clazz.defineMethod (c$, "getTabbedTextOffset", 
63 function (view, s, metrics, x0, x, e, startOffset, justificationData) {
64 return javax.swing.text.Utilities.getTabbedTextOffset (view, s, metrics, x0, x, e, startOffset, true, justificationData);
65 }, "javax.swing.text.View,javax.swing.text.Segment,java.awt.FontMetrics,~N,~N,javax.swing.text.TabExpander,~N,~A");
66 c$.getTabbedTextOffset = Clazz.defineMethod (c$, "getTabbedTextOffset", 
67 function (s, metrics, x0, x, e, startOffset, round) {
68 return javax.swing.text.Utilities.getTabbedTextOffset (null, s, metrics, x0, x, e, startOffset, round, null);
69 }, "javax.swing.text.Segment,java.awt.FontMetrics,~N,~N,javax.swing.text.TabExpander,~N,~B");
70 c$.getTabbedTextOffset = Clazz.defineMethod (c$, "getTabbedTextOffset", 
71 function (view, s, metrics, x0, x, e, startOffset, round, justificationData) {
72 if (x0 >= x) {
73 return 0;
74 }var currX = x0;
75 var nextX = currX;
76 var txt = s.array;
77 var txtOffset = s.offset;
78 var txtCount = s.count;
79 var spaceAddon = 0;
80 var spaceAddonLeftoverEnd = -1;
81 var startJustifiableContent = 0;
82 var endJustifiableContent = 0;
83 if (justificationData != null) {
84 var offset = -startOffset + txtOffset;
85 var parent = null;
86 if (view != null && (parent = view.getParent ()) != null) {
87 offset += parent.getStartOffset ();
88 }spaceAddon = justificationData[0];
89 spaceAddonLeftoverEnd = justificationData[1] + offset;
90 startJustifiableContent = justificationData[2] + offset;
91 endJustifiableContent = justificationData[3] + offset;
92 }var n = s.offset + s.count;
93 for (var i = s.offset; i < n; i++) {
94 if (txt[i] == '\t' || ((spaceAddon != 0 || i <= spaceAddonLeftoverEnd) && (txt[i] == ' ') && startJustifiableContent <= i && i <= endJustifiableContent)) {
95 if (txt[i] == '\t') {
96 if (e != null) {
97 nextX = Clazz.floatToInt (e.nextTabStop (nextX, startOffset + i - txtOffset));
98 } else {
99 nextX += metrics.charWidth (' ');
100 }} else if (txt[i] == ' ') {
101 nextX += metrics.charWidth (' ') + spaceAddon;
102 if (i <= spaceAddonLeftoverEnd) {
103 nextX++;
104 }}} else {
105 nextX += metrics.charWidth (txt[i]);
106 }if ((x >= currX) && (x < nextX)) {
107 if ((round == false) || ((x - currX) < (nextX - x))) {
108 return i - txtOffset;
109 } else {
110 return i + 1 - txtOffset;
111 }}currX = nextX;
112 }
113 return txtCount;
114 }, "javax.swing.text.View,javax.swing.text.Segment,java.awt.FontMetrics,~N,~N,javax.swing.text.TabExpander,~N,~B,~A");
115 c$.getBreakLocation = Clazz.defineMethod (c$, "getBreakLocation", 
116 function (s, metrics, x0, x, e, startOffset) {
117 return 0;
118 }, "javax.swing.text.Segment,java.awt.FontMetrics,~N,~N,javax.swing.text.TabExpander,~N");
119 c$.getRowStart = Clazz.defineMethod (c$, "getRowStart", 
120 function (c, offs) {
121 var r = c.modelToView (offs);
122 if (r == null) {
123 return -1;
124 }var lastOffs = offs;
125 var y = r.y;
126 while ((r != null) && (y == r.y)) {
127 if (r.height != 0) {
128 offs = lastOffs;
129 }lastOffs -= 1;
130 r = (lastOffs >= 0) ? c.modelToView (lastOffs) : null;
131 }
132 return offs;
133 }, "javax.swing.text.JTextComponent,~N");
134 c$.getRowEnd = Clazz.defineMethod (c$, "getRowEnd", 
135 function (c, offs) {
136 var r = c.modelToView (offs);
137 if (r == null) {
138 return -1;
139 }var n = c.getDocument ().getLength ();
140 var lastOffs = offs;
141 var y = r.y;
142 while ((r != null) && (y == r.y)) {
143 if (r.height != 0) {
144 offs = lastOffs;
145 }lastOffs += 1;
146 r = (lastOffs <= n) ? c.modelToView (lastOffs) : null;
147 }
148 return offs;
149 }, "javax.swing.text.JTextComponent,~N");
150 c$.getPositionAbove = Clazz.defineMethod (c$, "getPositionAbove", 
151 function (c, offs, x) {
152 var lastOffs = javax.swing.text.Utilities.getRowStart (c, offs) - 1;
153 if (lastOffs < 0) {
154 return -1;
155 }var bestSpan = 2147483647;
156 var y = 0;
157 var r = null;
158 if (lastOffs >= 0) {
159 r = c.modelToView (lastOffs);
160 y = r.y;
161 }while ((r != null) && (y == r.y)) {
162 var span = Math.abs (r.x - x);
163 if (span < bestSpan) {
164 offs = lastOffs;
165 bestSpan = span;
166 }lastOffs -= 1;
167 r = (lastOffs >= 0) ? c.modelToView (lastOffs) : null;
168 }
169 return offs;
170 }, "javax.swing.text.JTextComponent,~N,~N");
171 c$.getPositionBelow = Clazz.defineMethod (c$, "getPositionBelow", 
172 function (c, offs, x) {
173 var lastOffs = javax.swing.text.Utilities.getRowEnd (c, offs) + 1;
174 if (lastOffs <= 0) {
175 return -1;
176 }var bestSpan = 2147483647;
177 var n = c.getDocument ().getLength ();
178 var y = 0;
179 var r = null;
180 if (lastOffs <= n) {
181 r = c.modelToView (lastOffs);
182 y = r.y;
183 }while ((r != null) && (y == r.y)) {
184 var span = Math.abs (x - r.x);
185 if (span < bestSpan) {
186 offs = lastOffs;
187 bestSpan = span;
188 }lastOffs += 1;
189 r = (lastOffs <= n) ? c.modelToView (lastOffs) : null;
190 }
191 return offs;
192 }, "javax.swing.text.JTextComponent,~N,~N");
193 c$.getWordStart = Clazz.defineMethod (c$, "getWordStart", 
194 function (c, offs) {
195 return 0;
196 }, "javax.swing.text.JTextComponent,~N");
197 c$.getWordEnd = Clazz.defineMethod (c$, "getWordEnd", 
198 function (c, offs) {
199 return 0;
200 }, "javax.swing.text.JTextComponent,~N");
201 c$.getNextWord = Clazz.defineMethod (c$, "getNextWord", 
202 function (c, offs) {
203 var nextWord;
204 var line = javax.swing.text.Utilities.getParagraphElement (c, offs);
205 for (nextWord = javax.swing.text.Utilities.getNextWordInParagraph (c, line, offs, false); nextWord == -1; nextWord = javax.swing.text.Utilities.getNextWordInParagraph (c, line, offs, true)) {
206 offs = line.getEndOffset ();
207 line = javax.swing.text.Utilities.getParagraphElement (c, offs);
208 }
209 return nextWord;
210 }, "javax.swing.text.JTextComponent,~N");
211 c$.getNextWordInParagraph = Clazz.defineMethod (c$, "getNextWordInParagraph", 
212 function (c, line, offs, first) {
213 return 0;
214 }, "javax.swing.text.JTextComponent,javax.swing.text.Element,~N,~B");
215 c$.getPreviousWord = Clazz.defineMethod (c$, "getPreviousWord", 
216 function (c, offs) {
217 var prevWord;
218 var line = javax.swing.text.Utilities.getParagraphElement (c, offs);
219 for (prevWord = javax.swing.text.Utilities.getPrevWordInParagraph (c, line, offs); prevWord == -1; prevWord = javax.swing.text.Utilities.getPrevWordInParagraph (c, line, offs)) {
220 offs = line.getStartOffset () - 1;
221 line = javax.swing.text.Utilities.getParagraphElement (c, offs);
222 }
223 return prevWord;
224 }, "javax.swing.text.JTextComponent,~N");
225 c$.getPrevWordInParagraph = Clazz.defineMethod (c$, "getPrevWordInParagraph", 
226 function (c, line, offs) {
227 return 0;
228 }, "javax.swing.text.JTextComponent,javax.swing.text.Element,~N");
229 c$.getParagraphElement = Clazz.defineMethod (c$, "getParagraphElement", 
230 function (c, offs) {
231 var doc = c.getDocument ();
232 if (Clazz.instanceOf (doc, javax.swing.text.StyledDocument)) {
233 return (doc).getParagraphElement (offs);
234 }var map = doc.getDefaultRootElement ();
235 var index = map.getElementIndex (offs);
236 var paragraph = map.getElement (index);
237 if ((offs >= paragraph.getStartOffset ()) && (offs < paragraph.getEndOffset ())) {
238 return paragraph;
239 }return null;
240 }, "javax.swing.text.JTextComponent,~N");
241 c$.isComposedTextElement = Clazz.defineMethod (c$, "isComposedTextElement", 
242 function (doc, offset) {
243 var elem = doc.getDefaultRootElement ();
244 while (!elem.isLeaf ()) {
245 elem = elem.getElement (elem.getElementIndex (offset));
246 }
247 return javax.swing.text.Utilities.isComposedTextElement (elem);
248 }, "javax.swing.text.Document,~N");
249 c$.isComposedTextElement = Clazz.defineMethod (c$, "isComposedTextElement", 
250 function (elem) {
251 var as = elem.getAttributes ();
252 return javax.swing.text.Utilities.isComposedTextAttributeDefined (as);
253 }, "javax.swing.text.Element");
254 c$.isComposedTextAttributeDefined = Clazz.defineMethod (c$, "isComposedTextAttributeDefined", 
255 function (as) {
256 return ((as != null) && (as.isDefined (javax.swing.text.StyleConstants.ComposedTextAttribute)));
257 }, "javax.swing.text.AttributeSet");
258 c$.isLeftToRight = Clazz.defineMethod (c$, "isLeftToRight", 
259 function (c) {
260 return c.getComponentOrientation ().isLeftToRight ();
261 }, "java.awt.Component");
262 c$.getNextVisualPositionFrom = Clazz.defineMethod (c$, "getNextVisualPositionFrom", 
263 function (v, pos, b, alloc, direction, biasRet) {
264 if (v.getViewCount () == 0) {
265 return pos;
266 }var top = (direction == 1 || direction == 7);
267 var retValue;
268 if (pos == -1) {
269 var childIndex = (top) ? v.getViewCount () - 1 : 0;
270 var child = v.getView (childIndex);
271 var childBounds = v.getChildAllocation (childIndex, alloc);
272 retValue = child.getNextVisualPositionFrom (pos, b, childBounds, direction, biasRet);
273 if (retValue == -1 && !top && v.getViewCount () > 1) {
274 child = v.getView (1);
275 childBounds = v.getChildAllocation (1, alloc);
276 retValue = child.getNextVisualPositionFrom (-1, biasRet[0], childBounds, direction, biasRet);
277 }} else {
278 var increment = (top) ? -1 : 1;
279 var childIndex;
280 if (b === javax.swing.text.Position.Bias.Backward && pos > 0) {
281 childIndex = v.getViewIndex (pos - 1, javax.swing.text.Position.Bias.Forward);
282 } else {
283 childIndex = v.getViewIndex (pos, javax.swing.text.Position.Bias.Forward);
284 }var child = v.getView (childIndex);
285 var childBounds = v.getChildAllocation (childIndex, alloc);
286 retValue = child.getNextVisualPositionFrom (pos, b, childBounds, direction, biasRet);
287 if ((direction == 3 || direction == 7) && (Clazz.instanceOf (v, javax.swing.text.CompositeView)) && (v).flipEastAndWestAtEnds (pos, b)) {
288 increment *= -1;
289 }childIndex += increment;
290 if (retValue == -1 && childIndex >= 0 && childIndex < v.getViewCount ()) {
291 child = v.getView (childIndex);
292 childBounds = v.getChildAllocation (childIndex, alloc);
293 retValue = child.getNextVisualPositionFrom (-1, b, childBounds, direction, biasRet);
294 if (retValue == pos && biasRet[0] !== b) {
295 return javax.swing.text.Utilities.getNextVisualPositionFrom (v, pos, biasRet[0], alloc, direction, biasRet);
296 }} else if (retValue != -1 && biasRet[0] !== b && ((increment == 1 && child.getEndOffset () == retValue) || (increment == -1 && child.getStartOffset () == retValue)) && childIndex >= 0 && childIndex < v.getViewCount ()) {
297 child = v.getView (childIndex);
298 childBounds = v.getChildAllocation (childIndex, alloc);
299 var originalBias = biasRet[0];
300 var nextPos = child.getNextVisualPositionFrom (-1, b, childBounds, direction, biasRet);
301 if (biasRet[0] === b) {
302 retValue = nextPos;
303 } else {
304 biasRet[0] = originalBias;
305 }}}return retValue;
306 }, "javax.swing.text.View,~N,javax.swing.text.Position.Bias,java.awt.Shape,~N,~A");
307 });