From f4d8e0934edaf5d0beec6d9f36abc6bcf3616bc8 Mon Sep 17 00:00:00 2001 From: CaptainDaVinci Date: Wed, 6 Mar 2019 20:40:58 +0530 Subject: [PATCH 1/3] [WIP] Saving changes and exiting application Fixes #4728 When the user clicks _Save changes_ option, the status of saving is not shown unlike before. I am not sure what might be the cause of that. --- src/main/java/org/jabref/gui/JabRefFrame.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/main/java/org/jabref/gui/JabRefFrame.java b/src/main/java/org/jabref/gui/JabRefFrame.java index 2e41bbc7e64..cd866f692ab 100644 --- a/src/main/java/org/jabref/gui/JabRefFrame.java +++ b/src/main/java/org/jabref/gui/JabRefFrame.java @@ -1334,10 +1334,10 @@ private boolean confirmClose(BasePanel panel) { } catch (Throwable ex) { return false; } - } else { - return !response.isPresent() || !response.get().equals(cancel); + // Exit. + return true; } - return false; + return !response.isPresent() || !response.get().equals(cancel); } private void closeTab(BasePanel panel) { From b5277684c542963d413e05369dd62c27223c23f5 Mon Sep 17 00:00:00 2001 From: CaptainDaVinci Date: Thu, 7 Mar 2019 19:17:06 +0530 Subject: [PATCH 2/3] Refactored confirmClose() method --- src/main/java/org/jabref/gui/JabRefFrame.java | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/src/main/java/org/jabref/gui/JabRefFrame.java b/src/main/java/org/jabref/gui/JabRefFrame.java index ce661b652a5..246dbea31aa 100644 --- a/src/main/java/org/jabref/gui/JabRefFrame.java +++ b/src/main/java/org/jabref/gui/JabRefFrame.java @@ -1317,16 +1317,15 @@ private boolean confirmClose(BasePanel panel) { // The user wants to save. try { SaveDatabaseAction saveAction = new SaveDatabaseAction(panel, Globals.prefs); - if (!saveAction.save()) { - // The action was either canceled or unsuccessful. - output(Localization.lang("Unable to save library")); - return false; + if (saveAction.save()) { + // Saved, now exit. + return true; } + // The action was either canceled or unsuccessful. + output(Localization.lang("Unable to save library")); } catch (Throwable ex) { - return false; + LOGGER.error("A problem occurred when saving the file", ex); } - // Exit. - return true; } return !response.isPresent() || !response.get().equals(cancel); } From e6ba7a8990e845631d4e85b1a1ab2eab990c315f Mon Sep 17 00:00:00 2001 From: CaptainDaVinci Date: Tue, 12 Mar 2019 00:45:49 +0530 Subject: [PATCH 3/3] Display dialog in case of save exception, and remove runInJavaFXThread --- src/main/java/org/jabref/gui/JabRefFrame.java | 5 ++++- .../jabref/gui/exporter/SaveDatabaseAction.java | 17 +++++++---------- 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/src/main/java/org/jabref/gui/JabRefFrame.java b/src/main/java/org/jabref/gui/JabRefFrame.java index 246dbea31aa..4e101271b4e 100644 --- a/src/main/java/org/jabref/gui/JabRefFrame.java +++ b/src/main/java/org/jabref/gui/JabRefFrame.java @@ -1324,8 +1324,11 @@ private boolean confirmClose(BasePanel panel) { // The action was either canceled or unsuccessful. output(Localization.lang("Unable to save library")); } catch (Throwable ex) { - LOGGER.error("A problem occurred when saving the file", ex); + LOGGER.error("A problem occurred when trying to save the file", ex); + dialogService.showErrorDialogAndWait(Localization.lang("Save library"), Localization.lang("Could not save file."), ex); } + // Save was cancelled or an error occurred. + return false; } return !response.isPresent() || !response.get().equals(cancel); } diff --git a/src/main/java/org/jabref/gui/exporter/SaveDatabaseAction.java b/src/main/java/org/jabref/gui/exporter/SaveDatabaseAction.java index 681cf946275..f1bfe5c0739 100644 --- a/src/main/java/org/jabref/gui/exporter/SaveDatabaseAction.java +++ b/src/main/java/org/jabref/gui/exporter/SaveDatabaseAction.java @@ -19,7 +19,6 @@ import org.jabref.gui.JabRefFrame; import org.jabref.gui.dialogs.AutosaveUIManager; import org.jabref.gui.util.BackgroundTask; -import org.jabref.gui.util.DefaultTaskExecutor; import org.jabref.gui.util.FileDialogConfiguration; import org.jabref.logic.autosaveandbackup.AutosaveManager; import org.jabref.logic.autosaveandbackup.BackupManager; @@ -138,15 +137,13 @@ private boolean doSave() { panel.setBaseChanged(false); panel.markExternalChangesAsResolved(); - DefaultTaskExecutor.runInJavaFXThread(() -> { - // Reset title of tab - frame.setTabTitle(panel, panel.getTabTitle(), - panel.getBibDatabaseContext().getDatabaseFile().get().getAbsolutePath()); - frame.output(Localization.lang("Saved library") + " '" - + panel.getBibDatabaseContext().getDatabaseFile().get().getPath() + "'."); - frame.setWindowTitle(); - frame.updateAllTabTitles(); - }); + // Reset title of tab + frame.setTabTitle(panel, panel.getTabTitle(), + panel.getBibDatabaseContext().getDatabaseFile().get().getAbsolutePath()); + frame.output(Localization.lang("Saved library") + " '" + + panel.getBibDatabaseContext().getDatabaseFile().get().getPath() + "'."); + frame.setWindowTitle(); + frame.updateAllTabTitles(); } return success; } catch (SaveException ex) {