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}