package org.lobobrowser.primary.settings;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
import org.lobobrowser.store.StorageManager;
public class ToolsSettings implements Serializable {
private static final Logger logger = Logger.getLogger(ToolsSettings.class.getName());
private static final ToolsSettings instance;
private static final long serialVersionUID = 22574500006000800L;
private Collection<SearchEngine> searchEngines;
private SearchEngine selectedSearchEngine;
private java.io.File downloadDirectory;
private java.io.File openFileDirectory;
static {
ToolsSettings ins = null;
try {
ins = (ToolsSettings) StorageManager.getInstance().retrieveSettings(ToolsSettings.class.getSimpleName(),
ToolsSettings.class.getClassLoader());
} catch (final Exception err) {
logger.log(Level.WARNING, "getInstance(): Unable to retrieve settings.", err);
}
if (ins == null) {
ins = new ToolsSettings();
}
instance = ins;
}
private ToolsSettings() {
this.restoreDefaults();
}
public void restoreDefaults() {
final List<SearchEngine> searchEngines = getDefaultSearchEngines();
this.searchEngines = searchEngines;
this.selectedSearchEngine = searchEngines.get(0);
/*
final String userHome = System.getProperty("user.home");
final File userHomeDirectory = new File(userHome);
this.downloadDirectory = new File(userHomeDirectory, "download");
if (!this.downloadDirectory.exists()) {
this.downloadDirectory.mkdirs();
}*/
}
public static ToolsSettings getInstance() {
return instance;
}
private static List<SearchEngine> getDefaultSearchEngines() {
final List<SearchEngine> searchEngines = new ArrayList<>();
searchEngines.add(duckDuckGoSearch());
searchEngines.add(wikipediaSearch());
searchEngines.add(googleWebSearch());
searchEngines.add(yahooWebSearch());
return searchEngines;
}
private static SearchEngine googleWebSearch() {
return new SearchEngine("Google Web Search", "Google's main search engine.", "https://google.com/search", "q");
}
private static SearchEngine yahooWebSearch() {
return new SearchEngine("Yahoo! Web Search", "Yahoo's web search engine.", "https://search.yahoo.com/search", "p");
}
private static SearchEngine duckDuckGoSearch() {
return new SearchEngine("Duck Duck Go", "Duck Duck Go.", "https://duckduckgo.com/html", "q");
}
private static SearchEngine wikipediaSearch() {
return new SearchEngine("Wikipedia", "English Wikipedia article search.", "https://en.wikipedia.org/wiki/Special:Search", "search");
}
public void save() {
try {
StorageManager.getInstance().saveSettings(this.getClass().getSimpleName(), this);
} catch (final java.io.IOException ioe) {
logger.log(Level.WARNING, "Unable to save settings: " + this.getClass().getSimpleName() + ".", ioe);
}
}
public Collection<SearchEngine> getSearchEngines() {
return this.searchEngines;
}
public void setSearchEngines(final Collection<SearchEngine> searchEngines) {
this.searchEngines = searchEngines;
}
public SearchEngine getSelectedSearchEngine() {
return selectedSearchEngine;
}
public void setSelectedSearchEngine(final SearchEngine selectedSearchEngine) {
this.selectedSearchEngine = selectedSearchEngine;
}
public java.io.File getDownloadDirectory() {
return downloadDirectory;
}
public void setDownloadDirectory(final java.io.File downloadDirectory) {
this.downloadDirectory = downloadDirectory;
}
public java.io.File getOpenFileDirectory() {
return openFileDirectory;
}
public void setOpenFileDirectory(final java.io.File openFileDirectory) {
this.openFileDirectory = openFileDirectory;
}
}