package org.limewire.setting; import java.io.File; import java.util.Properties; /** * A proxy, aka a substitute, for a <code>FileSetting</code> object that returns * the value of another file setting as its default value. * <p> * Create a <code>ProxyFileSetting</code> object with a * {@link SettingsFactory#createProxyFileSetting(String, FileSetting)}. * <pre> FileSetting genericDownloadFolderSetting = settingsfactory.createFileSetting( "genericDownloadFolder", new File("/")); ProxyFileSetting audioDownloadFolderSetting = settingsfactory.createProxyFileSetting( "audioDownloadFolder", genericDownloadFolderSetting); // prints the generic setting's value System.out.println(audioDownloadFolderSetting.getValue()); audioDownloadFolderSetting.setValue(new File("/audio")); // audio System.out.println(audioDownloadFolderSetting.getValue()); genericDownloadFolderSetting.setValue(new File("/new generic")); //audio System.out.println(audioDownloadFolderSetting.getValue()); audioDownloadFolderSetting.revertToDefault(); ///new generic System.out.println(audioDownloadFolderSetting.getValue()); Output: C:\ C:\audio C:\audio C:\new generic </pre> */ public class ProxyFileSetting extends FileSetting { private FileSetting defaultSetting; /** * Constructs a new file setting that defaults to a different setting. */ ProxyFileSetting(Properties defaultProps, Properties props, String key, FileSetting defaultSetting) { super(defaultProps, props, key, new File("impossible-default-limewire-filename3141592")); setPrivate(true); this.defaultSetting = defaultSetting; } @Override public File get() { return isDefault() ? defaultSetting.get() : super.get(); } }