From 2b95982d80ba515d41f007af81699eb55c3a2f2b Mon Sep 17 00:00:00 2001 From: Stephen Beitzel Date: Wed, 31 Oct 2018 19:05:26 -0700 Subject: [PATCH 1/4] When initializing the UI from prefs, fire an event to make sure dependent controls get updated. Drive-by code cleanup -- enums are singletons; don't call enum.equals(), just use ==. --- src/main/java/org/jabref/gui/preferences/GeneralTab.java | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/main/java/org/jabref/gui/preferences/GeneralTab.java b/src/main/java/org/jabref/gui/preferences/GeneralTab.java index 2cb74aca865..a9027d38590 100644 --- a/src/main/java/org/jabref/gui/preferences/GeneralTab.java +++ b/src/main/java/org/jabref/gui/preferences/GeneralTab.java @@ -4,6 +4,7 @@ import java.time.format.DateTimeFormatter; import javafx.collections.FXCollections; +import javafx.event.ActionEvent; import javafx.scene.Node; import javafx.scene.control.Button; import javafx.scene.control.CheckBox; @@ -138,6 +139,7 @@ public void setValues() { useOwner.setSelected(prefs.getBoolean(JabRefPreferences.USE_OWNER)); overwriteOwner.setSelected(prefs.getBoolean(JabRefPreferences.OVERWRITE_OWNER)); useTimeStamp.setSelected(prefs.getBoolean(JabRefPreferences.USE_TIME_STAMP)); + useTimeStamp.getOnAction().handle(new ActionEvent()); // pretend we just clicked on the checkbox so it updates the UI overwriteTimeStamp.setSelected(prefs.getBoolean(JabRefPreferences.OVERWRITE_TIME_STAMP)); updateTimeStamp.setSelected(prefs.getBoolean(JabRefPreferences.UPDATE_TIMESTAMP)); updateTimeStamp.setSelected(useTimeStamp.isSelected()); @@ -182,9 +184,9 @@ public void storeSettings() { // Update name of the time stamp field based on preferences InternalBibtexFields.updateTimeStampField(prefs.get(JabRefPreferences.TIME_STAMP_FIELD)); prefs.setDefaultEncoding(encodings.getValue()); - prefs.putBoolean(JabRefPreferences.BIBLATEX_DEFAULT_MODE, biblatexMode.getValue().equals(BibDatabaseMode.BIBLATEX)); + prefs.putBoolean(JabRefPreferences.BIBLATEX_DEFAULT_MODE, biblatexMode.getValue() == BibDatabaseMode.BIBLATEX); - if (!languageSelection.getValue().equals(prefs.getLanguage())) { + if (languageSelection.getValue() != prefs.getLanguage()) { prefs.setLanguage(languageSelection.getValue()); Localization.setLanguage(languageSelection.getValue()); From f13fb6554ff73d740ac00f91335102e59a269a44 Mon Sep 17 00:00:00 2001 From: Stephen Beitzel Date: Wed, 31 Oct 2018 19:12:10 -0700 Subject: [PATCH 2/4] Update changelog to document fix. --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index bab3e63099a..b392fb82590 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -76,6 +76,7 @@ We refer to [GitHub issues](https://github.com/JabRef/jabref/issues) by using `# - We fixed an issue where the list of XMP Exclusion fields in the preferences was not be saved [#4072](https://github.com/JabRef/jabref/issues/4072) - We fixed an issue where the ArXiv Fetcher did not support HTTP URLs [koppor#328](https://github.com/koppor/jabref/issues/328) - We fixed an issue where only one PDF file could be imported [#4422](https://github.com/JabRef/jabref/issues/4422) +- We fixed an issue where the preference checkbox for automatically updating the timestamp wasn't properly enabled [#4427](https://github.com/JabRef/jabref/issues/4427) From 8dd0800997fa2da0191380643c0006f0c57a5753 Mon Sep 17 00:00:00 2001 From: Stephen Beitzel Date: Fri, 2 Nov 2018 19:04:14 -0700 Subject: [PATCH 3/4] Refactor enable/disable logic to its own method --- src/main/java/org/jabref/gui/preferences/GeneralTab.java | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/src/main/java/org/jabref/gui/preferences/GeneralTab.java b/src/main/java/org/jabref/gui/preferences/GeneralTab.java index a9027d38590..aeb0780055c 100644 --- a/src/main/java/org/jabref/gui/preferences/GeneralTab.java +++ b/src/main/java/org/jabref/gui/preferences/GeneralTab.java @@ -4,7 +4,6 @@ import java.time.format.DateTimeFormatter; import javafx.collections.FXCollections; -import javafx.event.ActionEvent; import javafx.scene.Node; import javafx.scene.control.Button; import javafx.scene.control.CheckBox; @@ -63,7 +62,7 @@ public GeneralTab(DialogService dialogService, JabRefPreferences prefs) { if (!useTimeStamp.isSelected()) { updateTimeStamp.setDisable(true); } - useTimeStamp.setOnAction(e->updateTimeStamp.setDisable(!useTimeStamp.isSelected())); + useTimeStamp.setOnAction(e->setDisableUpdateTimeStamp()); overwriteOwner = new CheckBox(Localization.lang("Overwrite")); overwriteTimeStamp = new CheckBox(Localization.lang("If a pasted or imported entry already has the field set, overwrite.")); enforceLegalKeys = new CheckBox(Localization.lang("Enforce legal characters in BibTeX keys")); @@ -134,12 +133,16 @@ public Node getBuilder() { return builder; } + private void setDisableUpdateTimeStamp() { + updateTimeStamp.setDisable(!useTimeStamp.isSelected()); + } + @Override public void setValues() { useOwner.setSelected(prefs.getBoolean(JabRefPreferences.USE_OWNER)); overwriteOwner.setSelected(prefs.getBoolean(JabRefPreferences.OVERWRITE_OWNER)); useTimeStamp.setSelected(prefs.getBoolean(JabRefPreferences.USE_TIME_STAMP)); - useTimeStamp.getOnAction().handle(new ActionEvent()); // pretend we just clicked on the checkbox so it updates the UI + setDisableUpdateTimeStamp(); overwriteTimeStamp.setSelected(prefs.getBoolean(JabRefPreferences.OVERWRITE_TIME_STAMP)); updateTimeStamp.setSelected(prefs.getBoolean(JabRefPreferences.UPDATE_TIMESTAMP)); updateTimeStamp.setSelected(useTimeStamp.isSelected()); From b93b19bc139011a6670962152da1473616c4c61a Mon Sep 17 00:00:00 2001 From: Stephen Beitzel Date: Sat, 3 Nov 2018 12:47:49 -0700 Subject: [PATCH 4/4] Revert CHANGELOG. Change checkbox disable/enable logic to use FX bind / observable. --- CHANGELOG.md | 1 - .../java/org/jabref/gui/preferences/GeneralTab.java | 12 +++--------- 2 files changed, 3 insertions(+), 10 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index b392fb82590..bab3e63099a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -76,7 +76,6 @@ We refer to [GitHub issues](https://github.com/JabRef/jabref/issues) by using `# - We fixed an issue where the list of XMP Exclusion fields in the preferences was not be saved [#4072](https://github.com/JabRef/jabref/issues/4072) - We fixed an issue where the ArXiv Fetcher did not support HTTP URLs [koppor#328](https://github.com/koppor/jabref/issues/328) - We fixed an issue where only one PDF file could be imported [#4422](https://github.com/JabRef/jabref/issues/4422) -- We fixed an issue where the preference checkbox for automatically updating the timestamp wasn't properly enabled [#4427](https://github.com/JabRef/jabref/issues/4427) diff --git a/src/main/java/org/jabref/gui/preferences/GeneralTab.java b/src/main/java/org/jabref/gui/preferences/GeneralTab.java index aeb0780055c..8e065aab85c 100644 --- a/src/main/java/org/jabref/gui/preferences/GeneralTab.java +++ b/src/main/java/org/jabref/gui/preferences/GeneralTab.java @@ -26,6 +26,8 @@ import org.jabref.model.entry.InternalBibtexFields; import org.jabref.preferences.JabRefPreferences; +import static javafx.beans.binding.Bindings.not; + class GeneralTab extends Pane implements PrefsTab { private final CheckBox useOwner; @@ -59,10 +61,7 @@ public GeneralTab(DialogService dialogService, JabRefPreferences prefs) { updateTimeStamp = new CheckBox(Localization.lang("Update timestamp on modification")); useTimeStamp = new CheckBox(Localization.lang("Mark new entries with addition date") + ". " + Localization.lang("Date format") + ':'); - if (!useTimeStamp.isSelected()) { - updateTimeStamp.setDisable(true); - } - useTimeStamp.setOnAction(e->setDisableUpdateTimeStamp()); + updateTimeStamp.disableProperty().bind(not(useTimeStamp.selectedProperty())); overwriteOwner = new CheckBox(Localization.lang("Overwrite")); overwriteTimeStamp = new CheckBox(Localization.lang("If a pasted or imported entry already has the field set, overwrite.")); enforceLegalKeys = new CheckBox(Localization.lang("Enforce legal characters in BibTeX keys")); @@ -133,16 +132,11 @@ public Node getBuilder() { return builder; } - private void setDisableUpdateTimeStamp() { - updateTimeStamp.setDisable(!useTimeStamp.isSelected()); - } - @Override public void setValues() { useOwner.setSelected(prefs.getBoolean(JabRefPreferences.USE_OWNER)); overwriteOwner.setSelected(prefs.getBoolean(JabRefPreferences.OVERWRITE_OWNER)); useTimeStamp.setSelected(prefs.getBoolean(JabRefPreferences.USE_TIME_STAMP)); - setDisableUpdateTimeStamp(); overwriteTimeStamp.setSelected(prefs.getBoolean(JabRefPreferences.OVERWRITE_TIME_STAMP)); updateTimeStamp.setSelected(prefs.getBoolean(JabRefPreferences.UPDATE_TIMESTAMP)); updateTimeStamp.setSelected(useTimeStamp.isSelected());