package org.jabref.logic.openoffice; import java.io.File; import java.util.Arrays; import java.util.List; import org.jabref.logic.l10n.Localization; import org.jabref.preferences.JabRefPreferences; /** * The OpenOffice connection preferences are: * OO_PATH main directory for OO/LO installation, used to detect location on Win/OS X when using manual connect * OO_EXECUTABLE_PATH path to soffice-file * OO_JARS_PATH directory that contains juh.jar, jurt.jar, ridl.jar, unoil.jar * OO_SYNC_WHEN_CITING true if the reference list is updated when adding a new citation * OO_SHOW_PANEL true if the OO panel is shown on startup * OO_USE_ALL_OPEN_DATABASES true if all databases should be used when citing * OO_BIBLIOGRAPHY_STYLE_FILE path to the used style file * OO_EXTERNAL_STYLE_FILES list with paths to external style files */ public class OpenOfficePreferences { public static final String DEFAULT_WINDOWS_PATH = "C:\\Program Files\\OpenOffice.org 4"; public static final String DEFAULT_WIN_EXEC_PATH = "C:\\Program Files\\OpenOffice.org 4\\program\\soffice.exe"; public static final String WINDOWS_EXECUTABLE = "soffice.exe"; public static final String DEFAULT_OSX_PATH = "/Applications/OpenOffice.org.app"; public static final String DEFAULT_OSX_EXEC_PATH = "/Applications/OpenOffice.org.app/Contents/MacOS/soffice"; public static final String OSX_EXECUTABLE = "soffice"; public static final String DEFAULT_LINUX_PATH = "/opt/openoffice4"; public static final String DEFAULT_LINUX_EXEC_PATH = "/opt/openoffice4/program/soffice"; public static final String LINUX_EXECUTABLE = "soffice"; public static final List<String> OO_JARS = Arrays.asList("unoil.jar", "jurt.jar", "juh.jar", "ridl.jar"); private final JabRefPreferences preferences; public OpenOfficePreferences(JabRefPreferences preferences) { this.preferences = preferences; } public void updateConnectionParams(String ooPath, String execPath, String jarsPath) { setOOPath(ooPath); setExecutablePath(execPath); setJarsPath(jarsPath); } public boolean checkAutoDetectedPaths() { if (preferences.hasKey(JabRefPreferences.OO_PATH)) { return new File(getExecutablePath()).exists(); } else { return false; } } public String clearConnectionSettings() { preferences.clear(JabRefPreferences.OO_PATH); preferences.clear(JabRefPreferences.OO_EXECUTABLE_PATH); preferences.clear(JabRefPreferences.OO_JARS_PATH); return Localization.lang("Cleared connection settings."); } public String getJarsPath() { return preferences.get(JabRefPreferences.OO_JARS_PATH); } public void setJarsPath(String path) { preferences.put(JabRefPreferences.OO_JARS_PATH, path); } public String getExecutablePath() { return preferences.get(JabRefPreferences.OO_EXECUTABLE_PATH); } public void setExecutablePath(String path) { preferences.put(JabRefPreferences.OO_EXECUTABLE_PATH, path); } public String getInstallationPath() { return preferences.get(JabRefPreferences.OO_PATH); } public void setOOPath(String path) { preferences.put(JabRefPreferences.OO_PATH, path); } public boolean useAllDatabases() { return preferences.getBoolean(JabRefPreferences.OO_USE_ALL_OPEN_BASES); } public void setUseAllDatabases(boolean use) { preferences.putBoolean(JabRefPreferences.OO_USE_ALL_OPEN_BASES, use); } public boolean syncWhenCiting() { return preferences.getBoolean(JabRefPreferences.OO_SYNC_WHEN_CITING); } public void setSyncWhenCiting(boolean sync) { preferences.putBoolean(JabRefPreferences.OO_SYNC_WHEN_CITING, sync); } public boolean showPanel() { return preferences.getBoolean(JabRefPreferences.OO_SHOW_PANEL); } public void setShowPanel(boolean show) { preferences.putBoolean(JabRefPreferences.OO_SHOW_PANEL, show); } public List<String> getExternalStyles() { return preferences.getStringList(JabRefPreferences.OO_EXTERNAL_STYLE_FILES); } public void setExternalStyles(List<String> filenames) { preferences.putStringList(JabRefPreferences.OO_EXTERNAL_STYLE_FILES, filenames); } public String getCurrentStyle() { return preferences.get(JabRefPreferences.OO_BIBLIOGRAPHY_STYLE_FILE); } public void clearCurrentStyle() { preferences.remove(JabRefPreferences.OO_BIBLIOGRAPHY_STYLE_FILE); } public void setCurrentStyle(String path) { preferences.put(JabRefPreferences.OO_BIBLIOGRAPHY_STYLE_FILE, path); } }