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
015    private Config() {
016        // hide constructor
017    }
018
019    /**
020     * Get the preferences.
021     * @return the preferences
022     * @since 12847
023     */
024    public static IPreferences getPref() {
025        return preferences;
026    }
027
028    /**
029     * Get class that provides the location of certain base directories
030     * @return the global {@link IBaseDirectories} instance
031     * @since 12855
032     */
033    public static IBaseDirectories getDirs() {
034        return baseDirectories;
035    }
036
037    /**
038     * Install the global preference instance.
039     * @param preferences the global preference instance to set (must not be null)
040     * @since 12847
041     */
042    public static void setPreferencesInstance(IPreferences preferences) {
043        Config.preferences = Objects.requireNonNull(preferences, "preferences");
044    }
045
046    /**
047     * Install the global base directories provider.
048     * @param baseDirectories the global base directories provider instance to set
049     * (must not be null)
050     * @since 12855
051     */
052    public static void setBaseDirectoriesProvider(IBaseDirectories baseDirectories) {
053        Config.baseDirectories = Objects.requireNonNull(baseDirectories, "baseDirectories");
054    }
055}