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