1fe77e7203e518f62b5bd8e8c603bca361e9cf47bFredrik Roubert// © 2017 and later: Unicode, Inc. and others. 2fe77e7203e518f62b5bd8e8c603bca361e9cf47bFredrik Roubert// License & terms of use: http://www.unicode.org/copyright.html#License 3fe77e7203e518f62b5bd8e8c603bca361e9cf47bFredrik Roubertpackage com.ibm.icu.number; 4fe77e7203e518f62b5bd8e8c603bca361e9cf47bFredrik Roubert 5fe77e7203e518f62b5bd8e8c603bca361e9cf47bFredrik Roubertimport java.util.Locale; 6fe77e7203e518f62b5bd8e8c603bca361e9cf47bFredrik Roubert 7fe77e7203e518f62b5bd8e8c603bca361e9cf47bFredrik Roubertimport com.ibm.icu.util.ULocale; 8fe77e7203e518f62b5bd8e8c603bca361e9cf47bFredrik Roubert 9fe77e7203e518f62b5bd8e8c603bca361e9cf47bFredrik Roubert/** 10fe77e7203e518f62b5bd8e8c603bca361e9cf47bFredrik Roubert * A NumberFormatter that does not yet have a locale. In order to format numbers, a locale must be specified. 11fe77e7203e518f62b5bd8e8c603bca361e9cf47bFredrik Roubert * 12fe77e7203e518f62b5bd8e8c603bca361e9cf47bFredrik Roubert * @see NumberFormatter 13fe77e7203e518f62b5bd8e8c603bca361e9cf47bFredrik Roubert * @draft ICU 60 14fe77e7203e518f62b5bd8e8c603bca361e9cf47bFredrik Roubert * @provisional This API might change or be removed in a future release. 15fe77e7203e518f62b5bd8e8c603bca361e9cf47bFredrik Roubert */ 16fe77e7203e518f62b5bd8e8c603bca361e9cf47bFredrik Roubertpublic class UnlocalizedNumberFormatter extends NumberFormatterSettings<UnlocalizedNumberFormatter> { 17fe77e7203e518f62b5bd8e8c603bca361e9cf47bFredrik Roubert 18fe77e7203e518f62b5bd8e8c603bca361e9cf47bFredrik Roubert /** Base constructor; called during startup only. Sets the threshold to the default value of 3. */ 19fe77e7203e518f62b5bd8e8c603bca361e9cf47bFredrik Roubert UnlocalizedNumberFormatter() { 20fe77e7203e518f62b5bd8e8c603bca361e9cf47bFredrik Roubert super(null, KEY_THRESHOLD, new Long(3)); 21fe77e7203e518f62b5bd8e8c603bca361e9cf47bFredrik Roubert } 22fe77e7203e518f62b5bd8e8c603bca361e9cf47bFredrik Roubert 23fe77e7203e518f62b5bd8e8c603bca361e9cf47bFredrik Roubert UnlocalizedNumberFormatter(NumberFormatterSettings<?> parent, int key, Object value) { 24fe77e7203e518f62b5bd8e8c603bca361e9cf47bFredrik Roubert super(parent, key, value); 25fe77e7203e518f62b5bd8e8c603bca361e9cf47bFredrik Roubert } 26fe77e7203e518f62b5bd8e8c603bca361e9cf47bFredrik Roubert 27fe77e7203e518f62b5bd8e8c603bca361e9cf47bFredrik Roubert /** 28fe77e7203e518f62b5bd8e8c603bca361e9cf47bFredrik Roubert * Associate the given locale with the number formatter. The locale is used for picking the appropriate symbols, 29fe77e7203e518f62b5bd8e8c603bca361e9cf47bFredrik Roubert * formats, and other data for number display. 30fe77e7203e518f62b5bd8e8c603bca361e9cf47bFredrik Roubert * 31fe77e7203e518f62b5bd8e8c603bca361e9cf47bFredrik Roubert * <p> 32fe77e7203e518f62b5bd8e8c603bca361e9cf47bFredrik Roubert * To use the Java default locale, call Locale.getDefault(): 33fe77e7203e518f62b5bd8e8c603bca361e9cf47bFredrik Roubert * 34fe77e7203e518f62b5bd8e8c603bca361e9cf47bFredrik Roubert * <pre> 35fe77e7203e518f62b5bd8e8c603bca361e9cf47bFredrik Roubert * NumberFormatter.with(). ... .locale(Locale.getDefault()) 36fe77e7203e518f62b5bd8e8c603bca361e9cf47bFredrik Roubert * </pre> 37fe77e7203e518f62b5bd8e8c603bca361e9cf47bFredrik Roubert * 38fe77e7203e518f62b5bd8e8c603bca361e9cf47bFredrik Roubert * @param locale 39fe77e7203e518f62b5bd8e8c603bca361e9cf47bFredrik Roubert * The locale to use when loading data for number formatting. 40fe77e7203e518f62b5bd8e8c603bca361e9cf47bFredrik Roubert * @return The fluent chain 41fe77e7203e518f62b5bd8e8c603bca361e9cf47bFredrik Roubert * @draft ICU 60 42fe77e7203e518f62b5bd8e8c603bca361e9cf47bFredrik Roubert * @provisional This API might change or be removed in a future release. 43fe77e7203e518f62b5bd8e8c603bca361e9cf47bFredrik Roubert */ 44fe77e7203e518f62b5bd8e8c603bca361e9cf47bFredrik Roubert public LocalizedNumberFormatter locale(Locale locale) { 45fe77e7203e518f62b5bd8e8c603bca361e9cf47bFredrik Roubert return new LocalizedNumberFormatter(this, KEY_LOCALE, ULocale.forLocale(locale)); 46fe77e7203e518f62b5bd8e8c603bca361e9cf47bFredrik Roubert } 47fe77e7203e518f62b5bd8e8c603bca361e9cf47bFredrik Roubert 48fe77e7203e518f62b5bd8e8c603bca361e9cf47bFredrik Roubert /** 49fe77e7203e518f62b5bd8e8c603bca361e9cf47bFredrik Roubert * ULocale version of the {@link #locale(Locale)} setter above. 50fe77e7203e518f62b5bd8e8c603bca361e9cf47bFredrik Roubert * 51fe77e7203e518f62b5bd8e8c603bca361e9cf47bFredrik Roubert * @param locale 52fe77e7203e518f62b5bd8e8c603bca361e9cf47bFredrik Roubert * The locale to use when loading data for number formatting. 53fe77e7203e518f62b5bd8e8c603bca361e9cf47bFredrik Roubert * @return The fluent chain 54fe77e7203e518f62b5bd8e8c603bca361e9cf47bFredrik Roubert * @see #locale(Locale) 55fe77e7203e518f62b5bd8e8c603bca361e9cf47bFredrik Roubert * @draft ICU 60 56fe77e7203e518f62b5bd8e8c603bca361e9cf47bFredrik Roubert * @provisional This API might change or be removed in a future release. 57fe77e7203e518f62b5bd8e8c603bca361e9cf47bFredrik Roubert */ 58fe77e7203e518f62b5bd8e8c603bca361e9cf47bFredrik Roubert public LocalizedNumberFormatter locale(ULocale locale) { 59fe77e7203e518f62b5bd8e8c603bca361e9cf47bFredrik Roubert return new LocalizedNumberFormatter(this, KEY_LOCALE, locale); 60fe77e7203e518f62b5bd8e8c603bca361e9cf47bFredrik Roubert } 61fe77e7203e518f62b5bd8e8c603bca361e9cf47bFredrik Roubert 62fe77e7203e518f62b5bd8e8c603bca361e9cf47bFredrik Roubert @Override 63fe77e7203e518f62b5bd8e8c603bca361e9cf47bFredrik Roubert UnlocalizedNumberFormatter create(int key, Object value) { 64fe77e7203e518f62b5bd8e8c603bca361e9cf47bFredrik Roubert return new UnlocalizedNumberFormatter(this, key, value); 65fe77e7203e518f62b5bd8e8c603bca361e9cf47bFredrik Roubert } 66fe77e7203e518f62b5bd8e8c603bca361e9cf47bFredrik Roubert}