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}