12d2bb24f747c65578da13d5b13b82f0669690461Fredrik Roubert// © 2016 and later: Unicode, Inc. and others.
22d2bb24f747c65578da13d5b13b82f0669690461Fredrik Roubert// License & terms of use: http://www.unicode.org/copyright.html#License
37935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert/*
47935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert *******************************************************************************
5bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert * Copyright (C) 2012-2015, International Business Machines Corporation and    *
67935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * others. All Rights Reserved.                                                *
77935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert *******************************************************************************
87935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert */
97935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubertpackage com.ibm.icu.text;
107935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert
117935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert/**
127935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * Display context settings.
137935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * Note, the specific numeric values are internal and may change.
147935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * @stable ICU 51
157935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert */
167935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubertpublic enum DisplayContext {
177935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    /**
187935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * ================================
197935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * Settings for DIALECT_HANDLING (use one)
207935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     */
217935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    /**
227935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * A possible setting for DIALECT_HANDLING:
237935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * use standard names when generating a locale name,
247935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * e.g. en_GB displays as 'English (United Kingdom)'.
257935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * @stable ICU 51
267935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     */
277935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    STANDARD_NAMES(Type.DIALECT_HANDLING, 0),
287935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    /**
297935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * A possible setting for DIALECT_HANDLING:
307935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * use dialect names, when generating a locale name,
317935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * e.g. en_GB displays as 'British English'.
327935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * @stable ICU 51
337935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     */
347935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    DIALECT_NAMES(Type.DIALECT_HANDLING, 1),
357935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    /**
367935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * ================================
377935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * Settings for CAPITALIZATION (use one)
387935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     */
397935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    /**
407935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * A possible setting for CAPITALIZATION:
417935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * The capitalization context to be used is unknown (this is the default value).
427935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * @stable ICU 51
437935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     */
447935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    CAPITALIZATION_NONE(Type.CAPITALIZATION, 0),
457935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    /**
467935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * A possible setting for CAPITALIZATION:
477935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * The capitalization context if a date, date symbol or display name is to be
487935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * formatted with capitalization appropriate for the middle of a sentence.
497935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * @stable ICU 51
507935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     */
517935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    CAPITALIZATION_FOR_MIDDLE_OF_SENTENCE(Type.CAPITALIZATION, 1),
527935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    /**
537935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * A possible setting for CAPITALIZATION:
547935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * The capitalization context if a date, date symbol or display name is to be
557935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * formatted with capitalization appropriate for the beginning of a sentence.
567935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * @stable ICU 51
577935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     */
587935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    CAPITALIZATION_FOR_BEGINNING_OF_SENTENCE(Type.CAPITALIZATION, 2),
597935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    /**
607935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * A possible setting for CAPITALIZATION:
617935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * The capitalization context if a date, date symbol or display name is to be
627935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * formatted with capitalization appropriate for a user-interface list or menu item.
637935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * @stable ICU 51
647935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     */
657935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    CAPITALIZATION_FOR_UI_LIST_OR_MENU(Type.CAPITALIZATION, 3),
667935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    /**
677935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * A possible setting for CAPITALIZATION:
687935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * The capitalization context if a date, date symbol or display name is to be
697935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * formatted with capitalization appropriate for stand-alone usage such as an
707935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * isolated name on a calendar page.
717935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * @stable ICU 51
727935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     */
737935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    CAPITALIZATION_FOR_STANDALONE(Type.CAPITALIZATION, 4),
747935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    /**
757935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * ================================
767935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * Settings for DISPLAY_LENGTH (use one)
777935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     */
787935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    /**
797935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * A possible setting for DISPLAY_LENGTH:
807935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * use full names when generating a locale name,
817935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * e.g. "United States" for US.
82bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert     * @stable ICU 54
837935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     */
847935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    LENGTH_FULL(Type.DISPLAY_LENGTH, 0),
857935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    /**
867935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * A possible setting for DISPLAY_LENGTH:
877935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * use short names when generating a locale name,
887935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * e.g. "U.S." for US.
89bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert     * @stable ICU 54
907935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     */
912d2bb24f747c65578da13d5b13b82f0669690461Fredrik Roubert    LENGTH_SHORT(Type.DISPLAY_LENGTH, 1),
922d2bb24f747c65578da13d5b13b82f0669690461Fredrik Roubert    /**
932d2bb24f747c65578da13d5b13b82f0669690461Fredrik Roubert     * ================================
942d2bb24f747c65578da13d5b13b82f0669690461Fredrik Roubert     * Settings for SUBSTITUTE_HANDLING (choose one)
952d2bb24f747c65578da13d5b13b82f0669690461Fredrik Roubert     */
962d2bb24f747c65578da13d5b13b82f0669690461Fredrik Roubert    /**
972d2bb24f747c65578da13d5b13b82f0669690461Fredrik Roubert     * A possible setting for SUBSTITUTE_HANDLING:
982d2bb24f747c65578da13d5b13b82f0669690461Fredrik Roubert     * Returns a fallback value (e.g., the input code) when no data is available.
992d2bb24f747c65578da13d5b13b82f0669690461Fredrik Roubert     * This is the default behavior.
1002d2bb24f747c65578da13d5b13b82f0669690461Fredrik Roubert     * @draft ICU 58
1012d2bb24f747c65578da13d5b13b82f0669690461Fredrik Roubert     * @provisional This API might change or be removed in a future release.
1022d2bb24f747c65578da13d5b13b82f0669690461Fredrik Roubert     */
1032d2bb24f747c65578da13d5b13b82f0669690461Fredrik Roubert    SUBSTITUTE(Type.SUBSTITUTE_HANDLING, 0),
1042d2bb24f747c65578da13d5b13b82f0669690461Fredrik Roubert    /**
1052d2bb24f747c65578da13d5b13b82f0669690461Fredrik Roubert     * A possible setting for SUBSTITUTE_HANDLING:
1062d2bb24f747c65578da13d5b13b82f0669690461Fredrik Roubert     * Returns a null value when no data is available.
1072d2bb24f747c65578da13d5b13b82f0669690461Fredrik Roubert     * @draft ICU 58
1082d2bb24f747c65578da13d5b13b82f0669690461Fredrik Roubert     * @provisional This API might change or be removed in a future release.
1092d2bb24f747c65578da13d5b13b82f0669690461Fredrik Roubert     */
1102d2bb24f747c65578da13d5b13b82f0669690461Fredrik Roubert    NO_SUBSTITUTE(Type.SUBSTITUTE_HANDLING, 1);
1117935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert
1127935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    /**
1137935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * Type values for DisplayContext
1147935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * @stable ICU 51
1157935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     */
1167935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    public enum Type {
1177935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert        /**
1187935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert         * DIALECT_HANDLING can be set to STANDARD_NAMES or DIALECT_NAMES.
1197935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert         * @stable ICU 51
1207935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert         */
1217935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert        DIALECT_HANDLING,
1227935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert        /**
1237935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert         * CAPITALIZATION can be set to one of CAPITALIZATION_NONE through
1247935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert         * CAPITALIZATION_FOR_STANDALONE.
1257935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert         * @stable ICU 51
1267935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert         */
1277935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert        CAPITALIZATION,
1287935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert        /**
1297935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert         * DISPLAY_LENGTH can be set to LENGTH_FULL or LENGTH_SHORT.
130bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert         * @stable ICU 54
1317935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert         */
1322d2bb24f747c65578da13d5b13b82f0669690461Fredrik Roubert        DISPLAY_LENGTH,
1332d2bb24f747c65578da13d5b13b82f0669690461Fredrik Roubert        /**
1342d2bb24f747c65578da13d5b13b82f0669690461Fredrik Roubert         * SUBSTITUTE_HANDLING can be set to SUBSTITUTE or NO_SUBSTITUTE.
1352d2bb24f747c65578da13d5b13b82f0669690461Fredrik Roubert         * @draft ICU 58
1362d2bb24f747c65578da13d5b13b82f0669690461Fredrik Roubert         * @provisional This API might change or be removed in a future release.
1372d2bb24f747c65578da13d5b13b82f0669690461Fredrik Roubert         */
1382d2bb24f747c65578da13d5b13b82f0669690461Fredrik Roubert        SUBSTITUTE_HANDLING
1397935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    }
1407935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert
1417935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    private final Type type;
1427935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    private final int value;
1437935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    private DisplayContext(Type type, int value) {
1447935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert        this.type = type;
1457935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert        this.value = value;
1467935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    }
1477935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    /**
1487935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * Get the Type part of the enum item
1497935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * (e.g. CAPITALIZATION)
1507935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * @stable ICU 51
1517935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     */
1527935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    public Type type() {
1537935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert        return type;
1547935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    }
1557935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    /**
1567935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * Get the value part of the enum item
1577935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * (e.g. CAPITALIZATION_FOR_STANDALONE)
1587935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * @stable ICU 51
1597935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     */
1607935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    public int value() {
1617935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert        return value;
1627935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    }
1637935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert}
164