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