JAL-1807 Bob's JalviewJS prototype first commit
[jalviewjs.git] / site / swingjs / j2s / javax / swing / text / ElementIterator.js
1 Clazz.declarePackage ("javax.swing.text");\r
2 Clazz.load (null, "javax.swing.text.ElementIterator", ["java.lang.CloneNotSupportedException", "$.InternalError", "java.util.Stack"], function () {\r
3 c$ = Clazz.decorateAsClass (function () {\r
4 this.root = null;\r
5 this.elementStack = null;\r
6 if (!Clazz.isClassDefined ("javax.swing.text.ElementIterator.StackItem")) {\r
7 javax.swing.text.ElementIterator.$ElementIterator$StackItem$ ();\r
8 }\r
9 Clazz.instantialize (this, arguments);\r
10 }, javax.swing.text, "ElementIterator", null, Cloneable);\r
11 Clazz.makeConstructor (c$, \r
12 function (document) {\r
13 this.root = document.getDefaultRootElement ();\r
14 }, "javax.swing.text.Document");\r
15 Clazz.makeConstructor (c$, \r
16 function (root) {\r
17 this.root = root;\r
18 }, "javax.swing.text.Element");\r
19 Clazz.defineMethod (c$, "clone", \r
20 function () {\r
21 try {\r
22 var it =  new javax.swing.text.ElementIterator (this.root);\r
23 if (this.elementStack != null) {\r
24 it.elementStack =  new java.util.Stack ();\r
25 for (var i = 0; i < this.elementStack.size (); i++) {\r
26 var item = this.elementStack.elementAt (i);\r
27 var clonee = item.clone ();\r
28 it.elementStack.push (clonee);\r
29 }\r
30 }return it;\r
31 } catch (e) {\r
32 if (Clazz.exceptionOf (e, CloneNotSupportedException)) {\r
33 throw  new InternalError ();\r
34 } else {\r
35 throw e;\r
36 }\r
37 }\r
38 });\r
39 Clazz.defineMethod (c$, "first", \r
40 function () {\r
41 if (this.root == null) {\r
42 return null;\r
43 }this.elementStack =  new java.util.Stack ();\r
44 if (this.root.getElementCount () != 0) {\r
45 this.elementStack.push (Clazz.innerTypeInstance (javax.swing.text.ElementIterator.StackItem, this, null, this.root));\r
46 }return this.root;\r
47 });\r
48 Clazz.defineMethod (c$, "depth", \r
49 function () {\r
50 if (this.elementStack == null) {\r
51 return 0;\r
52 }return this.elementStack.size ();\r
53 });\r
54 Clazz.defineMethod (c$, "current", \r
55 function () {\r
56 if (this.elementStack == null) {\r
57 return this.first ();\r
58 }if (!this.elementStack.empty ()) {\r
59 var item = this.elementStack.peek ();\r
60 var elem = item.getElement ();\r
61 var index = item.getIndex ();\r
62 if (index == -1) {\r
63 return elem;\r
64 }return elem.getElement (index);\r
65 }return null;\r
66 });\r
67 Clazz.defineMethod (c$, "next", \r
68 function () {\r
69 if (this.elementStack == null) {\r
70 return this.first ();\r
71 }if (this.elementStack.isEmpty ()) {\r
72 return null;\r
73 }var item = this.elementStack.peek ();\r
74 var elem = item.getElement ();\r
75 var index = item.getIndex ();\r
76 if (index + 1 < elem.getElementCount ()) {\r
77 var child = elem.getElement (index + 1);\r
78 if (child.isLeaf ()) {\r
79 item.incrementIndex ();\r
80 } else {\r
81 this.elementStack.push (Clazz.innerTypeInstance (javax.swing.text.ElementIterator.StackItem, this, null, child));\r
82 }return child;\r
83 } else {\r
84 this.elementStack.pop ();\r
85 if (!this.elementStack.isEmpty ()) {\r
86 var top = this.elementStack.peek ();\r
87 top.incrementIndex ();\r
88 return this.next ();\r
89 }}return null;\r
90 });\r
91 Clazz.defineMethod (c$, "previous", \r
92 function () {\r
93 var stackSize;\r
94 if (this.elementStack == null || (stackSize = this.elementStack.size ()) == 0) {\r
95 return null;\r
96 }var item = this.elementStack.peek ();\r
97 var elem = item.getElement ();\r
98 var index = item.getIndex ();\r
99 if (index > 0) {\r
100 return this.getDeepestLeaf (elem.getElement (--index));\r
101 } else if (index == 0) {\r
102 return elem;\r
103 } else if (index == -1) {\r
104 if (stackSize == 1) {\r
105 return null;\r
106 }var top = this.elementStack.pop ();\r
107 item = this.elementStack.peek ();\r
108 this.elementStack.push (top);\r
109 elem = item.getElement ();\r
110 index = item.getIndex ();\r
111 return ((index == -1) ? elem : this.getDeepestLeaf (elem.getElement (index)));\r
112 }return null;\r
113 });\r
114 Clazz.defineMethod (c$, "getDeepestLeaf", \r
115  function (parent) {\r
116 if (parent.isLeaf ()) {\r
117 return parent;\r
118 }var childCount = parent.getElementCount ();\r
119 if (childCount == 0) {\r
120 return parent;\r
121 }return this.getDeepestLeaf (parent.getElement (childCount - 1));\r
122 }, "javax.swing.text.Element");\r
123 c$.$ElementIterator$StackItem$ = function () {\r
124 Clazz.pu$h(self.c$);\r
125 c$ = Clazz.decorateAsClass (function () {\r
126 Clazz.prepareCallback (this, arguments);\r
127 this.item = null;\r
128 this.childIndex = 0;\r
129 Clazz.instantialize (this, arguments);\r
130 }, javax.swing.text.ElementIterator, "StackItem", null, Cloneable);\r
131 Clazz.makeConstructor (c$, \r
132  function (a) {\r
133 this.item = a;\r
134 this.childIndex = -1;\r
135 }, "javax.swing.text.Element");\r
136 Clazz.defineMethod (c$, "incrementIndex", \r
137  function () {\r
138 this.childIndex++;\r
139 });\r
140 Clazz.defineMethod (c$, "getElement", \r
141  function () {\r
142 return this.item;\r
143 });\r
144 Clazz.defineMethod (c$, "getIndex", \r
145  function () {\r
146 return this.childIndex;\r
147 });\r
148 c$ = Clazz.p0p ();\r
149 };\r
150 });\r