c6361d66438cf9a96a3d8bb8e8b115101fb1ab23
[jalviewjs.git] / site / j2s / javax / swing / text / NumberFormatter.js
1 Clazz.declarePackage ("javax.swing.text");\r
2 Clazz.load (["javax.swing.text.InternationalFormatter", "java.text.NumberFormat"], "javax.swing.text.NumberFormatter", ["java.lang.Byte", "$.Character", "$.Double", "$.Float", "$.Long", "$.Number", "$.Short", "$.StringBuffer", "java.text.DecimalFormat"], function () {\r
3 c$ = Clazz.decorateAsClass (function () {\r
4 this.specialChars = null;\r
5 Clazz.instantialize (this, arguments);\r
6 }, javax.swing.text, "NumberFormatter", javax.swing.text.InternationalFormatter);\r
7 Clazz.makeConstructor (c$, \r
8 function () {\r
9 Clazz.superConstructor (this, javax.swing.text.NumberFormatter, []);\r
10 this.setN (java.text.NumberFormat.getNumberInstance ());\r
11 });\r
12 Clazz.makeConstructor (c$, \r
13 function (format) {\r
14 Clazz.superConstructor (this, javax.swing.text.NumberFormatter, []);\r
15 this.setN (format);\r
16 }, "java.text.NumberFormat");\r
17 Clazz.defineMethod (c$, "setN", \r
18  function (format) {\r
19 this.setFormat (format);\r
20 this.setAllowsInvalid (true);\r
21 this.setCommitsOnValidEdit (false);\r
22 this.setOverwriteMode (false);\r
23 }, "java.text.NumberFormat");\r
24 Clazz.defineMethod (c$, "setFormat", \r
25 function (format) {\r
26 Clazz.superCall (this, javax.swing.text.NumberFormatter, "setFormat", [format]);\r
27 var dfs = this.getDecimalFormatSymbols ();\r
28 if (dfs != null) {\r
29 var sb =  new StringBuffer ();\r
30 sb.append (dfs.getCurrencySymbol ());\r
31 sb.append (dfs.getDecimalSeparator ());\r
32 sb.append (dfs.getGroupingSeparator ());\r
33 sb.append (dfs.getInfinity ());\r
34 sb.append (dfs.getInternationalCurrencySymbol ());\r
35 sb.append (dfs.getMinusSign ());\r
36 sb.append (dfs.getMonetaryDecimalSeparator ());\r
37 sb.append (dfs.getNaN ());\r
38 sb.append (dfs.getPercent ());\r
39 sb.append ('+');\r
40 this.specialChars = sb.toString ();\r
41 } else {\r
42 this.specialChars = "";\r
43 }}, "java.text.Format");\r
44 Clazz.overrideMethod (c$, "stringToValueParse", \r
45 function (text, f) {\r
46 if (f == null) {\r
47 return text;\r
48 }var value = f.parseObject (text);\r
49 return this.convertValueToValueClass (value, this.getValueClass ());\r
50 }, "~S,java.text.Format");\r
51 Clazz.defineMethod (c$, "convertValueToValueClass", \r
52  function (value, valueClass) {\r
53 if (valueClass != null && (Clazz.instanceOf (value, Number))) {\r
54 if (valueClass === Integer) {\r
55 return  new Integer ((value).intValue ());\r
56 } else if (valueClass === Long) {\r
57 return  new Long ((value).longValue ());\r
58 } else if (valueClass === Float) {\r
59 return  new Float ((value).floatValue ());\r
60 } else if (valueClass === Double) {\r
61 return  new Double ((value).doubleValue ());\r
62 } else if (valueClass === Byte) {\r
63 return  new Byte ((value).byteValue ());\r
64 } else if (valueClass === Short) {\r
65 return  new Short ((value).shortValue ());\r
66 }}return value;\r
67 }, "~O,Class");\r
68 Clazz.defineMethod (c$, "getPositiveSign", \r
69  function () {\r
70 return '+';\r
71 });\r
72 Clazz.defineMethod (c$, "getMinusSign", \r
73  function () {\r
74 var dfs = this.getDecimalFormatSymbols ();\r
75 if (dfs != null) {\r
76 return dfs.getMinusSign ();\r
77 }return '-';\r
78 });\r
79 Clazz.defineMethod (c$, "getDecimalSeparator", \r
80  function () {\r
81 var dfs = this.getDecimalFormatSymbols ();\r
82 if (dfs != null) {\r
83 return dfs.getDecimalSeparator ();\r
84 }return '.';\r
85 });\r
86 Clazz.defineMethod (c$, "getDecimalFormatSymbols", \r
87  function () {\r
88 var f = this.getFormat ();\r
89 if (Clazz.instanceOf (f, java.text.DecimalFormat)) {\r
90 return (f).getDecimalFormatSymbols ();\r
91 }return null;\r
92 });\r
93 Clazz.overrideMethod (c$, "isLegalInsertText", \r
94 function (text) {\r
95 if (this.getAllowsInvalid ()) {\r
96 return true;\r
97 }for (var counter = text.length - 1; counter >= 0; counter--) {\r
98 var aChar = text.charAt (counter);\r
99 if (!Character.isDigit (aChar) && this.specialChars.indexOf (aChar) == -1) {\r
100 return false;\r
101 }}\r
102 return true;\r
103 }, "~S");\r
104 Clazz.defineMethod (c$, "isLiteral", \r
105 function (attrs) {\r
106 if (!Clazz.superCall (this, javax.swing.text.NumberFormatter, "isLiteral", [attrs])) {\r
107 if (attrs == null) {\r
108 return false;\r
109 }var size = attrs.size ();\r
110 if (attrs.get (java.text.NumberFormat.Field.GROUPING_SEPARATOR) != null) {\r
111 size--;\r
112 if (attrs.get (java.text.NumberFormat.Field.INTEGER) != null) {\r
113 size--;\r
114 }}if (attrs.get (java.text.NumberFormat.Field.EXPONENT_SYMBOL) != null) {\r
115 size--;\r
116 }if (attrs.get (java.text.NumberFormat.Field.PERCENT) != null) {\r
117 size--;\r
118 }if (attrs.get (java.text.NumberFormat.Field.PERMILLE) != null) {\r
119 size--;\r
120 }if (attrs.get (java.text.NumberFormat.Field.CURRENCY) != null) {\r
121 size--;\r
122 }if (attrs.get (java.text.NumberFormat.Field.SIGN) != null) {\r
123 size--;\r
124 }if (size == 0) {\r
125 return true;\r
126 }return false;\r
127 }return true;\r
128 }, "java.util.Map");\r
129 Clazz.defineMethod (c$, "isNavigatable", \r
130 function (index) {\r
131 if (!Clazz.superCall (this, javax.swing.text.NumberFormatter, "isNavigatable", [index])) {\r
132 if (this.getBufferedChar (index) == this.getDecimalSeparator ()) {\r
133 return true;\r
134 }return false;\r
135 }return true;\r
136 }, "~N");\r
137 Clazz.defineMethod (c$, "getFieldFrom", \r
138  function (index, direction) {\r
139 if (this.isValidMask ()) {\r
140 var max = this.getFormattedTextField ().getDocument ().getLength ();\r
141 var iterator = this.getIterator ();\r
142 if (index >= max) {\r
143 index += direction;\r
144 }while (index >= 0 && index < max) {\r
145 iterator.setIndex (index);\r
146 var attrs = iterator.getAttributes ();\r
147 if (attrs != null && attrs.size () > 0) {\r
148 var keys = attrs.keySet ().iterator ();\r
149 while (keys.hasNext ()) {\r
150 var key = keys.next ();\r
151 if (Clazz.instanceOf (key, java.text.NumberFormat.Field)) {\r
152 return key;\r
153 }}\r
154 }index += direction;\r
155 }\r
156 }return null;\r
157 }, "~N,~N");\r
158 Clazz.defineMethod (c$, "replace", \r
159 function (fb, offset, length, string, attr) {\r
160 if (!this.getAllowsInvalid () && length == 0 && string != null && string.length == 1 && this.toggleSignIfNecessary (fb, offset, string.charAt (0))) {\r
161 return;\r
162 }Clazz.superCall (this, javax.swing.text.NumberFormatter, "replace", [fb, offset, length, string, attr]);\r
163 }, "javax.swing.text.DocumentFilter.FilterBypass,~N,~N,~S,javax.swing.text.AttributeSet");\r
164 Clazz.defineMethod (c$, "toggleSignIfNecessary", \r
165  function (fb, offset, aChar) {\r
166 if (aChar == this.getMinusSign () || aChar == this.getPositiveSign ()) {\r
167 var field = this.getFieldFrom (offset, -1);\r
168 var newValue;\r
169 try {\r
170 if (field == null || (field !== java.text.NumberFormat.Field.EXPONENT && field !== java.text.NumberFormat.Field.EXPONENT_SYMBOL && field !== java.text.NumberFormat.Field.EXPONENT_SIGN)) {\r
171 newValue = this.toggleSign ((aChar == this.getPositiveSign ()));\r
172 } else {\r
173 newValue = this.toggleExponentSign (offset, aChar);\r
174 }if (newValue != null && this.isValidValue (newValue, false)) {\r
175 var lc = this.getLiteralCountTo (offset);\r
176 var string = this.valueToString (newValue);\r
177 fb.remove (0, fb.getDocument ().getLength ());\r
178 fb.insertString (0, string, null);\r
179 this.updateValue (newValue);\r
180 this.repositionCursor (this.getLiteralCountTo (offset) - lc + offset, 1);\r
181 return true;\r
182 }} catch (pe) {\r
183 if (Clazz.exceptionOf (pe, java.text.ParseException)) {\r
184 this.invalidEdit ();\r
185 } else {\r
186 throw pe;\r
187 }\r
188 }\r
189 }return false;\r
190 }, "javax.swing.text.DocumentFilter.FilterBypass,~N,~S");\r
191 Clazz.defineMethod (c$, "toggleSign", \r
192  function (positive) {\r
193 var value = this.stringToValue (this.getFormattedTextField ().getText ());\r
194 if (value != null) {\r
195 var string = value.toString ();\r
196 if (string != null && string.length > 0) {\r
197 if (positive) {\r
198 if (string.charAt (0) == '-') {\r
199 string = string.substring (1);\r
200 }} else {\r
201 if (string.charAt (0) == '+') {\r
202 string = string.substring (1);\r
203 }if (string.length > 0 && string.charAt (0) != '-') {\r
204 string = "-" + string;\r
205 }}if (string != null) {\r
206 var valueClass = this.getValueClass ();\r
207 if (valueClass == null) {\r
208 valueClass = value.getClass ();\r
209 }try {\r
210 var cons = valueClass.getConstructor ( Clazz.newArray (-1, [String]));\r
211 if (cons != null) {\r
212 return cons.newInstance ( Clazz.newArray (-1, [string]));\r
213 }} catch (ex) {\r
214 }\r
215 }}}return null;\r
216 }, "~B");\r
217 Clazz.defineMethod (c$, "toggleExponentSign", \r
218  function (offset, aChar) {\r
219 var string = this.getFormattedTextField ().getText ();\r
220 var replaceLength = 0;\r
221 var loc = this.getAttributeStart (java.text.NumberFormat.Field.EXPONENT_SIGN);\r
222 if (loc >= 0) {\r
223 replaceLength = 1;\r
224 offset = loc;\r
225 }if (aChar == this.getPositiveSign ()) {\r
226 string = this.getReplaceString (offset, replaceLength, null);\r
227 } else {\r
228 string = this.getReplaceString (offset, replaceLength,  String.instantialize ( Clazz.newCharArray (-1, [aChar])));\r
229 }return this.stringToValue (string);\r
230 }, "~N,~S");\r
231 });\r