1 Clazz.declarePackage ("javax.swing.text");
2 Clazz.load (["javax.swing.text.AbstractDocument", "$.Position", "javax.swing.undo.AbstractUndoableEdit"], "javax.swing.text.StringContent", ["java.util.Vector", "javax.swing.text.BadLocationException", "javax.swing.undo.CannotRedoException", "$.CannotUndoException"], function () {
3 c$ = Clazz.decorateAsClass (function () {
7 if (!Clazz.isClassDefined ("javax.swing.text.StringContent.PosRec")) {
8 javax.swing.text.StringContent.$StringContent$PosRec$ ();
10 if (!Clazz.isClassDefined ("javax.swing.text.StringContent.StickyPosition")) {
11 javax.swing.text.StringContent.$StringContent$StickyPosition$ ();
13 if (!Clazz.isClassDefined ("javax.swing.text.StringContent.UndoPosRef")) {
14 javax.swing.text.StringContent.$StringContent$UndoPosRef$ ();
16 if (!Clazz.isClassDefined ("javax.swing.text.StringContent.InsertUndo")) {
17 javax.swing.text.StringContent.$StringContent$InsertUndo$ ();
19 if (!Clazz.isClassDefined ("javax.swing.text.StringContent.RemoveUndo")) {
20 javax.swing.text.StringContent.$StringContent$RemoveUndo$ ();
22 Clazz.instantialize (this, arguments);
23 }, javax.swing.text, "StringContent", null, javax.swing.text.AbstractDocument.Content);
24 Clazz.makeConstructor (c$,
28 Clazz.makeConstructor (c$,
29 function (initialLength) {
30 if (initialLength < 1) {
32 }this.data = Clazz.newCharArray (initialLength, '\0');
36 Clazz.overrideMethod (c$, "length",
40 Clazz.overrideMethod (c$, "insertString",
41 function (where, str) {
42 if (where >= this.count || where < 0) {
43 throw new javax.swing.text.BadLocationException ("Invalid location", this.count);
44 }var chars = str.toCharArray ();
45 this.replace (where, 0, chars, 0, chars.length);
46 if (this.marks != null) {
47 this.updateMarksForInsert (where, str.length);
48 }return Clazz.innerTypeInstance (javax.swing.text.StringContent.InsertUndo, this, null, where, str.length);
50 Clazz.overrideMethod (c$, "remove",
51 function (where, nitems) {
52 if (where + nitems >= this.count) {
53 throw new javax.swing.text.BadLocationException ("Invalid range", this.count);
54 }var removedString = this.getString (where, nitems);
55 var edit = Clazz.innerTypeInstance (javax.swing.text.StringContent.RemoveUndo, this, null, where, removedString);
56 this.replace (where, nitems, javax.swing.text.StringContent.empty, 0, 0);
57 if (this.marks != null) {
58 this.updateMarksForRemove (where, nitems);
61 Clazz.overrideMethod (c$, "getString",
62 function (where, len) {
63 if (where + len > this.count) {
64 throw new javax.swing.text.BadLocationException ("Invalid range", this.count);
65 }return String.instantialize (this.data, where, len);
67 Clazz.overrideMethod (c$, "getChars",
68 function (where, len, chars) {
69 if (where + len > this.count) {
70 throw new javax.swing.text.BadLocationException ("Invalid location", this.count);
71 }chars.array = this.data;
74 }, "~N,~N,javax.swing.text.Segment");
75 Clazz.overrideMethod (c$, "createPosition",
77 if (this.marks == null) {
78 this.marks = new java.util.Vector ();
79 }return Clazz.innerTypeInstance (javax.swing.text.StringContent.StickyPosition, this, null, offset);
81 Clazz.defineMethod (c$, "replace",
82 function (offset, length, replArray, replOffset, replLength) {
83 var delta = replLength - length;
84 var src = offset + length;
85 var nmove = this.count - src;
86 var dest = src + delta;
87 if ((this.count + delta) >= this.data.length) {
88 var newLength = Math.max (2 * this.data.length, this.count + delta);
89 var newData = Clazz.newCharArray (newLength, '\0');
90 System.arraycopy (this.data, 0, newData, 0, offset);
91 System.arraycopy (replArray, replOffset, newData, offset, replLength);
92 System.arraycopy (this.data, src, newData, dest, nmove);
95 System.arraycopy (this.data, src, this.data, dest, nmove);
96 System.arraycopy (replArray, replOffset, this.data, offset, replLength);
97 }this.count = this.count + delta;
99 Clazz.defineMethod (c$, "resize",
101 var ndata = Clazz.newCharArray (ncount, '\0');
102 System.arraycopy (this.data, 0, ndata, 0, Math.min (ncount, this.count));
105 Clazz.defineMethod (c$, "updateMarksForInsert",
106 function (offset, length) {
109 }var n = this.marks.size ();
110 for (var i = 0; i < n; i++) {
111 var mark = this.marks.elementAt (i);
113 this.marks.removeElementAt (i);
116 } else if (mark.offset >= offset) {
117 mark.offset += length;
120 Clazz.defineMethod (c$, "updateMarksForRemove",
121 function (offset, length) {
122 var n = this.marks.size ();
123 for (var i = 0; i < n; i++) {
124 var mark = this.marks.elementAt (i);
126 this.marks.removeElementAt (i);
129 } else if (mark.offset >= (offset + length)) {
130 mark.offset -= length;
131 } else if (mark.offset >= offset) {
132 mark.offset = offset;
135 Clazz.defineMethod (c$, "getPositionsInRange",
136 function (v, offset, length) {
137 var n = this.marks.size ();
138 var end = offset + length;
139 var placeIn = (v == null) ? new java.util.Vector () : v;
140 for (var i = 0; i < n; i++) {
141 var mark = this.marks.elementAt (i);
143 this.marks.removeElementAt (i);
146 } else if (mark.offset >= offset && mark.offset <= end) placeIn.addElement (Clazz.innerTypeInstance (javax.swing.text.StringContent.UndoPosRef, this, null, mark));
149 }, "java.util.Vector,~N,~N");
150 Clazz.defineMethod (c$, "updateUndoPositions",
151 function (positions) {
152 for (var counter = positions.size () - 1; counter >= 0; counter--) {
153 var ref = positions.elementAt (counter);
154 if (ref.rec.unused) {
155 positions.removeElementAt (counter);
156 } else ref.resetLocation ();
158 }, "java.util.Vector");
159 c$.$StringContent$PosRec$ = function () {
161 c$ = Clazz.decorateAsClass (function () {
162 Clazz.prepareCallback (this, arguments);
165 Clazz.instantialize (this, arguments);
166 }, javax.swing.text.StringContent, "PosRec");
167 Clazz.makeConstructor (c$,
173 c$.$StringContent$StickyPosition$ = function () {
175 c$ = Clazz.decorateAsClass (function () {
176 Clazz.prepareCallback (this, arguments);
178 Clazz.instantialize (this, arguments);
179 }, javax.swing.text.StringContent, "StickyPosition", null, javax.swing.text.Position);
180 Clazz.makeConstructor (c$,
182 this.rec = Clazz.innerTypeInstance (javax.swing.text.StringContent.PosRec, this, null, a);
183 this.b$["javax.swing.text.StringContent"].marks.addElement (this.rec);
185 Clazz.overrideMethod (c$, "getOffset",
187 return this.rec.offset;
189 Clazz.overrideMethod (c$, "finalize",
191 this.rec.unused = true;
193 Clazz.overrideMethod (c$, "toString",
195 return Integer.toString (this.getOffset ());
199 c$.$StringContent$UndoPosRef$ = function () {
201 c$ = Clazz.decorateAsClass (function () {
202 Clazz.prepareCallback (this, arguments);
203 this.undoLocation = 0;
205 Clazz.instantialize (this, arguments);
206 }, javax.swing.text.StringContent, "UndoPosRef");
207 Clazz.makeConstructor (c$,
210 this.undoLocation = a.offset;
211 }, "javax.swing.text.StringContent.PosRec");
212 Clazz.defineMethod (c$, "resetLocation",
214 this.rec.offset = this.undoLocation;
218 c$.$StringContent$InsertUndo$ = function () {
220 c$ = Clazz.decorateAsClass (function () {
221 Clazz.prepareCallback (this, arguments);
226 Clazz.instantialize (this, arguments);
227 }, javax.swing.text.StringContent, "InsertUndo", javax.swing.undo.AbstractUndoableEdit);
228 Clazz.makeConstructor (c$,
230 Clazz.superConstructor (this, javax.swing.text.StringContent.InsertUndo);
234 Clazz.defineMethod (c$, "undo",
236 Clazz.superCall (this, javax.swing.text.StringContent.InsertUndo, "undo", []);
239 if (this.b$["javax.swing.text.StringContent"].marks != null) this.posRefs = this.b$["javax.swing.text.StringContent"].getPositionsInRange (null, this.offset, this.length);
240 this.string = this.b$["javax.swing.text.StringContent"].getString (this.offset, this.length);
241 this.b$["javax.swing.text.StringContent"].remove (this.offset, this.length);
243 if (Clazz.exceptionOf (bl, javax.swing.text.BadLocationException)) {
244 throw new javax.swing.undo.CannotUndoException ();
250 Clazz.defineMethod (c$, "redo",
252 Clazz.superCall (this, javax.swing.text.StringContent.InsertUndo, "redo", []);
255 this.b$["javax.swing.text.StringContent"].insertString (this.offset, this.string);
257 if (this.posRefs != null) {
258 this.b$["javax.swing.text.StringContent"].updateUndoPositions (this.posRefs);
261 if (Clazz.exceptionOf (bl, javax.swing.text.BadLocationException)) {
262 throw new javax.swing.undo.CannotRedoException ();
270 c$.$StringContent$RemoveUndo$ = function () {
272 c$ = Clazz.decorateAsClass (function () {
273 Clazz.prepareCallback (this, arguments);
278 Clazz.instantialize (this, arguments);
279 }, javax.swing.text.StringContent, "RemoveUndo", javax.swing.undo.AbstractUndoableEdit);
280 Clazz.makeConstructor (c$,
282 Clazz.superConstructor (this, javax.swing.text.StringContent.RemoveUndo);
285 this.length = b.length;
286 if (this.b$["javax.swing.text.StringContent"].marks != null) this.posRefs = this.b$["javax.swing.text.StringContent"].getPositionsInRange (null, a, this.length);
288 Clazz.defineMethod (c$, "undo",
290 Clazz.superCall (this, javax.swing.text.StringContent.RemoveUndo, "undo", []);
293 this.b$["javax.swing.text.StringContent"].insertString (this.offset, this.string);
294 if (this.posRefs != null) {
295 this.b$["javax.swing.text.StringContent"].updateUndoPositions (this.posRefs);
299 if (Clazz.exceptionOf (bl, javax.swing.text.BadLocationException)) {
300 throw new javax.swing.undo.CannotUndoException ();
306 Clazz.defineMethod (c$, "redo",
308 Clazz.superCall (this, javax.swing.text.StringContent.RemoveUndo, "redo", []);
311 this.string = this.b$["javax.swing.text.StringContent"].getString (this.offset, this.length);
312 if (this.b$["javax.swing.text.StringContent"].marks != null) this.posRefs = this.b$["javax.swing.text.StringContent"].getPositionsInRange (null, this.offset, this.length);
313 this.b$["javax.swing.text.StringContent"].remove (this.offset, this.length);
315 if (Clazz.exceptionOf (bl, javax.swing.text.BadLocationException)) {
316 throw new javax.swing.undo.CannotRedoException ();
324 Clazz.defineStatics (c$,
325 "empty", Clazz.newCharArray (0, '\0'));