001// License: GPL. For details, see LICENSE file.
002package org.openstreetmap.josm.spi.preferences;
003
004import java.util.Objects;
005
006/**
007 * Class to hold the global preferences object and the provider of base directories.
008 * @since 12847
009 */
010public final class Config {
011
012    private static IPreferences preferences;
013    private static IBaseDirectories baseDirectories;
014    private static IUrls urls;
015
016    private Config() {
017        // hide constructor
018    }
019
020    /**
021     * Get the preferences.
022     * @return the preferences
023     * @since 12847
024     */
025    public static IPreferences getPref() {
026        return preferences;
027    }
028
029    /**
030     * Get class that provides the location of certain base directories
031     * @return the global {@link IBaseDirectories} instance
032     * @since 12855
033     */
034    public static IBaseDirectories getDirs() {
035        return baseDirectories;
036    }
037
038    /**
039     * Get class that provides the value of certain URLs
040     * @return the global {@link IUrls} instance
041     * @since 14119
042     */
043    public static IUrls getUrls() {
044        return urls;
045    }
046
047    /**
048     * Install the global preference instance.
049     * @param preferences the global preference instance to set (must not be null)
050     * @since 12847
051     */
052    public static void setPreferencesInstance(IPreferences preferences) {
053        Config.preferences = Objects.requireNonNull(preferences, "preferences");
054    }
055
056    /**
057     * Install the global base directories provider.
058     * @param baseDirectories the global base directories provider instance to set
059     * (must not be null)
060     * @since 12855
061     */
062    public static void setBaseDirectoriesProvider(IBaseDirectories baseDirectories) {
063        Config.baseDirectories = Objects.requireNonNull(baseDirectories, "baseDirectories");
064    }
065
066    /**
067     * Install the global URLs provider.
068     * @param urls the global URLs provider instance to set (must not be null)
069     * @since xx
070     */
071    public static void setUrlsProvider(IUrls urls) {
072        Config.urls = Objects.requireNonNull(urls, "urls");
073    }
074}