JAL-1807 Bob's JalviewJS prototype first commit
[jalviewjs.git] / site / j2s / javax / swing / text / Utilities.js
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
5 function (view) {\r
6 if (view != null) {\r
7 var component = view.getContainer ();\r
8 if (Clazz.instanceOf (component, javax.swing.JComponent)) {\r
9 return component;\r
10 }}return null;\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
18 var nextX = x;\r
19 var txt = s.array;\r
20 var txtOffset = s.offset;\r
21 var n = s.offset + s.count;\r
22 var charCount = 0;\r
23 var spaceAddon = 0;\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
29 var parent = null;\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
39 charCount = 0;\r
40 if (txt[i] == '\t') {\r
41 if (e != null) {\r
42 nextX = Clazz.floatToInt (e.nextTabStop (nextX, startOffset + i - txtOffset));\r
43 } else {\r
44 nextX += metrics.charWidth (' ');\r
45 }} else if (txt[i] == ' ') {\r
46 nextX += metrics.charWidth (' ') + spaceAddon;\r
47 if (i <= spaceAddonLeftoverEnd) {\r
48 nextX++;\r
49 }}} else if (txt[i] == '\n') {\r
50 nextX += metrics.charsWidth (txt, i - charCount, charCount);\r
51 charCount = 0;\r
52 } else {\r
53 charCount++;\r
54 }}\r
55 nextX += metrics.charsWidth (txt, n - charCount, charCount);\r
56 return nextX - x;\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
72 if (x0 >= x) {\r
73 return 0;\r
74 }var currX = x0;\r
75 var nextX = currX;\r
76 var txt = s.array;\r
77 var txtOffset = s.offset;\r
78 var txtCount = s.count;\r
79 var spaceAddon = 0;\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
85 var parent = null;\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
96 if (e != null) {\r
97 nextX = Clazz.floatToInt (e.nextTabStop (nextX, startOffset + i - txtOffset));\r
98 } else {\r
99 nextX += metrics.charWidth (' ');\r
100 }} else if (txt[i] == ' ') {\r
101 nextX += metrics.charWidth (' ') + spaceAddon;\r
102 if (i <= spaceAddonLeftoverEnd) {\r
103 nextX++;\r
104 }}} else {\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
109 } else {\r
110 return i + 1 - txtOffset;\r
111 }}currX = nextX;\r
112 }\r
113 return txtCount;\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
117 return 0;\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
122 if (r == null) {\r
123 return -1;\r
124 }var lastOffs = offs;\r
125 var y = r.y;\r
126 while ((r != null) && (y == r.y)) {\r
127 if (r.height != 0) {\r
128 offs = lastOffs;\r
129 }lastOffs -= 1;\r
130 r = (lastOffs >= 0) ? c.modelToView (lastOffs) : null;\r
131 }\r
132 return offs;\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
137 if (r == null) {\r
138 return -1;\r
139 }var n = c.getDocument ().getLength ();\r
140 var lastOffs = offs;\r
141 var y = r.y;\r
142 while ((r != null) && (y == r.y)) {\r
143 if (r.height != 0) {\r
144 offs = lastOffs;\r
145 }lastOffs += 1;\r
146 r = (lastOffs <= n) ? c.modelToView (lastOffs) : null;\r
147 }\r
148 return offs;\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
154 return -1;\r
155 }var bestSpan = 2147483647;\r
156 var y = 0;\r
157 var r = null;\r
158 if (lastOffs >= 0) {\r
159 r = c.modelToView (lastOffs);\r
160 y = r.y;\r
161 }while ((r != null) && (y == r.y)) {\r
162 var span = Math.abs (r.x - x);\r
163 if (span < bestSpan) {\r
164 offs = lastOffs;\r
165 bestSpan = span;\r
166 }lastOffs -= 1;\r
167 r = (lastOffs >= 0) ? c.modelToView (lastOffs) : null;\r
168 }\r
169 return offs;\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
175 return -1;\r
176 }var bestSpan = 2147483647;\r
177 var n = c.getDocument ().getLength ();\r
178 var y = 0;\r
179 var r = null;\r
180 if (lastOffs <= n) {\r
181 r = c.modelToView (lastOffs);\r
182 y = r.y;\r
183 }while ((r != null) && (y == r.y)) {\r
184 var span = Math.abs (x - r.x);\r
185 if (span < bestSpan) {\r
186 offs = lastOffs;\r
187 bestSpan = span;\r
188 }lastOffs += 1;\r
189 r = (lastOffs <= n) ? c.modelToView (lastOffs) : null;\r
190 }\r
191 return offs;\r
192 }, "javax.swing.text.JTextComponent,~N,~N");\r
193 c$.getWordStart = Clazz.defineMethod (c$, "getWordStart", \r
194 function (c, offs) {\r
195 return 0;\r
196 }, "javax.swing.text.JTextComponent,~N");\r
197 c$.getWordEnd = Clazz.defineMethod (c$, "getWordEnd", \r
198 function (c, offs) {\r
199 return 0;\r
200 }, "javax.swing.text.JTextComponent,~N");\r
201 c$.getNextWord = Clazz.defineMethod (c$, "getNextWord", \r
202 function (c, offs) {\r
203 var nextWord;\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
208 }\r
209 return nextWord;\r
210 }, "javax.swing.text.JTextComponent,~N");\r
211 c$.getNextWordInParagraph = Clazz.defineMethod (c$, "getNextWordInParagraph", \r
212 function (c, line, offs, first) {\r
213 return 0;\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
217 var prevWord;\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
222 }\r
223 return prevWord;\r
224 }, "javax.swing.text.JTextComponent,~N");\r
225 c$.getPrevWordInParagraph = Clazz.defineMethod (c$, "getPrevWordInParagraph", \r
226 function (c, line, offs) {\r
227 return 0;\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
238 return paragraph;\r
239 }return null;\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
246 }\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
250 function (elem) {\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
255 function (as) {\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
259 function (c) {\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
265 return pos;\r
266 }var top = (direction == 1 || direction == 7);\r
267 var retValue;\r
268 if (pos == -1) {\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
277 }} else {\r
278 var increment = (top) ? -1 : 1;\r
279 var childIndex;\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
282 } else {\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
288 increment *= -1;\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
303 } else {\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
307 });\r