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