91e14d8a03a7221fb5833247078f75338168c69d
[jalviewjs.git] / site / j2s / javax / swing / text / PlainDocument.js
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
5 this.added = null;\r
6 this.removed = null;\r
7 this.s = 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
13 });\r
14 Clazz.makeConstructor (c$, \r
15 function () {\r
16 this.construct (null);\r
17 });\r
18 Clazz.makeConstructor (c$, \r
19 function (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
34 }}\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
39 function () {\r
40 return this.defaultRoot;\r
41 });\r
42 Clazz.defineMethod (c$, "createDefaultRoot", \r
43 function () {\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
47 lines[0] = line;\r
48 map.replace (0, 0, lines);\r
49 return map;\r
50 });\r
51 Clazz.overrideMethod (c$, "getParagraphElement", \r
52 function (pos) {\r
53 var lineMap = this.getDefaultRootElement ();\r
54 return lineMap.getElement (lineMap.getElementIndex (pos));\r
55 }, "~N");\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
63 if (offset > 0) {\r
64 offset -= 1;\r
65 length += 1;\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
71 try {\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
78 if (c == '\n') {\r
79 var breakOffset = offset + i + 1;\r
80 this.added.addElement (this.createLeafElement (lineMap, null, lastOffset, breakOffset));\r
81 lastOffset = breakOffset;\r
82 hasBreaks = true;\r
83 }}\r
84 if (hasBreaks) {\r
85 var rmCount = 1;\r
86 this.removed.addElement (rmCandidate);\r
87 if ((offset + length == rmOffs1) && (lastOffset != rmOffs1) && ((index + 1) < lineMap.getElementCount ())) {\r
88 rmCount += 1;\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
99 chng.addEdit (ee);\r
100 lineMap.replace (index, relems.length, aelems);\r
101 }if (javax.swing.text.Utilities.isComposedTextAttributeDefined (attr)) {\r
102 this.insertComposedTextUpdate (chng, attr);\r
103 }} catch (e) {\r
104 if (Clazz.exceptionOf (e, javax.swing.text.BadLocationException)) {\r
105 throw  new Error ("Internal error: " + e.toString ());\r
106 } else {\r
107 throw e;\r
108 }\r
109 }\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
113 function (chng) {\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
123 }\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
131 chng.addEdit (ee);\r
132 map.replace (line0, relems.length, aelems);\r
133 } else {\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
141 relem[0] = line;\r
142 var ee =  new javax.swing.text.AbstractDocument.ElementEdit (map, line0, relem, aelem);\r
143 chng.addEdit (ee);\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
160 relem[0] = elem;\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
167 chng.addEdit (ee);\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
172 function (r) {\r
173 }, "Runnable");\r
174 Clazz.defineStatics (c$,\r
175 "tabSizeAttribute", "tabSize",\r
176 "lineLimitAttribute", "lineLimit");\r
177 });\r