1 Clazz.declarePackage ("javax.swing.text");
\r
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 () {
\r
3 c$ = Clazz.decorateAsClass (function () {
\r
4 if (!Clazz.isClassDefined ("javax.swing.text.GapContent.MarkData")) {
\r
5 javax.swing.text.GapContent.$GapContent$MarkData$ ();
\r
7 if (!Clazz.isClassDefined ("javax.swing.text.GapContent.StickyPosition")) {
\r
8 javax.swing.text.GapContent.$GapContent$StickyPosition$ ();
\r
12 if (!Clazz.isClassDefined ("javax.swing.text.GapContent.UndoPosRef")) {
\r
13 javax.swing.text.GapContent.$GapContent$UndoPosRef$ ();
\r
15 if (!Clazz.isClassDefined ("javax.swing.text.GapContent.InsertUndo")) {
\r
16 javax.swing.text.GapContent.$GapContent$InsertUndo$ ();
\r
18 if (!Clazz.isClassDefined ("javax.swing.text.GapContent.RemoveUndo")) {
\r
19 javax.swing.text.GapContent.$GapContent$RemoveUndo$ ();
\r
21 Clazz.instantialize (this, arguments);
\r
22 }, javax.swing.text, "GapContent", javax.swing.text.GapVector, javax.swing.text.AbstractDocument.Content);
\r
23 Clazz.makeConstructor (c$,
\r
25 this.construct (10);
\r
27 Clazz.makeConstructor (c$,
\r
28 function (initialLength) {
\r
29 Clazz.superConstructor (this, javax.swing.text.GapContent, [Math.max (initialLength, 2)]);
\r
30 var implied = Clazz.newCharArray (1, '\0');
\r
32 this.replace (0, 0, implied, implied.length);
\r
33 this.marks = new javax.swing.text.GapContent.MarkVector ();
\r
34 this.search = Clazz.innerTypeInstance (javax.swing.text.GapContent.MarkData, this, null, 0);
\r
36 Clazz.overrideMethod (c$, "allocateArray",
\r
38 return Clazz.newCharArray (len, '\0');
\r
40 Clazz.overrideMethod (c$, "getArrayLength",
\r
42 var carray = this.getArray ();
\r
43 return carray.length;
\r
45 Clazz.overrideMethod (c$, "length",
\r
47 var len = this.getArrayLength () - (this.getGapEnd () - this.getGapStart ());
\r
50 Clazz.overrideMethod (c$, "insertString",
\r
51 function (where, str) {
\r
52 if (where > this.length () || where < 0) {
\r
53 throw new javax.swing.text.BadLocationException ("Invalid insert", this.length ());
\r
54 }var chars = str.toCharArray ();
\r
55 this.replace (where, 0, chars, chars.length);
\r
56 return Clazz.innerTypeInstance (javax.swing.text.GapContent.InsertUndo, this, null, where, str.length);
\r
58 Clazz.overrideMethod (c$, "remove",
\r
59 function (where, nitems) {
\r
60 if (where + nitems >= this.length ()) {
\r
61 throw new javax.swing.text.BadLocationException ("Invalid remove", this.length () + 1);
\r
62 }var removedString = this.getString (where, nitems);
\r
63 var edit = Clazz.innerTypeInstance (javax.swing.text.GapContent.RemoveUndo, this, null, where, removedString);
\r
64 this.replace (where, nitems, javax.swing.text.GapContent.empty, 0);
\r
67 Clazz.overrideMethod (c$, "getString",
\r
68 function (where, len) {
\r
69 var s = new javax.swing.text.Segment ();
\r
70 this.getChars (where, len, s);
\r
71 return String.instantialize (s.array, s.offset, s.count);
\r
73 Clazz.overrideMethod (c$, "getChars",
\r
74 function (where, len, chars) {
\r
75 var end = where + len;
\r
76 if (where < 0 || end < 0) {
\r
77 throw new javax.swing.text.BadLocationException ("Invalid location", -1);
\r
78 }if (end > this.length () || where > this.length ()) {
\r
79 throw new javax.swing.text.BadLocationException ("Invalid location", this.length () + 1);
\r
80 }var g0 = this.getGapStart ();
\r
81 var g1 = this.getGapEnd ();
\r
82 var array = this.getArray ();
\r
83 if ((where + len) <= g0) {
\r
84 chars.array = array;
\r
85 chars.offset = where;
\r
86 } else if (where >= g0) {
\r
87 chars.array = array;
\r
88 chars.offset = g1 + where - g0;
\r
90 var before = g0 - where;
\r
91 if (chars.isPartialReturn ()) {
\r
92 chars.array = array;
\r
93 chars.offset = where;
\r
94 chars.count = before;
\r
96 }chars.array = Clazz.newCharArray (len, '\0');
\r
98 System.arraycopy (array, where, chars.array, 0, before);
\r
99 System.arraycopy (array, g1, chars.array, before, len - before);
\r
100 }chars.count = len;
\r
101 }, "~N,~N,javax.swing.text.Segment");
\r
102 Clazz.overrideMethod (c$, "createPosition",
\r
103 function (offset) {
\r
104 var g0 = this.getGapStart ();
\r
105 var g1 = this.getGapEnd ();
\r
106 var index = (offset < g0) ? offset : offset + (g1 - g0);
\r
107 this.search.index = index;
\r
108 var sortIndex = this.findSortIndex (this.search);
\r
111 if (sortIndex < this.marks.size () && (m = this.marks.elementAt (sortIndex)).index == index && (position = m.getPosition ()) != null) {
\r
113 position = Clazz.innerTypeInstance (javax.swing.text.GapContent.StickyPosition, this, null);
\r
114 m = Clazz.innerTypeInstance (javax.swing.text.GapContent.MarkData, this, null, index, position);
\r
115 position.setMark (m);
\r
116 this.marks.insertElementAt (m, sortIndex);
\r
119 Clazz.defineMethod (c$, "shiftEnd",
\r
120 function (newSize) {
\r
121 var oldGapEnd = this.getGapEnd ();
\r
122 Clazz.superCall (this, javax.swing.text.GapContent, "shiftEnd", [newSize]);
\r
123 var dg = this.getGapEnd () - oldGapEnd;
\r
124 var adjustIndex = this.findMarkAdjustIndex (oldGapEnd);
\r
125 var n = this.marks.size ();
\r
126 for (var i = adjustIndex; i < n; i++) {
\r
127 var mark = this.marks.elementAt (i);
\r
131 Clazz.defineMethod (c$, "getNewArraySize",
\r
132 function (reqSize) {
\r
133 if (reqSize < 524288) {
\r
134 return Clazz.superCall (this, javax.swing.text.GapContent, "getNewArraySize", [reqSize]);
\r
136 return reqSize + 524288;
\r
138 Clazz.defineMethod (c$, "shiftGap",
\r
139 function (newGapStart) {
\r
140 var oldGapStart = this.getGapStart ();
\r
141 var dg = newGapStart - oldGapStart;
\r
142 var oldGapEnd = this.getGapEnd ();
\r
143 var newGapEnd = oldGapEnd + dg;
\r
144 var gapSize = oldGapEnd - oldGapStart;
\r
145 Clazz.superCall (this, javax.swing.text.GapContent, "shiftGap", [newGapStart]);
\r
147 var adjustIndex = this.findMarkAdjustIndex (oldGapStart);
\r
148 var n = this.marks.size ();
\r
149 for (var i = adjustIndex; i < n; i++) {
\r
150 var mark = this.marks.elementAt (i);
\r
151 if (mark.index >= newGapEnd) {
\r
153 }mark.index -= gapSize;
\r
155 } else if (dg < 0) {
\r
156 var adjustIndex = this.findMarkAdjustIndex (newGapStart);
\r
157 var n = this.marks.size ();
\r
158 for (var i = adjustIndex; i < n; i++) {
\r
159 var mark = this.marks.elementAt (i);
\r
160 if (mark.index >= oldGapEnd) {
\r
162 }mark.index += gapSize;
\r
164 }this.resetMarksAtZero ();
\r
166 Clazz.defineMethod (c$, "resetMarksAtZero",
\r
168 if (this.marks != null && this.getGapStart () == 0) {
\r
169 var g1 = this.getGapEnd ();
\r
170 for (var counter = 0, maxCounter = this.marks.size (); counter < maxCounter; counter++) {
\r
171 var mark = this.marks.elementAt (counter);
\r
172 if (mark.index <= g1) {
\r
178 Clazz.defineMethod (c$, "shiftGapStartDown",
\r
179 function (newGapStart) {
\r
180 var adjustIndex = this.findMarkAdjustIndex (newGapStart);
\r
181 var n = this.marks.size ();
\r
182 var g0 = this.getGapStart ();
\r
183 var g1 = this.getGapEnd ();
\r
184 for (var i = adjustIndex; i < n; i++) {
\r
185 var mark = this.marks.elementAt (i);
\r
186 if (mark.index > g0) {
\r
190 Clazz.superCall (this, javax.swing.text.GapContent, "shiftGapStartDown", [newGapStart]);
\r
191 this.resetMarksAtZero ();
\r
193 Clazz.defineMethod (c$, "shiftGapEndUp",
\r
194 function (newGapEnd) {
\r
195 var adjustIndex = this.findMarkAdjustIndex (this.getGapEnd ());
\r
196 var n = this.marks.size ();
\r
197 for (var i = adjustIndex; i < n; i++) {
\r
198 var mark = this.marks.elementAt (i);
\r
199 if (mark.index >= newGapEnd) {
\r
201 }mark.index = newGapEnd;
\r
203 Clazz.superCall (this, javax.swing.text.GapContent, "shiftGapEndUp", [newGapEnd]);
\r
204 this.resetMarksAtZero ();
\r
206 Clazz.defineMethod (c$, "compare",
\r
207 function (o1, o2) {
\r
208 if (o1.index < o2.index) {
\r
210 } else if (o1.index > o2.index) {
\r
214 }}, "javax.swing.text.GapContent.MarkData,javax.swing.text.GapContent.MarkData");
\r
215 Clazz.defineMethod (c$, "findMarkAdjustIndex",
\r
216 function (searchIndex) {
\r
217 this.search.index = Math.max (searchIndex, 1);
\r
218 var index = this.findSortIndex (this.search);
\r
219 for (var i = index - 1; i >= 0; i--) {
\r
220 var d = this.marks.elementAt (i);
\r
221 if (d.index != this.search.index) {
\r
227 Clazz.defineMethod (c$, "findSortIndex",
\r
230 var upper = this.marks.size () - 1;
\r
235 var last = this.marks.elementAt (upper);
\r
236 cmp = this.compare (o, last);
\r
237 if (cmp > 0) return upper + 1;
\r
238 while (lower <= upper) {
\r
239 mid = lower + (Clazz.doubleToInt ((upper - lower) / 2));
\r
240 var entry = this.marks.elementAt (mid);
\r
241 cmp = this.compare (o, entry);
\r
244 } else if (cmp < 0) {
\r
249 return (cmp < 0) ? mid : mid + 1;
\r
250 }, "javax.swing.text.GapContent.MarkData");
\r
251 Clazz.defineMethod (c$, "removeUnusedMarks",
\r
253 var n = this.marks.size ();
\r
254 var cleaned = new javax.swing.text.GapContent.MarkVector (n);
\r
255 for (var i = 0; i < n; i++) {
\r
256 var mark = this.marks.elementAt (i);
\r
257 if (mark != null) {
\r
258 cleaned.addElement (mark);
\r
260 this.marks = cleaned;
\r
262 Clazz.defineMethod (c$, "getPositionsInRange",
\r
263 function (v, offset, length) {
\r
264 var endOffset = offset + length;
\r
267 var g0 = this.getGapStart ();
\r
268 var g1 = this.getGapEnd ();
\r
273 startIndex = this.findMarkAdjustIndex (offset);
\r
274 }if (endOffset >= g0) {
\r
275 endIndex = this.findMarkAdjustIndex (endOffset + (g1 - g0) + 1);
\r
277 endIndex = this.findMarkAdjustIndex (endOffset + 1);
\r
279 startIndex = this.findMarkAdjustIndex (offset + (g1 - g0));
\r
280 endIndex = this.findMarkAdjustIndex (endOffset + (g1 - g0) + 1);
\r
281 }var placeIn = (v == null) ? new java.util.Vector (Math.max (1, endIndex - startIndex)) : v;
\r
282 for (var counter = startIndex; counter < endIndex; counter++) {
\r
283 placeIn.addElement (Clazz.innerTypeInstance (javax.swing.text.GapContent.UndoPosRef, this, null, this.marks.elementAt (counter)));
\r
286 }, "java.util.Vector,~N,~N");
\r
287 Clazz.defineMethod (c$, "updateUndoPositions",
\r
288 function (positions, offset, length) {
\r
289 var endOffset = offset + length;
\r
290 var g1 = this.getGapEnd ();
\r
292 var endIndex = this.findMarkAdjustIndex (g1 + 1);
\r
294 startIndex = this.findMarkAdjustIndex (g1);
\r
297 }for (var counter = positions.size () - 1; counter >= 0; counter--) {
\r
298 var ref = positions.elementAt (counter);
\r
299 ref.resetLocation (endOffset, g1);
\r
301 if (startIndex < endIndex) {
\r
302 var sorted = new Array (endIndex - startIndex);
\r
306 for (counter = startIndex; counter < endIndex; counter++) {
\r
307 var mark = this.marks.elementAt (counter);
\r
308 if (mark.index == 0) {
\r
309 sorted[addIndex++] = mark;
\r
311 for (counter = startIndex; counter < endIndex; counter++) {
\r
312 var mark = this.marks.elementAt (counter);
\r
313 if (mark.index != 0) {
\r
314 sorted[addIndex++] = mark;
\r
317 for (counter = startIndex; counter < endIndex; counter++) {
\r
318 var mark = this.marks.elementAt (counter);
\r
319 if (mark.index != g1) {
\r
320 sorted[addIndex++] = mark;
\r
322 for (counter = startIndex; counter < endIndex; counter++) {
\r
323 var mark = this.marks.elementAt (counter);
\r
324 if (mark.index == g1) {
\r
325 sorted[addIndex++] = mark;
\r
327 }this.marks.replaceRange (startIndex, endIndex, sorted);
\r
328 }}, "java.util.Vector,~N,~N");
\r
329 c$.$GapContent$MarkData$ = function () {
\r
330 Clazz.pu$h(self.c$);
\r
331 c$ = Clazz.decorateAsClass (function () {
\r
332 Clazz.prepareCallback (this, arguments);
\r
335 Clazz.instantialize (this, arguments);
\r
336 }, javax.swing.text.GapContent, "MarkData");
\r
337 Clazz.makeConstructor (c$,
\r
341 Clazz.makeConstructor (c$,
\r
345 }, "~N,javax.swing.text.GapContent.StickyPosition");
\r
346 Clazz.defineMethod (c$, "getOffset",
\r
348 var a = this.b$["javax.swing.text.GapContent"].getGapStart ();
\r
349 var b = this.b$["javax.swing.text.GapContent"].getGapEnd ();
\r
350 var c = (this.index < a) ? this.index : this.index - (b - a);
\r
351 return Math.max (c, 0);
\r
353 Clazz.defineMethod (c$, "getPosition",
\r
359 c$.$GapContent$StickyPosition$ = function () {
\r
360 Clazz.pu$h(self.c$);
\r
361 c$ = Clazz.decorateAsClass (function () {
\r
362 Clazz.prepareCallback (this, arguments);
\r
364 Clazz.instantialize (this, arguments);
\r
365 }, javax.swing.text.GapContent, "StickyPosition", null, javax.swing.text.Position);
\r
366 Clazz.makeConstructor (c$,
\r
369 Clazz.defineMethod (c$, "setMark",
\r
372 }, "javax.swing.text.GapContent.MarkData");
\r
373 Clazz.overrideMethod (c$, "getOffset",
\r
375 return this.mark.getOffset ();
\r
377 Clazz.overrideMethod (c$, "toString",
\r
379 return Integer.toString (this.getOffset ());
\r
383 c$.$GapContent$UndoPosRef$ = function () {
\r
384 Clazz.pu$h(self.c$);
\r
385 c$ = Clazz.decorateAsClass (function () {
\r
386 Clazz.prepareCallback (this, arguments);
\r
387 this.undoLocation = 0;
\r
389 Clazz.instantialize (this, arguments);
\r
390 }, javax.swing.text.GapContent, "UndoPosRef");
\r
391 Clazz.makeConstructor (c$,
\r
394 this.undoLocation = a.getOffset ();
\r
395 }, "javax.swing.text.GapContent.MarkData");
\r
396 Clazz.defineMethod (c$, "resetLocation",
\r
398 if (this.undoLocation != a) {
\r
399 this.rec.index = this.undoLocation;
\r
401 this.rec.index = b;
\r
405 c$.$GapContent$InsertUndo$ = function () {
\r
406 Clazz.pu$h(self.c$);
\r
407 c$ = Clazz.decorateAsClass (function () {
\r
408 Clazz.prepareCallback (this, arguments);
\r
411 this.string = null;
\r
412 this.posRefs = null;
\r
413 Clazz.instantialize (this, arguments);
\r
414 }, javax.swing.text.GapContent, "InsertUndo", javax.swing.undo.AbstractUndoableEdit);
\r
415 Clazz.makeConstructor (c$,
\r
417 Clazz.superConstructor (this, javax.swing.text.GapContent.InsertUndo);
\r
421 Clazz.defineMethod (c$, "undo",
\r
423 Clazz.superCall (this, javax.swing.text.GapContent.InsertUndo, "undo", []);
\r
425 this.posRefs = this.b$["javax.swing.text.GapContent"].getPositionsInRange (null, this.offset, this.length);
\r
426 this.string = this.b$["javax.swing.text.GapContent"].getString (this.offset, this.length);
\r
427 this.b$["javax.swing.text.GapContent"].remove (this.offset, this.length);
\r
429 if (Clazz.exceptionOf (bl, javax.swing.text.BadLocationException)) {
\r
430 throw new javax.swing.undo.CannotUndoException ();
\r
436 Clazz.defineMethod (c$, "redo",
\r
438 Clazz.superCall (this, javax.swing.text.GapContent.InsertUndo, "redo", []);
\r
440 this.b$["javax.swing.text.GapContent"].insertString (this.offset, this.string);
\r
441 this.string = null;
\r
442 if (this.posRefs != null) {
\r
443 this.b$["javax.swing.text.GapContent"].updateUndoPositions (this.posRefs, this.offset, this.length);
\r
444 this.posRefs = null;
\r
446 if (Clazz.exceptionOf (bl, javax.swing.text.BadLocationException)) {
\r
447 throw new javax.swing.undo.CannotRedoException ();
\r
455 c$.$GapContent$RemoveUndo$ = function () {
\r
456 Clazz.pu$h(self.c$);
\r
457 c$ = Clazz.decorateAsClass (function () {
\r
458 Clazz.prepareCallback (this, arguments);
\r
461 this.string = null;
\r
462 this.posRefs = null;
\r
463 Clazz.instantialize (this, arguments);
\r
464 }, javax.swing.text.GapContent, "RemoveUndo", javax.swing.undo.AbstractUndoableEdit);
\r
465 Clazz.makeConstructor (c$,
\r
467 Clazz.superConstructor (this, javax.swing.text.GapContent.RemoveUndo);
\r
470 this.length = b.length;
\r
471 this.posRefs = this.b$["javax.swing.text.GapContent"].getPositionsInRange (null, a, this.length);
\r
473 Clazz.defineMethod (c$, "undo",
\r
475 Clazz.superCall (this, javax.swing.text.GapContent.RemoveUndo, "undo", []);
\r
477 this.b$["javax.swing.text.GapContent"].insertString (this.offset, this.string);
\r
478 if (this.posRefs != null) {
\r
479 this.b$["javax.swing.text.GapContent"].updateUndoPositions (this.posRefs, this.offset, this.length);
\r
480 this.posRefs = null;
\r
481 }this.string = null;
\r
483 if (Clazz.exceptionOf (bl, javax.swing.text.BadLocationException)) {
\r
484 throw new javax.swing.undo.CannotUndoException ();
\r
490 Clazz.defineMethod (c$, "redo",
\r
492 Clazz.superCall (this, javax.swing.text.GapContent.RemoveUndo, "redo", []);
\r
494 this.string = this.b$["javax.swing.text.GapContent"].getString (this.offset, this.length);
\r
495 this.posRefs = this.b$["javax.swing.text.GapContent"].getPositionsInRange (null, this.offset, this.length);
\r
496 this.b$["javax.swing.text.GapContent"].remove (this.offset, this.length);
\r
498 if (Clazz.exceptionOf (bl, javax.swing.text.BadLocationException)) {
\r
499 throw new javax.swing.undo.CannotRedoException ();
\r
507 Clazz.pu$h(self.c$);
\r
508 c$ = Clazz.decorateAsClass (function () {
\r
509 this.oneMark = null;
\r
510 Clazz.instantialize (this, arguments);
\r
511 }, javax.swing.text.GapContent, "MarkVector", javax.swing.text.GapVector);
\r
512 Clazz.prepareFields (c$, function () {
\r
513 this.oneMark = new Array (1);
\r
515 Clazz.overrideMethod (c$, "allocateArray",
\r
517 return new Array (a);
\r
519 Clazz.overrideMethod (c$, "getArrayLength",
\r
521 var a = this.getArray ();
\r
524 Clazz.defineMethod (c$, "size",
\r
526 var a = this.getArrayLength () - (this.getGapEnd () - this.getGapStart ());
\r
529 Clazz.defineMethod (c$, "insertElementAt",
\r
531 this.oneMark[0] = a;
\r
532 this.replace (b, 0, this.oneMark, 1);
\r
533 }, "javax.swing.text.GapContent.MarkData,~N");
\r
534 Clazz.defineMethod (c$, "addElement",
\r
536 this.insertElementAt (a, this.size ());
\r
537 }, "javax.swing.text.GapContent.MarkData");
\r
538 Clazz.defineMethod (c$, "elementAt",
\r
540 var b = this.getGapStart ();
\r
541 var c = this.getGapEnd ();
\r
542 var d = this.getArray ();
\r
549 Clazz.defineMethod (c$, "replaceRange",
\r
550 function (a, b, c) {
\r
551 var d = this.getGapStart ();
\r
552 var e = this.getGapEnd ();
\r
555 var h = this.getArray ();
\r
559 } else if (b >= d) {
\r
574 Clazz.defineStatics (c$,
\r
575 "empty", Clazz.newCharArray (0, '\0'),
\r
576 "GROWTH_SIZE", 524288);
\r