Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,8 @@ Note that this project **does not** adhere to [Semantic Versioning](https://semv
- When importing a PDF, there is no empty entry column shown in the multi merge dialog. [#13132](https://github.com/JabRef/jabref/issues/13132)
- We added a progress dialog to the "Check consistency" action and progress output to the corresponding cli command. [#12487](https://github.com/JabRef/jabref/issues/12487)
- We made the `check-consistency` command of the toolkit always return an exit code; 0 means no issues found, a non-zero exit code reflects any issues, which allows CI to fail in these cases [#13328](https://github.com/JabRef/jabref/issues/13328).
- Improved file exists warning dialog with clearer options and tooltips [#12565](https://github.com/JabRef/jabref/issues/12565)]
- We changed the validation error dialog for overriding the default file directories to a confirmation dialog for saving other preferences under the library properties. [#13488](https://github.com/JabRef/jabref/pull/13488)
- We improved file exists warning dialog with clearer options and tooltips [#12565](https://github.com/JabRef/jabref/issues/12565)]

### Fixed

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -98,21 +98,21 @@ public void storeSettings() {
String librarySpecificFileDirectory = librarySpecificDirectoryProperty.getValue().trim();
if (librarySpecificFileDirectory.isEmpty()) {
newMetaData.clearLibrarySpecificFileDirectory();
} else {
} else if (librarySpecificFileDirectoryStatus().isValid()) {
newMetaData.setLibrarySpecificFileDirectory(librarySpecificFileDirectory);
}

String userSpecificFileDirectory = userSpecificFileDirectoryProperty.getValue();
if (userSpecificFileDirectory.isEmpty()) {
newMetaData.clearUserFileDirectory(preferences.getFilePreferences().getUserAndHost());
} else {
} else if (userSpecificFileDirectoryStatus().isValid()) {
newMetaData.setUserFileDirectory(preferences.getFilePreferences().getUserAndHost(), userSpecificFileDirectory);
}

String latexFileDirectory = laTexFileDirectoryProperty.getValue();
if (latexFileDirectory.isEmpty()) {
newMetaData.clearLatexFileDirectory(preferences.getFilePreferences().getUserAndHost());
} else {
} else if (laTexFileDirectoryStatus().isValid()) {
newMetaData.setLatexFileDirectory(preferences.getFilePreferences().getUserAndHost(), Path.of(latexFileDirectory));
}

Expand All @@ -137,9 +137,9 @@ public boolean validateSettings() {
ValidationStatus userSpecificFileDirectoryStatus = userSpecificFileDirectoryStatus();
ValidationStatus laTexFileDirectoryStatus = laTexFileDirectoryStatus();

return validateAndShowError(librarySpecificFileDirectoryStatus) &&
validateAndShowError(userSpecificFileDirectoryStatus) &&
validateAndShowError(laTexFileDirectoryStatus);
return promptUserToConfirmAction(librarySpecificFileDirectoryStatus) &&
promptUserToConfirmAction(userSpecificFileDirectoryStatus) &&
promptUserToConfirmAction(laTexFileDirectoryStatus);
}

public void browseLibrarySpecificDir() {
Expand Down Expand Up @@ -231,7 +231,7 @@ private ValidationMessage validateDirectory(String directoryPath, String message
.map(Files::isDirectory)
.orElse(false)) {
return ValidationMessage.error(
Localization.lang("File directory '%0' not found.\nCheck \"%1\" file directory path.", directoryPath, messageKey)
Localization.lang("The file directory '%0' for the %1 file path is not found or is inaccessible.", directoryPath, messageKey)
);
}
} catch (InvalidPathException ex) {
Expand All @@ -243,11 +243,15 @@ private ValidationMessage validateDirectory(String directoryPath, String message
return null;
}

private boolean validateAndShowError(ValidationStatus status) {
private boolean promptUserToConfirmAction(ValidationStatus status) {
if (!status.isValid()) {
status.getHighestMessage().ifPresent(message ->
dialogService.showErrorDialogAndWait(message.getMessage()));
return false;
return status.getHighestMessage()
.map(message -> dialogService.showConfirmationDialogAndWait(
Localization.lang("Action required: override default file directories"),
message.getMessage() + "\n" + Localization.lang("Would you like to save your other preferences?"),
Localization.lang("Save"),
Localization.lang("Return to Properties")))
.orElse(false);
}
return true;
}
Expand Down
5 changes: 4 additions & 1 deletion jablib/src/main/resources/l10n/JabRef_en.properties
Original file line number Diff line number Diff line change
Expand Up @@ -1569,8 +1569,11 @@ Clears\ the\ field\ completely.=Clears the field completely.

Main\ file\ directory=Main file directory
Main\ file\ directory\ '%0'\ not\ found.\nCheck\ the\ tab\ "Linked\ files".=Main file directory '%0' not found.\nCheck the tab "Linked files".
File\ directory\ '%0'\ not\ found.\nCheck\ "%1"\ file\ directory\ path.=File directory '%0' not found.\nCheck "%1" file directory path.
The\ file\ directory\ '%0'\ for\ the\ %1\ file\ path\ is\ not\ found\ or\ is\ inaccessible.=The file directory '%0' for the %1 file path is not found or is inaccessible.
Invalid\ path\:\ '%0'.\nCheck\ "%1".=Invalid path: '%0'.\nCheck "%1".
Action\ required\:\ override\ default\ file\ directories=Action required: override default file directories
Return\ to\ Properties=Return to Properties
Would\ you\ like\ to\ save\ your\ other\ preferences?=Would you like to save your other preferences?
No\ library\ selected=No library selected

This\ operation\ requires\ exactly\ one\ item\ to\ be\ selected.=This operation requires exactly one item to be selected.
Expand Down