001// License: GPL. For details, see LICENSE file.
002package org.openstreetmap.josm.data.coor;
003
004import static org.openstreetmap.josm.tools.I18n.tr;
005
006/**
007 * An enumeration  of coordinate formats
008 *
009 */
010public enum CoordinateFormat {
011
012    /**
013     * the decimal format 999.999
014     */
015    DECIMAL_DEGREES (tr("Decimal Degrees")),
016
017    /**
018     * the degrees/minutes/seconds format 9 deg 99 min 99 sec
019     */
020    DEGREES_MINUTES_SECONDS (tr("deg\u00B0 min'' sec\"")),
021
022    /**
023     * the nautical format
024     */
025    NAUTICAL (tr("deg\u00B0 min'' (Nautical)")),
026
027    /**
028     * coordinates East/North
029     */
030    EAST_NORTH (tr("Projected Coordinates"));
031
032    private String displayName;
033    private CoordinateFormat(String displayName) {
034        this.displayName = displayName;
035    }
036
037    /**
038     * Replies the display name of the format
039     *
040     * @return the display name
041     */
042    public String getDisplayName() {
043        return displayName;
044    }
045
046    @Override
047    public String toString() {
048        return getDisplayName();
049    }
050
051    private static CoordinateFormat defaultCoordinateFormat = DECIMAL_DEGREES;
052
053    /**
054     * Replies the default coordinate format to be use
055     *
056     * @return the default coordinate format
057     */
058    public static CoordinateFormat getDefaultFormat() {
059        return defaultCoordinateFormat;
060    }
061
062    /**
063     * Sets the default coordinate format
064     *
065     * @param format the default coordinate format
066     */
067    public static void setCoordinateFormat(CoordinateFormat format) {
068        if (format != null) {
069            defaultCoordinateFormat = format;
070        }
071    }
072}