diff --git a/src/main/java/org/jabref/gui/util/ThemeLoader.java b/src/main/java/org/jabref/gui/util/ThemeLoader.java
index 7a7004d3445..e9d9a7b40e8 100644
--- a/src/main/java/org/jabref/gui/util/ThemeLoader.java
+++ b/src/main/java/org/jabref/gui/util/ThemeLoader.java
@@ -36,7 +36,8 @@
*/
public class ThemeLoader {
- private static final String DEFAULT_PATH_MAIN_CSS = JabRefFrame.class.getResource("Base.css").toExternalForm();
+ public static final String DEFAULT_MAIN_CSS = "Base.css";
+ private static final String DEFAULT_PATH_MAIN_CSS = JabRefFrame.class.getResource(DEFAULT_MAIN_CSS).toExternalForm();
private static final Logger LOGGER = LoggerFactory.getLogger(ThemeLoader.class);
private String cssProperty = System.getProperty("jabref.theme.css");
private final FileUpdateMonitor fileUpdateMonitor;
@@ -57,25 +58,31 @@ public ThemeLoader(FileUpdateMonitor fileUpdateMonitor, JabRefPreferences jabRef
}
}
+
/**
* Installs the base css file as a stylesheet in the given scene.
* Changes in the css file lead to a redraw of the scene using the new css file.
*/
public void installBaseCss(Scene scene, JabRefPreferences preferences) {
- addAndWatchForChanges(scene, DEFAULT_PATH_MAIN_CSS, 0);
-
if (StringUtil.isNotBlank(cssProperty)) {
final Path path = Paths.get(cssProperty);
if (Files.isReadable(path)) {
String cssUrl = path.toUri().toString();
- addAndWatchForChanges(scene, cssUrl, 1);
+ addAndWatchForChanges(scene, cssUrl, 0);
+ } else {
+ LOGGER.warn(path.toAbsolutePath() + " is not readable");
}
+ } else {
+ addAndWatchForChanges(scene, DEFAULT_PATH_MAIN_CSS, 0);
}
preferences.getFontSize().ifPresent(size -> scene.getRoot().setStyle("-fx-font-size: " + size + "pt;"));
}
private void addAndWatchForChanges(Scene scene, String cssUrl, int index) {
+ // avoid repeat add
+ if (scene.getStylesheets().contains(cssUrl)) return;
+
scene.getStylesheets().add(index, cssUrl);
try {
@@ -86,7 +93,6 @@ private void addAndWatchForChanges(Scene scene, String cssUrl, int index) {
LOGGER.info("Enabling live reloading of " + cssFile);
fileUpdateMonitor.addListenerForFile(cssFile, () -> {
LOGGER.info("Reload css file " + cssFile);
-
DefaultTaskExecutor.runInJavaFXThread(() -> {
scene.getStylesheets().remove(cssUrl);
scene.getStylesheets().add(index, cssUrl);
diff --git a/src/main/java/org/jabref/preferences/JabRefPreferences.java b/src/main/java/org/jabref/preferences/JabRefPreferences.java
index 45f724fc252..79d0afc5a5f 100644
--- a/src/main/java/org/jabref/preferences/JabRefPreferences.java
+++ b/src/main/java/org/jabref/preferences/JabRefPreferences.java
@@ -51,6 +51,7 @@
import org.jabref.gui.maintable.ColumnPreferences;
import org.jabref.gui.maintable.MainTablePreferences;
import org.jabref.gui.preferences.ImportSettingsTab;
+import org.jabref.gui.util.ThemeLoader;
import org.jabref.logic.bibtex.FieldContentParserPreferences;
import org.jabref.logic.bibtex.LatexFieldFormatterPreferences;
import org.jabref.logic.bibtexkeypattern.BibtexKeyPatternPreferences;
@@ -780,6 +781,8 @@ private JabRefPreferences() {
+ "\\begin{comment}
Comment: \\format[HTMLChars]{\\comment} \\end{comment}"
+ "__NEWLINE__