1 Clazz.declarePackage ("javax.swing.text");
\r
2 Clazz.load (["javax.swing.text.AbstractDocument", "java.util.Vector"], "javax.swing.text.PlainDocument", ["java.lang.Boolean", "$.Error", "$.StringBuffer", "javax.swing.text.Segment", "$.Utilities"], function () {
\r
3 c$ = Clazz.decorateAsClass (function () {
\r
4 this.defaultRoot = null;
\r
8 Clazz.instantialize (this, arguments);
\r
9 }, javax.swing.text, "PlainDocument", javax.swing.text.AbstractDocument);
\r
10 Clazz.prepareFields (c$, function () {
\r
11 this.added = new java.util.Vector ();
\r
12 this.removed = new java.util.Vector ();
\r
14 Clazz.makeConstructor (c$,
\r
16 this.construct (null);
\r
18 Clazz.makeConstructor (c$,
\r
20 Clazz.superConstructor (this, javax.swing.text.PlainDocument, [c]);
\r
21 this.putProperty ("tabSize", new Integer (8));
\r
22 this.defaultRoot = this.createDefaultRoot ();
\r
23 }, "javax.swing.text.AbstractDocument.Content");
\r
24 Clazz.defineMethod (c$, "insertString",
\r
25 function (offs, str, a) {
\r
26 var filterNewlines = this.getProperty ("filterNewlines");
\r
27 if ((Clazz.instanceOf (filterNewlines, Boolean)) && filterNewlines.equals (Boolean.TRUE)) {
\r
28 if ((str != null) && (str.indexOf ('\n') >= 0)) {
\r
29 var filtered = new StringBuffer (str);
\r
30 var n = filtered.length ();
\r
31 for (var i = 0; i < n; i++) {
\r
32 if (filtered.charAt (i) == '\n') {
\r
33 filtered.setCharAt (i, ' ');
\r
35 str = filtered.toString ();
\r
36 }}Clazz.superCall (this, javax.swing.text.PlainDocument, "insertString", [offs, str, a]);
\r
37 }, "~N,~S,javax.swing.text.AttributeSet");
\r
38 Clazz.overrideMethod (c$, "getDefaultRootElement",
\r
40 return this.defaultRoot;
\r
42 Clazz.defineMethod (c$, "createDefaultRoot",
\r
44 var map = this.createBranchElement (null, null);
\r
45 var line = this.createLeafElement (map, null, 0, 1);
\r
46 var lines = new Array (1);
\r
48 map.replace (0, 0, lines);
\r
51 Clazz.overrideMethod (c$, "getParagraphElement",
\r
53 var lineMap = this.getDefaultRootElement ();
\r
54 return lineMap.getElement (lineMap.getElementIndex (pos));
\r
56 Clazz.defineMethod (c$, "insertUpdate",
\r
57 function (chng, attr) {
\r
58 this.removed.removeAllElements ();
\r
59 this.added.removeAllElements ();
\r
60 var lineMap = this.getDefaultRootElement ();
\r
61 var offset = chng.getOffset ();
\r
62 var length = chng.getLength ();
\r
66 }var index = lineMap.getElementIndex (offset);
\r
67 var rmCandidate = lineMap.getElement (index);
\r
68 var rmOffs0 = rmCandidate.getStartOffset ();
\r
69 var rmOffs1 = rmCandidate.getEndOffset ();
\r
70 var lastOffset = rmOffs0;
\r
72 if (this.s == null) {
\r
73 this.s = new javax.swing.text.Segment ();
\r
74 }this.getContent ().getChars (offset, length, this.s);
\r
75 var hasBreaks = false;
\r
76 for (var i = 0; i < length; i++) {
\r
77 var c = this.s.array[this.s.offset + i];
\r
79 var breakOffset = offset + i + 1;
\r
80 this.added.addElement (this.createLeafElement (lineMap, null, lastOffset, breakOffset));
\r
81 lastOffset = breakOffset;
\r
86 this.removed.addElement (rmCandidate);
\r
87 if ((offset + length == rmOffs1) && (lastOffset != rmOffs1) && ((index + 1) < lineMap.getElementCount ())) {
\r
89 var e = lineMap.getElement (index + 1);
\r
90 this.removed.addElement (e);
\r
91 rmOffs1 = e.getEndOffset ();
\r
92 }if (lastOffset < rmOffs1) {
\r
93 this.added.addElement (this.createLeafElement (lineMap, null, lastOffset, rmOffs1));
\r
94 }var aelems = new Array (this.added.size ());
\r
95 this.added.copyInto (aelems);
\r
96 var relems = new Array (this.removed.size ());
\r
97 this.removed.copyInto (relems);
\r
98 var ee = new javax.swing.text.AbstractDocument.ElementEdit (lineMap, index, relems, aelems);
\r
100 lineMap.replace (index, relems.length, aelems);
\r
101 }if (javax.swing.text.Utilities.isComposedTextAttributeDefined (attr)) {
\r
102 this.insertComposedTextUpdate (chng, attr);
\r
104 if (Clazz.exceptionOf (e, javax.swing.text.BadLocationException)) {
\r
105 throw new Error ("Internal error: " + e.toString ());
\r
110 Clazz.superCall (this, javax.swing.text.PlainDocument, "insertUpdate", [chng, attr]);
\r
111 }, "javax.swing.text.AbstractDocument.DefaultDocumentEvent,javax.swing.text.AttributeSet");
\r
112 Clazz.defineMethod (c$, "removeUpdate",
\r
114 this.removed.removeAllElements ();
\r
115 var map = this.getDefaultRootElement ();
\r
116 var offset = chng.getOffset ();
\r
117 var length = chng.getLength ();
\r
118 var line0 = map.getElementIndex (offset);
\r
119 var line1 = map.getElementIndex (offset + length);
\r
120 if (line0 != line1) {
\r
121 for (var i = line0; i <= line1; i++) {
\r
122 this.removed.addElement (map.getElement (i));
\r
124 var p0 = map.getElement (line0).getStartOffset ();
\r
125 var p1 = map.getElement (line1).getEndOffset ();
\r
126 var aelems = new Array (1);
\r
127 aelems[0] = this.createLeafElement (map, null, p0, p1);
\r
128 var relems = new Array (this.removed.size ());
\r
129 this.removed.copyInto (relems);
\r
130 var ee = new javax.swing.text.AbstractDocument.ElementEdit (map, line0, relems, aelems);
\r
132 map.replace (line0, relems.length, aelems);
\r
134 var line = map.getElement (line0);
\r
135 if (!line.isLeaf ()) {
\r
136 var leaf = line.getElement (line.getElementIndex (offset));
\r
137 if (javax.swing.text.Utilities.isComposedTextElement (leaf)) {
\r
138 var aelem = new Array (1);
\r
139 aelem[0] = this.createLeafElement (map, null, line.getStartOffset (), line.getEndOffset ());
\r
140 var relem = new Array (1);
\r
142 var ee = new javax.swing.text.AbstractDocument.ElementEdit (map, line0, relem, aelem);
\r
144 map.replace (line0, 1, aelem);
\r
145 }}}Clazz.superCall (this, javax.swing.text.PlainDocument, "removeUpdate", [chng]);
\r
146 }, "javax.swing.text.AbstractDocument.DefaultDocumentEvent");
\r
147 Clazz.defineMethod (c$, "insertComposedTextUpdate",
\r
148 function (chng, attr) {
\r
149 this.added.removeAllElements ();
\r
150 var lineMap = this.getDefaultRootElement ();
\r
151 var offset = chng.getOffset ();
\r
152 var length = chng.getLength ();
\r
153 var index = lineMap.getElementIndex (offset);
\r
154 var elem = lineMap.getElement (index);
\r
155 var elemStart = elem.getStartOffset ();
\r
156 var elemEnd = elem.getEndOffset ();
\r
157 var abelem = new Array (1);
\r
158 abelem[0] = this.createBranchElement (lineMap, null);
\r
159 var relem = new Array (1);
\r
161 if (elemStart != offset) this.added.addElement (this.createLeafElement (abelem[0], null, elemStart, offset));
\r
162 this.added.addElement (this.createLeafElement (abelem[0], attr, offset, offset + length));
\r
163 if (elemEnd != offset + length) this.added.addElement (this.createLeafElement (abelem[0], null, offset + length, elemEnd));
\r
164 var alelem = new Array (this.added.size ());
\r
165 this.added.copyInto (alelem);
\r
166 var ee = new javax.swing.text.AbstractDocument.ElementEdit (lineMap, index, relem, abelem);
\r
168 abelem[0].replace (0, 0, alelem);
\r
169 lineMap.replace (index, 1, abelem);
\r
170 }, "javax.swing.text.AbstractDocument.DefaultDocumentEvent,javax.swing.text.AttributeSet");
\r
171 Clazz.overrideMethod (c$, "render",
\r
174 Clazz.defineStatics (c$,
\r
175 "tabSizeAttribute", "tabSize",
\r
176 "lineLimitAttribute", "lineLimit");
\r