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
9 Clazz.superConstructor (this, javax.swing.text.NumberFormatter, []);
\r
10 this.setN (java.text.NumberFormat.getNumberInstance ());
\r
12 Clazz.makeConstructor (c$,
\r
14 Clazz.superConstructor (this, javax.swing.text.NumberFormatter, []);
\r
16 }, "java.text.NumberFormat");
\r
17 Clazz.defineMethod (c$, "setN",
\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
26 Clazz.superCall (this, javax.swing.text.NumberFormatter, "setFormat", [format]);
\r
27 var dfs = this.getDecimalFormatSymbols ();
\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
40 this.specialChars = sb.toString ();
\r
42 this.specialChars = "";
\r
43 }}, "java.text.Format");
\r
44 Clazz.overrideMethod (c$, "stringToValueParse",
\r
45 function (text, f) {
\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
68 Clazz.defineMethod (c$, "getPositiveSign",
\r
72 Clazz.defineMethod (c$, "getMinusSign",
\r
74 var dfs = this.getDecimalFormatSymbols ();
\r
76 return dfs.getMinusSign ();
\r
79 Clazz.defineMethod (c$, "getDecimalSeparator",
\r
81 var dfs = this.getDecimalFormatSymbols ();
\r
83 return dfs.getDecimalSeparator ();
\r
86 Clazz.defineMethod (c$, "getDecimalFormatSymbols",
\r
88 var f = this.getFormat ();
\r
89 if (Clazz.instanceOf (f, java.text.DecimalFormat)) {
\r
90 return (f).getDecimalFormatSymbols ();
\r
93 Clazz.overrideMethod (c$, "isLegalInsertText",
\r
95 if (this.getAllowsInvalid ()) {
\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
104 Clazz.defineMethod (c$, "isLiteral",
\r
106 if (!Clazz.superCall (this, javax.swing.text.NumberFormatter, "isLiteral", [attrs])) {
\r
107 if (attrs == null) {
\r
109 }var size = attrs.size ();
\r
110 if (attrs.get (java.text.NumberFormat.Field.GROUPING_SEPARATOR) != null) {
\r
112 if (attrs.get (java.text.NumberFormat.Field.INTEGER) != null) {
\r
114 }}if (attrs.get (java.text.NumberFormat.Field.EXPONENT_SYMBOL) != null) {
\r
116 }if (attrs.get (java.text.NumberFormat.Field.PERCENT) != null) {
\r
118 }if (attrs.get (java.text.NumberFormat.Field.PERMILLE) != null) {
\r
120 }if (attrs.get (java.text.NumberFormat.Field.CURRENCY) != null) {
\r
122 }if (attrs.get (java.text.NumberFormat.Field.SIGN) != null) {
\r
128 }, "java.util.Map");
\r
129 Clazz.defineMethod (c$, "isNavigatable",
\r
131 if (!Clazz.superCall (this, javax.swing.text.NumberFormatter, "isNavigatable", [index])) {
\r
132 if (this.getBufferedChar (index) == this.getDecimalSeparator ()) {
\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
154 }index += direction;
\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
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
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
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
183 if (Clazz.exceptionOf (pe, java.text.ParseException)) {
\r
184 this.invalidEdit ();
\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
198 if (string.charAt (0) == '-') {
\r
199 string = string.substring (1);
\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
210 var cons = valueClass.getConstructor ( Clazz.newArray (-1, [String]));
\r
211 if (cons != null) {
\r
212 return cons.newInstance ( Clazz.newArray (-1, [string]));
\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
225 }if (aChar == this.getPositiveSign ()) {
\r
226 string = this.getReplaceString (offset, replaceLength, null);
\r
228 string = this.getReplaceString (offset, replaceLength, String.instantialize ( Clazz.newCharArray (-1, [aChar])));
\r
229 }return this.stringToValue (string);
\r