ea222faa8ff48330e09a323847dd39201fb1cba4
[jalviewjs.git] / site / swingjs / j2s / javax / swing / text / GapContent.js
1 Clazz.declarePackage ("javax.swing.text");
2 Clazz.load (["javax.swing.text.AbstractDocument", "$.GapVector", "$.Position", "javax.swing.undo.AbstractUndoableEdit"], "javax.swing.text.GapContent", ["java.util.Vector", "javax.swing.text.BadLocationException", "$.Segment", "javax.swing.undo.CannotRedoException", "$.CannotUndoException"], function () {
3 c$ = Clazz.decorateAsClass (function () {
4 if (!Clazz.isClassDefined ("javax.swing.text.GapContent.MarkData")) {
5 javax.swing.text.GapContent.$GapContent$MarkData$ ();
6 }
7 if (!Clazz.isClassDefined ("javax.swing.text.GapContent.StickyPosition")) {
8 javax.swing.text.GapContent.$GapContent$StickyPosition$ ();
9 }
10 this.marks = null;
11 this.search = null;
12 if (!Clazz.isClassDefined ("javax.swing.text.GapContent.UndoPosRef")) {
13 javax.swing.text.GapContent.$GapContent$UndoPosRef$ ();
14 }
15 if (!Clazz.isClassDefined ("javax.swing.text.GapContent.InsertUndo")) {
16 javax.swing.text.GapContent.$GapContent$InsertUndo$ ();
17 }
18 if (!Clazz.isClassDefined ("javax.swing.text.GapContent.RemoveUndo")) {
19 javax.swing.text.GapContent.$GapContent$RemoveUndo$ ();
20 }
21 Clazz.instantialize (this, arguments);
22 }, javax.swing.text, "GapContent", javax.swing.text.GapVector, javax.swing.text.AbstractDocument.Content);
23 Clazz.makeConstructor (c$, 
24 function () {
25 this.construct (10);
26 });
27 Clazz.makeConstructor (c$, 
28 function (initialLength) {
29 Clazz.superConstructor (this, javax.swing.text.GapContent, [Math.max (initialLength, 2)]);
30 var implied =  Clazz.newCharArray (1, '\0');
31 implied[0] = '\n';
32 this.replace (0, 0, implied, implied.length);
33 this.marks =  new javax.swing.text.GapContent.MarkVector ();
34 this.search = Clazz.innerTypeInstance (javax.swing.text.GapContent.MarkData, this, null, 0);
35 }, "~N");
36 Clazz.overrideMethod (c$, "allocateArray", 
37 function (len) {
38 return  Clazz.newCharArray (len, '\0');
39 }, "~N");
40 Clazz.overrideMethod (c$, "getArrayLength", 
41 function () {
42 var carray = this.getArray ();
43 return carray.length;
44 });
45 Clazz.overrideMethod (c$, "length", 
46 function () {
47 var len = this.getArrayLength () - (this.getGapEnd () - this.getGapStart ());
48 return len;
49 });
50 Clazz.overrideMethod (c$, "insertString", 
51 function (where, str) {
52 if (where > this.length () || where < 0) {
53 throw  new javax.swing.text.BadLocationException ("Invalid insert", this.length ());
54 }var chars = str.toCharArray ();
55 this.replace (where, 0, chars, chars.length);
56 return Clazz.innerTypeInstance (javax.swing.text.GapContent.InsertUndo, this, null, where, str.length);
57 }, "~N,~S");
58 Clazz.overrideMethod (c$, "remove", 
59 function (where, nitems) {
60 if (where + nitems >= this.length ()) {
61 throw  new javax.swing.text.BadLocationException ("Invalid remove", this.length () + 1);
62 }var removedString = this.getString (where, nitems);
63 var edit = Clazz.innerTypeInstance (javax.swing.text.GapContent.RemoveUndo, this, null, where, removedString);
64 this.replace (where, nitems, javax.swing.text.GapContent.empty, 0);
65 return edit;
66 }, "~N,~N");
67 Clazz.overrideMethod (c$, "getString", 
68 function (where, len) {
69 var s =  new javax.swing.text.Segment ();
70 this.getChars (where, len, s);
71 return  String.instantialize (s.array, s.offset, s.count);
72 }, "~N,~N");
73 Clazz.overrideMethod (c$, "getChars", 
74 function (where, len, chars) {
75 var end = where + len;
76 if (where < 0 || end < 0) {
77 throw  new javax.swing.text.BadLocationException ("Invalid location", -1);
78 }if (end > this.length () || where > this.length ()) {
79 throw  new javax.swing.text.BadLocationException ("Invalid location", this.length () + 1);
80 }var g0 = this.getGapStart ();
81 var g1 = this.getGapEnd ();
82 var array = this.getArray ();
83 if ((where + len) <= g0) {
84 chars.array = array;
85 chars.offset = where;
86 } else if (where >= g0) {
87 chars.array = array;
88 chars.offset = g1 + where - g0;
89 } else {
90 var before = g0 - where;
91 if (chars.isPartialReturn ()) {
92 chars.array = array;
93 chars.offset = where;
94 chars.count = before;
95 return;
96 }chars.array =  Clazz.newCharArray (len, '\0');
97 chars.offset = 0;
98 System.arraycopy (array, where, chars.array, 0, before);
99 System.arraycopy (array, g1, chars.array, before, len - before);
100 }chars.count = len;
101 }, "~N,~N,javax.swing.text.Segment");
102 Clazz.overrideMethod (c$, "createPosition", 
103 function (offset) {
104 var g0 = this.getGapStart ();
105 var g1 = this.getGapEnd ();
106 var index = (offset < g0) ? offset : offset + (g1 - g0);
107 this.search.index = index;
108 var sortIndex = this.findSortIndex (this.search);
109 var m;
110 var position;
111 if (sortIndex < this.marks.size () && (m = this.marks.elementAt (sortIndex)).index == index && (position = m.getPosition ()) != null) {
112 } else {
113 position = Clazz.innerTypeInstance (javax.swing.text.GapContent.StickyPosition, this, null);
114 m = Clazz.innerTypeInstance (javax.swing.text.GapContent.MarkData, this, null, index, position);
115 position.setMark (m);
116 this.marks.insertElementAt (m, sortIndex);
117 }return position;
118 }, "~N");
119 Clazz.defineMethod (c$, "shiftEnd", 
120 function (newSize) {
121 var oldGapEnd = this.getGapEnd ();
122 Clazz.superCall (this, javax.swing.text.GapContent, "shiftEnd", [newSize]);
123 var dg = this.getGapEnd () - oldGapEnd;
124 var adjustIndex = this.findMarkAdjustIndex (oldGapEnd);
125 var n = this.marks.size ();
126 for (var i = adjustIndex; i < n; i++) {
127 var mark = this.marks.elementAt (i);
128 mark.index += dg;
129 }
130 }, "~N");
131 Clazz.defineMethod (c$, "getNewArraySize", 
132 function (reqSize) {
133 if (reqSize < 524288) {
134 return Clazz.superCall (this, javax.swing.text.GapContent, "getNewArraySize", [reqSize]);
135 } else {
136 return reqSize + 524288;
137 }}, "~N");
138 Clazz.defineMethod (c$, "shiftGap", 
139 function (newGapStart) {
140 var oldGapStart = this.getGapStart ();
141 var dg = newGapStart - oldGapStart;
142 var oldGapEnd = this.getGapEnd ();
143 var newGapEnd = oldGapEnd + dg;
144 var gapSize = oldGapEnd - oldGapStart;
145 Clazz.superCall (this, javax.swing.text.GapContent, "shiftGap", [newGapStart]);
146 if (dg > 0) {
147 var adjustIndex = this.findMarkAdjustIndex (oldGapStart);
148 var n = this.marks.size ();
149 for (var i = adjustIndex; i < n; i++) {
150 var mark = this.marks.elementAt (i);
151 if (mark.index >= newGapEnd) {
152 break;
153 }mark.index -= gapSize;
154 }
155 } else if (dg < 0) {
156 var adjustIndex = this.findMarkAdjustIndex (newGapStart);
157 var n = this.marks.size ();
158 for (var i = adjustIndex; i < n; i++) {
159 var mark = this.marks.elementAt (i);
160 if (mark.index >= oldGapEnd) {
161 break;
162 }mark.index += gapSize;
163 }
164 }this.resetMarksAtZero ();
165 }, "~N");
166 Clazz.defineMethod (c$, "resetMarksAtZero", 
167 function () {
168 if (this.marks != null && this.getGapStart () == 0) {
169 var g1 = this.getGapEnd ();
170 for (var counter = 0, maxCounter = this.marks.size (); counter < maxCounter; counter++) {
171 var mark = this.marks.elementAt (counter);
172 if (mark.index <= g1) {
173 mark.index = 0;
174 } else {
175 break;
176 }}
177 }});
178 Clazz.defineMethod (c$, "shiftGapStartDown", 
179 function (newGapStart) {
180 var adjustIndex = this.findMarkAdjustIndex (newGapStart);
181 var n = this.marks.size ();
182 var g0 = this.getGapStart ();
183 var g1 = this.getGapEnd ();
184 for (var i = adjustIndex; i < n; i++) {
185 var mark = this.marks.elementAt (i);
186 if (mark.index > g0) {
187 break;
188 }mark.index = g1;
189 }
190 Clazz.superCall (this, javax.swing.text.GapContent, "shiftGapStartDown", [newGapStart]);
191 this.resetMarksAtZero ();
192 }, "~N");
193 Clazz.defineMethod (c$, "shiftGapEndUp", 
194 function (newGapEnd) {
195 var adjustIndex = this.findMarkAdjustIndex (this.getGapEnd ());
196 var n = this.marks.size ();
197 for (var i = adjustIndex; i < n; i++) {
198 var mark = this.marks.elementAt (i);
199 if (mark.index >= newGapEnd) {
200 break;
201 }mark.index = newGapEnd;
202 }
203 Clazz.superCall (this, javax.swing.text.GapContent, "shiftGapEndUp", [newGapEnd]);
204 this.resetMarksAtZero ();
205 }, "~N");
206 Clazz.defineMethod (c$, "compare", 
207 function (o1, o2) {
208 if (o1.index < o2.index) {
209 return -1;
210 } else if (o1.index > o2.index) {
211 return 1;
212 } else {
213 return 0;
214 }}, "javax.swing.text.GapContent.MarkData,javax.swing.text.GapContent.MarkData");
215 Clazz.defineMethod (c$, "findMarkAdjustIndex", 
216 function (searchIndex) {
217 this.search.index = Math.max (searchIndex, 1);
218 var index = this.findSortIndex (this.search);
219 for (var i = index - 1; i >= 0; i--) {
220 var d = this.marks.elementAt (i);
221 if (d.index != this.search.index) {
222 break;
223 }index -= 1;
224 }
225 return index;
226 }, "~N");
227 Clazz.defineMethod (c$, "findSortIndex", 
228 function (o) {
229 var lower = 0;
230 var upper = this.marks.size () - 1;
231 var mid = 0;
232 if (upper == -1) {
233 return 0;
234 }var cmp = 0;
235 var last = this.marks.elementAt (upper);
236 cmp = this.compare (o, last);
237 if (cmp > 0) return upper + 1;
238 while (lower <= upper) {
239 mid = lower + (Clazz.doubleToInt ((upper - lower) / 2));
240 var entry = this.marks.elementAt (mid);
241 cmp = this.compare (o, entry);
242 if (cmp == 0) {
243 return mid;
244 } else if (cmp < 0) {
245 upper = mid - 1;
246 } else {
247 lower = mid + 1;
248 }}
249 return (cmp < 0) ? mid : mid + 1;
250 }, "javax.swing.text.GapContent.MarkData");
251 Clazz.defineMethod (c$, "removeUnusedMarks", 
252 function () {
253 var n = this.marks.size ();
254 var cleaned =  new javax.swing.text.GapContent.MarkVector (n);
255 for (var i = 0; i < n; i++) {
256 var mark = this.marks.elementAt (i);
257 if (mark != null) {
258 cleaned.addElement (mark);
259 }}
260 this.marks = cleaned;
261 });
262 Clazz.defineMethod (c$, "getPositionsInRange", 
263 function (v, offset, length) {
264 var endOffset = offset + length;
265 var startIndex;
266 var endIndex;
267 var g0 = this.getGapStart ();
268 var g1 = this.getGapEnd ();
269 if (offset < g0) {
270 if (offset == 0) {
271 startIndex = 0;
272 } else {
273 startIndex = this.findMarkAdjustIndex (offset);
274 }if (endOffset >= g0) {
275 endIndex = this.findMarkAdjustIndex (endOffset + (g1 - g0) + 1);
276 } else {
277 endIndex = this.findMarkAdjustIndex (endOffset + 1);
278 }} else {
279 startIndex = this.findMarkAdjustIndex (offset + (g1 - g0));
280 endIndex = this.findMarkAdjustIndex (endOffset + (g1 - g0) + 1);
281 }var placeIn = (v == null) ?  new java.util.Vector (Math.max (1, endIndex - startIndex)) : v;
282 for (var counter = startIndex; counter < endIndex; counter++) {
283 placeIn.addElement (Clazz.innerTypeInstance (javax.swing.text.GapContent.UndoPosRef, this, null, this.marks.elementAt (counter)));
284 }
285 return placeIn;
286 }, "java.util.Vector,~N,~N");
287 Clazz.defineMethod (c$, "updateUndoPositions", 
288 function (positions, offset, length) {
289 var endOffset = offset + length;
290 var g1 = this.getGapEnd ();
291 var startIndex;
292 var endIndex = this.findMarkAdjustIndex (g1 + 1);
293 if (offset != 0) {
294 startIndex = this.findMarkAdjustIndex (g1);
295 } else {
296 startIndex = 0;
297 }for (var counter = positions.size () - 1; counter >= 0; counter--) {
298 var ref = positions.elementAt (counter);
299 ref.resetLocation (endOffset, g1);
300 }
301 if (startIndex < endIndex) {
302 var sorted =  new Array (endIndex - startIndex);
303 var addIndex = 0;
304 var counter;
305 if (offset == 0) {
306 for (counter = startIndex; counter < endIndex; counter++) {
307 var mark = this.marks.elementAt (counter);
308 if (mark.index == 0) {
309 sorted[addIndex++] = mark;
310 }}
311 for (counter = startIndex; counter < endIndex; counter++) {
312 var mark = this.marks.elementAt (counter);
313 if (mark.index != 0) {
314 sorted[addIndex++] = mark;
315 }}
316 } else {
317 for (counter = startIndex; counter < endIndex; counter++) {
318 var mark = this.marks.elementAt (counter);
319 if (mark.index != g1) {
320 sorted[addIndex++] = mark;
321 }}
322 for (counter = startIndex; counter < endIndex; counter++) {
323 var mark = this.marks.elementAt (counter);
324 if (mark.index == g1) {
325 sorted[addIndex++] = mark;
326 }}
327 }this.marks.replaceRange (startIndex, endIndex, sorted);
328 }}, "java.util.Vector,~N,~N");
329 c$.$GapContent$MarkData$ = function () {
330 Clazz.pu$h(self.c$);
331 c$ = Clazz.decorateAsClass (function () {
332 Clazz.prepareCallback (this, arguments);
333 this.ref = null;
334 this.index = 0;
335 Clazz.instantialize (this, arguments);
336 }, javax.swing.text.GapContent, "MarkData");
337 Clazz.makeConstructor (c$, 
338 function (a) {
339 this.index = a;
340 }, "~N");
341 Clazz.makeConstructor (c$, 
342 function (a, b) {
343 this.ref = b;
344 this.index = a;
345 }, "~N,javax.swing.text.GapContent.StickyPosition");
346 Clazz.defineMethod (c$, "getOffset", 
347 function () {
348 var a = this.b$["javax.swing.text.GapContent"].getGapStart ();
349 var b = this.b$["javax.swing.text.GapContent"].getGapEnd ();
350 var c = (this.index < a) ? this.index : this.index - (b - a);
351 return Math.max (c, 0);
352 });
353 Clazz.defineMethod (c$, "getPosition", 
354 function () {
355 return this.ref;
356 });
357 c$ = Clazz.p0p ();
358 };
359 c$.$GapContent$StickyPosition$ = function () {
360 Clazz.pu$h(self.c$);
361 c$ = Clazz.decorateAsClass (function () {
362 Clazz.prepareCallback (this, arguments);
363 this.mark = null;
364 Clazz.instantialize (this, arguments);
365 }, javax.swing.text.GapContent, "StickyPosition", null, javax.swing.text.Position);
366 Clazz.makeConstructor (c$, 
367 function () {
368 });
369 Clazz.defineMethod (c$, "setMark", 
370 function (a) {
371 this.mark = a;
372 }, "javax.swing.text.GapContent.MarkData");
373 Clazz.overrideMethod (c$, "getOffset", 
374 function () {
375 return this.mark.getOffset ();
376 });
377 Clazz.overrideMethod (c$, "toString", 
378 function () {
379 return Integer.toString (this.getOffset ());
380 });
381 c$ = Clazz.p0p ();
382 };
383 c$.$GapContent$UndoPosRef$ = function () {
384 Clazz.pu$h(self.c$);
385 c$ = Clazz.decorateAsClass (function () {
386 Clazz.prepareCallback (this, arguments);
387 this.undoLocation = 0;
388 this.rec = null;
389 Clazz.instantialize (this, arguments);
390 }, javax.swing.text.GapContent, "UndoPosRef");
391 Clazz.makeConstructor (c$, 
392 function (a) {
393 this.rec = a;
394 this.undoLocation = a.getOffset ();
395 }, "javax.swing.text.GapContent.MarkData");
396 Clazz.defineMethod (c$, "resetLocation", 
397 function (a, b) {
398 if (this.undoLocation != a) {
399 this.rec.index = this.undoLocation;
400 } else {
401 this.rec.index = b;
402 }}, "~N,~N");
403 c$ = Clazz.p0p ();
404 };
405 c$.$GapContent$InsertUndo$ = function () {
406 Clazz.pu$h(self.c$);
407 c$ = Clazz.decorateAsClass (function () {
408 Clazz.prepareCallback (this, arguments);
409 this.offset = 0;
410 this.length = 0;
411 this.string = null;
412 this.posRefs = null;
413 Clazz.instantialize (this, arguments);
414 }, javax.swing.text.GapContent, "InsertUndo", javax.swing.undo.AbstractUndoableEdit);
415 Clazz.makeConstructor (c$, 
416 function (a, b) {
417 Clazz.superConstructor (this, javax.swing.text.GapContent.InsertUndo);
418 this.offset = a;
419 this.length = b;
420 }, "~N,~N");
421 Clazz.defineMethod (c$, "undo", 
422 function () {
423 Clazz.superCall (this, javax.swing.text.GapContent.InsertUndo, "undo", []);
424 try {
425 this.posRefs = this.b$["javax.swing.text.GapContent"].getPositionsInRange (null, this.offset, this.length);
426 this.string = this.b$["javax.swing.text.GapContent"].getString (this.offset, this.length);
427 this.b$["javax.swing.text.GapContent"].remove (this.offset, this.length);
428 } catch (bl) {
429 if (Clazz.exceptionOf (bl, javax.swing.text.BadLocationException)) {
430 throw  new javax.swing.undo.CannotUndoException ();
431 } else {
432 throw bl;
433 }
434 }
435 });
436 Clazz.defineMethod (c$, "redo", 
437 function () {
438 Clazz.superCall (this, javax.swing.text.GapContent.InsertUndo, "redo", []);
439 try {
440 this.b$["javax.swing.text.GapContent"].insertString (this.offset, this.string);
441 this.string = null;
442 if (this.posRefs != null) {
443 this.b$["javax.swing.text.GapContent"].updateUndoPositions (this.posRefs, this.offset, this.length);
444 this.posRefs = null;
445 }} catch (bl) {
446 if (Clazz.exceptionOf (bl, javax.swing.text.BadLocationException)) {
447 throw  new javax.swing.undo.CannotRedoException ();
448 } else {
449 throw bl;
450 }
451 }
452 });
453 c$ = Clazz.p0p ();
454 };
455 c$.$GapContent$RemoveUndo$ = function () {
456 Clazz.pu$h(self.c$);
457 c$ = Clazz.decorateAsClass (function () {
458 Clazz.prepareCallback (this, arguments);
459 this.offset = 0;
460 this.length = 0;
461 this.string = null;
462 this.posRefs = null;
463 Clazz.instantialize (this, arguments);
464 }, javax.swing.text.GapContent, "RemoveUndo", javax.swing.undo.AbstractUndoableEdit);
465 Clazz.makeConstructor (c$, 
466 function (a, b) {
467 Clazz.superConstructor (this, javax.swing.text.GapContent.RemoveUndo);
468 this.offset = a;
469 this.string = b;
470 this.length = b.length;
471 this.posRefs = this.b$["javax.swing.text.GapContent"].getPositionsInRange (null, a, this.length);
472 }, "~N,~S");
473 Clazz.defineMethod (c$, "undo", 
474 function () {
475 Clazz.superCall (this, javax.swing.text.GapContent.RemoveUndo, "undo", []);
476 try {
477 this.b$["javax.swing.text.GapContent"].insertString (this.offset, this.string);
478 if (this.posRefs != null) {
479 this.b$["javax.swing.text.GapContent"].updateUndoPositions (this.posRefs, this.offset, this.length);
480 this.posRefs = null;
481 }this.string = null;
482 } catch (bl) {
483 if (Clazz.exceptionOf (bl, javax.swing.text.BadLocationException)) {
484 throw  new javax.swing.undo.CannotUndoException ();
485 } else {
486 throw bl;
487 }
488 }
489 });
490 Clazz.defineMethod (c$, "redo", 
491 function () {
492 Clazz.superCall (this, javax.swing.text.GapContent.RemoveUndo, "redo", []);
493 try {
494 this.string = this.b$["javax.swing.text.GapContent"].getString (this.offset, this.length);
495 this.posRefs = this.b$["javax.swing.text.GapContent"].getPositionsInRange (null, this.offset, this.length);
496 this.b$["javax.swing.text.GapContent"].remove (this.offset, this.length);
497 } catch (bl) {
498 if (Clazz.exceptionOf (bl, javax.swing.text.BadLocationException)) {
499 throw  new javax.swing.undo.CannotRedoException ();
500 } else {
501 throw bl;
502 }
503 }
504 });
505 c$ = Clazz.p0p ();
506 };
507 Clazz.pu$h(self.c$);
508 c$ = Clazz.decorateAsClass (function () {
509 this.oneMark = null;
510 Clazz.instantialize (this, arguments);
511 }, javax.swing.text.GapContent, "MarkVector", javax.swing.text.GapVector);
512 Clazz.prepareFields (c$, function () {
513 this.oneMark =  new Array (1);
514 });
515 Clazz.overrideMethod (c$, "allocateArray", 
516 function (a) {
517 return  new Array (a);
518 }, "~N");
519 Clazz.overrideMethod (c$, "getArrayLength", 
520 function () {
521 var a = this.getArray ();
522 return a.length;
523 });
524 Clazz.defineMethod (c$, "size", 
525 function () {
526 var a = this.getArrayLength () - (this.getGapEnd () - this.getGapStart ());
527 return a;
528 });
529 Clazz.defineMethod (c$, "insertElementAt", 
530 function (a, b) {
531 this.oneMark[0] = a;
532 this.replace (b, 0, this.oneMark, 1);
533 }, "javax.swing.text.GapContent.MarkData,~N");
534 Clazz.defineMethod (c$, "addElement", 
535 function (a) {
536 this.insertElementAt (a, this.size ());
537 }, "javax.swing.text.GapContent.MarkData");
538 Clazz.defineMethod (c$, "elementAt", 
539 function (a) {
540 var b = this.getGapStart ();
541 var c = this.getGapEnd ();
542 var d = this.getArray ();
543 if (a < b) {
544 return d[a];
545 } else {
546 a += c - b;
547 return d[a];
548 }}, "~N");
549 Clazz.defineMethod (c$, "replaceRange", 
550 function (a, b, c) {
551 var d = this.getGapStart ();
552 var e = this.getGapEnd ();
553 var f = a;
554 var g = 0;
555 var h = this.getArray ();
556 if (a >= d) {
557 f += (e - d);
558 b += (e - d);
559 } else if (b >= d) {
560 b += (e - d);
561 while (f < d) {
562 h[f++] = c[g++];
563 }
564 f = e;
565 } else {
566 while (f < b) {
567 h[f++] = c[g++];
568 }
569 }while (f < b) {
570 h[f++] = c[g++];
571 }
572 }, "~N,~N,~A");
573 c$ = Clazz.p0p ();
574 Clazz.defineStatics (c$,
575 "empty",  Clazz.newCharArray (0, '\0'),
576 "GROWTH_SIZE", 524288);
577 });