JAL-1807 Bob's JalviewJS prototype first commit
[jalviewjs.git] / site / swingjs / j2s / javax / swing / ArrayTable.js
1 Clazz.declarePackage ("javax.swing");\r
2 Clazz.load (null, "javax.swing.ArrayTable", ["java.util.Hashtable"], function () {\r
3 c$ = Clazz.decorateAsClass (function () {\r
4 this.table = null;\r
5 Clazz.instantialize (this, arguments);\r
6 }, javax.swing, "ArrayTable", null, Cloneable);\r
7 Clazz.makeConstructor (c$, \r
8 function () {\r
9 });\r
10 Clazz.defineMethod (c$, "put", \r
11 function (key, value) {\r
12 if (this.table == null) {\r
13 this.table =  Clazz.newArray (-1, [key, value]);\r
14 } else {\r
15 var size = this.size ();\r
16 if (size < 8) {\r
17 if (this.containsKey (key)) {\r
18 var tmp = this.table;\r
19 for (var i = 0; i < tmp.length - 1; i += 2) {\r
20 if (tmp[i].equals (key)) {\r
21 tmp[i + 1] = value;\r
22 break;\r
23 }}\r
24 } else {\r
25 var array = this.table;\r
26 var i = array.length;\r
27 var tmp =  new Array (i + 2);\r
28 System.arraycopy (array, 0, tmp, 0, i);\r
29 tmp[i] = key;\r
30 tmp[i + 1] = value;\r
31 this.table = tmp;\r
32 }} else {\r
33 if ((size == 8) && this.isArray ()) {\r
34 this.grow ();\r
35 }(this.table).put (key, value);\r
36 }}}, "~O,~O");\r
37 Clazz.defineMethod (c$, "get", \r
38 function (key) {\r
39 var value = null;\r
40 if (this.table != null) {\r
41 if (this.isArray ()) {\r
42 var array = this.table;\r
43 for (var i = 0; i < array.length - 1; i += 2) {\r
44 if (array[i].equals (key)) {\r
45 value = array[i + 1];\r
46 break;\r
47 }}\r
48 } else {\r
49 value = (this.table).get (key);\r
50 }}return value;\r
51 }, "~O");\r
52 Clazz.defineMethod (c$, "size", \r
53 function () {\r
54 var size;\r
55 if (this.table == null) return 0;\r
56 if (this.isArray ()) {\r
57 size = Clazz.doubleToInt ((this.table).length / 2);\r
58 } else {\r
59 size = (this.table).size ();\r
60 }return size;\r
61 });\r
62 Clazz.defineMethod (c$, "containsKey", \r
63 function (key) {\r
64 var contains = false;\r
65 if (this.table != null) {\r
66 if (this.isArray ()) {\r
67 var array = this.table;\r
68 for (var i = 0; i < array.length - 1; i += 2) {\r
69 if (array[i].equals (key)) {\r
70 contains = true;\r
71 break;\r
72 }}\r
73 } else {\r
74 contains = (this.table).containsKey (key);\r
75 }}return contains;\r
76 }, "~O");\r
77 Clazz.defineMethod (c$, "remove", \r
78 function (key) {\r
79 var value = null;\r
80 if (key == null) {\r
81 return null;\r
82 }if (this.table != null) {\r
83 if (this.isArray ()) {\r
84 var index = -1;\r
85 var array = this.table;\r
86 for (var i = array.length - 2; i >= 0; i -= 2) {\r
87 if (array[i].equals (key)) {\r
88 index = i;\r
89 value = array[i + 1];\r
90 break;\r
91 }}\r
92 if (index != -1) {\r
93 var tmp =  new Array (array.length - 2);\r
94 System.arraycopy (array, 0, tmp, 0, index);\r
95 if (index < tmp.length) System.arraycopy (array, index + 2, tmp, index, tmp.length - index);\r
96 this.table = (tmp.length == 0) ? null : tmp;\r
97 }} else {\r
98 value = (this.table).remove (key);\r
99 }if (this.size () == 7 && !this.isArray ()) {\r
100 this.shrink ();\r
101 }}return value;\r
102 }, "~O");\r
103 Clazz.defineMethod (c$, "clear", \r
104 function () {\r
105 this.table = null;\r
106 });\r
107 Clazz.overrideMethod (c$, "clone", \r
108 function () {\r
109 var newArrayTable =  new javax.swing.ArrayTable ();\r
110 if (this.isArray ()) {\r
111 var array = this.table;\r
112 for (var i = 0; i < array.length - 1; i += 2) {\r
113 newArrayTable.put (array[i], array[i + 1]);\r
114 }\r
115 } else {\r
116 var tmp = this.table;\r
117 var keys = tmp.keys ();\r
118 while (keys.hasMoreElements ()) {\r
119 var o = keys.nextElement ();\r
120 newArrayTable.put (o, tmp.get (o));\r
121 }\r
122 }return newArrayTable;\r
123 });\r
124 Clazz.defineMethod (c$, "getKeys", \r
125 function (keys) {\r
126 if (this.table == null) {\r
127 return null;\r
128 }if (this.isArray ()) {\r
129 var array = this.table;\r
130 if (keys == null) {\r
131 keys =  new Array (Clazz.doubleToInt (array.length / 2));\r
132 }for (var i = 0, index = 0; i < array.length - 1; i += 2, index++) {\r
133 keys[index] = array[i];\r
134 }\r
135 } else {\r
136 var tmp = this.table;\r
137 var enum_ = tmp.keys ();\r
138 var counter = tmp.size ();\r
139 if (keys == null) {\r
140 keys =  new Array (counter);\r
141 }while (counter > 0) {\r
142 keys[--counter] = enum_.nextElement ();\r
143 }\r
144 }return keys;\r
145 }, "~A");\r
146 Clazz.defineMethod (c$, "isArray", \r
147  function () {\r
148 return (Clazz.instanceOf (this.table, Array));\r
149 });\r
150 Clazz.defineMethod (c$, "grow", \r
151  function () {\r
152 var array = this.table;\r
153 var tmp =  new java.util.Hashtable (Clazz.doubleToInt (array.length / 2));\r
154 for (var i = 0; i < array.length; i += 2) {\r
155 tmp.put (array[i], array[i + 1]);\r
156 }\r
157 this.table = tmp;\r
158 });\r
159 Clazz.defineMethod (c$, "shrink", \r
160  function () {\r
161 var tmp = this.table;\r
162 var array =  new Array (tmp.size () * 2);\r
163 var keys = tmp.keys ();\r
164 var j = 0;\r
165 while (keys.hasMoreElements ()) {\r
166 var o = keys.nextElement ();\r
167 array[j] = o;\r
168 array[j + 1] = tmp.get (o);\r
169 j += 2;\r
170 }\r
171 this.table = array;\r
172 });\r
173 Clazz.defineStatics (c$,\r
174 "ARRAY_BOUNDARY", 8);\r
175 });\r