DisplayContext.java

// © 2016 and later: Unicode, Inc. and others.
// License & terms of use: http://www.unicode.org/copyright.html
/*
 *******************************************************************************
 * Copyright (C) 2012-2015, International Business Machines Corporation and    *
 * others. All Rights Reserved.                                                *
 *******************************************************************************
 */
package com.ibm.icu.text;

/**
 * Display context settings. Note, the specific numeric values are internal and may change.
 *
 * @stable ICU 51
 */
public enum DisplayContext {
    /** ================================ Settings for DIALECT_HANDLING (use one) */
    /**
     * A possible setting for DIALECT_HANDLING: use standard names when generating a locale name,
     * e.g. en_GB displays as 'English (United Kingdom)'.
     *
     * @stable ICU 51
     */
    STANDARD_NAMES(Type.DIALECT_HANDLING, 0),
    /**
     * A possible setting for DIALECT_HANDLING: use dialect names, when generating a locale name,
     * e.g. en_GB displays as 'British English'.
     *
     * @stable ICU 51
     */
    DIALECT_NAMES(Type.DIALECT_HANDLING, 1),
    /** ================================ Settings for CAPITALIZATION (use one) */
    /**
     * A possible setting for CAPITALIZATION: The capitalization context to be used is unknown (this
     * is the default value).
     *
     * @stable ICU 51
     */
    CAPITALIZATION_NONE(Type.CAPITALIZATION, 0),
    /**
     * A possible setting for CAPITALIZATION: The capitalization context if a date, date symbol or
     * display name is to be formatted with capitalization appropriate for the middle of a sentence.
     *
     * @stable ICU 51
     */
    CAPITALIZATION_FOR_MIDDLE_OF_SENTENCE(Type.CAPITALIZATION, 1),
    /**
     * A possible setting for CAPITALIZATION: The capitalization context if a date, date symbol or
     * display name is to be formatted with capitalization appropriate for the beginning of a
     * sentence.
     *
     * @stable ICU 51
     */
    CAPITALIZATION_FOR_BEGINNING_OF_SENTENCE(Type.CAPITALIZATION, 2),
    /**
     * A possible setting for CAPITALIZATION: The capitalization context if a date, date symbol or
     * display name is to be formatted with capitalization appropriate for a user-interface list or
     * menu item.
     *
     * @stable ICU 51
     */
    CAPITALIZATION_FOR_UI_LIST_OR_MENU(Type.CAPITALIZATION, 3),
    /**
     * A possible setting for CAPITALIZATION: The capitalization context if a date, date symbol or
     * display name is to be formatted with capitalization appropriate for stand-alone usage such as
     * an isolated name on a calendar page.
     *
     * @stable ICU 51
     */
    CAPITALIZATION_FOR_STANDALONE(Type.CAPITALIZATION, 4),
    /** ================================ Settings for DISPLAY_LENGTH (use one) */
    /**
     * A possible setting for DISPLAY_LENGTH: use full names when generating a locale name, e.g.
     * "United States" for US.
     *
     * @stable ICU 54
     */
    LENGTH_FULL(Type.DISPLAY_LENGTH, 0),
    /**
     * A possible setting for DISPLAY_LENGTH: use short names when generating a locale name, e.g.
     * "U.S." for US.
     *
     * @stable ICU 54
     */
    LENGTH_SHORT(Type.DISPLAY_LENGTH, 1),
    /** ================================ Settings for SUBSTITUTE_HANDLING (choose one) */
    /**
     * A possible setting for SUBSTITUTE_HANDLING: Returns a fallback value (e.g., the input code)
     * when no data is available. This is the default behavior.
     *
     * @stable ICU 58
     */
    SUBSTITUTE(Type.SUBSTITUTE_HANDLING, 0),
    /**
     * A possible setting for SUBSTITUTE_HANDLING: Returns a null value when no data is available.
     *
     * @stable ICU 58
     */
    NO_SUBSTITUTE(Type.SUBSTITUTE_HANDLING, 1);

    /**
     * Type values for DisplayContext
     *
     * @stable ICU 51
     */
    public enum Type {
        /**
         * DIALECT_HANDLING can be set to STANDARD_NAMES or DIALECT_NAMES.
         *
         * @stable ICU 51
         */
        DIALECT_HANDLING,
        /**
         * CAPITALIZATION can be set to one of CAPITALIZATION_NONE through
         * CAPITALIZATION_FOR_STANDALONE.
         *
         * @stable ICU 51
         */
        CAPITALIZATION,
        /**
         * DISPLAY_LENGTH can be set to LENGTH_FULL or LENGTH_SHORT.
         *
         * @stable ICU 54
         */
        DISPLAY_LENGTH,
        /**
         * SUBSTITUTE_HANDLING can be set to SUBSTITUTE or NO_SUBSTITUTE.
         *
         * @stable ICU 58
         */
        SUBSTITUTE_HANDLING
    }

    private final Type type;
    private final int value;

    private DisplayContext(Type type, int value) {
        this.type = type;
        this.value = value;
    }

    /**
     * Get the Type part of the enum item (e.g. CAPITALIZATION)
     *
     * @stable ICU 51
     */
    public Type type() {
        return type;
    }

    /**
     * Get the value part of the enum item (e.g. CAPITALIZATION_FOR_STANDALONE)
     *
     * @stable ICU 51
     */
    public int value() {
        return value;
    }
}