Skip to content

Commit 3e2e99a

Browse files
Make validation optional for saving library properties preferences (#13488)
* Make validation optional for saving library properties preferences and improve error messages * - Add CHANGELOG.md entry - Renamed method to `promptUserToConfirmAction` to clarify its purpose - Add localization for dialog messages --------- Co-authored-by: Christoph <[email protected]>
1 parent 67c2ebe commit 3e2e99a

File tree

3 files changed

+21
-13
lines changed

3 files changed

+21
-13
lines changed

CHANGELOG.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,8 @@ Note that this project **does not** adhere to [Semantic Versioning](https://semv
5454
- When importing a PDF, there is no empty entry column shown in the multi merge dialog. [#13132](https://github.com/JabRef/jabref/issues/13132)
5555
- 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)
5656
- 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).
57-
- Improved file exists warning dialog with clearer options and tooltips [#12565](https://github.com/JabRef/jabref/issues/12565)]
57+
- 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)
58+
- We improved file exists warning dialog with clearer options and tooltips [#12565](https://github.com/JabRef/jabref/issues/12565)]
5859

5960
### Fixed
6061

jabgui/src/main/java/org/jabref/gui/libraryproperties/general/GeneralPropertiesViewModel.java

Lines changed: 15 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -98,21 +98,21 @@ public void storeSettings() {
9898
String librarySpecificFileDirectory = librarySpecificDirectoryProperty.getValue().trim();
9999
if (librarySpecificFileDirectory.isEmpty()) {
100100
newMetaData.clearLibrarySpecificFileDirectory();
101-
} else {
101+
} else if (librarySpecificFileDirectoryStatus().isValid()) {
102102
newMetaData.setLibrarySpecificFileDirectory(librarySpecificFileDirectory);
103103
}
104104

105105
String userSpecificFileDirectory = userSpecificFileDirectoryProperty.getValue();
106106
if (userSpecificFileDirectory.isEmpty()) {
107107
newMetaData.clearUserFileDirectory(preferences.getFilePreferences().getUserAndHost());
108-
} else {
108+
} else if (userSpecificFileDirectoryStatus().isValid()) {
109109
newMetaData.setUserFileDirectory(preferences.getFilePreferences().getUserAndHost(), userSpecificFileDirectory);
110110
}
111111

112112
String latexFileDirectory = laTexFileDirectoryProperty.getValue();
113113
if (latexFileDirectory.isEmpty()) {
114114
newMetaData.clearLatexFileDirectory(preferences.getFilePreferences().getUserAndHost());
115-
} else {
115+
} else if (laTexFileDirectoryStatus().isValid()) {
116116
newMetaData.setLatexFileDirectory(preferences.getFilePreferences().getUserAndHost(), Path.of(latexFileDirectory));
117117
}
118118

@@ -137,9 +137,9 @@ public boolean validateSettings() {
137137
ValidationStatus userSpecificFileDirectoryStatus = userSpecificFileDirectoryStatus();
138138
ValidationStatus laTexFileDirectoryStatus = laTexFileDirectoryStatus();
139139

140-
return validateAndShowError(librarySpecificFileDirectoryStatus) &&
141-
validateAndShowError(userSpecificFileDirectoryStatus) &&
142-
validateAndShowError(laTexFileDirectoryStatus);
140+
return promptUserToConfirmAction(librarySpecificFileDirectoryStatus) &&
141+
promptUserToConfirmAction(userSpecificFileDirectoryStatus) &&
142+
promptUserToConfirmAction(laTexFileDirectoryStatus);
143143
}
144144

145145
public void browseLibrarySpecificDir() {
@@ -231,7 +231,7 @@ private ValidationMessage validateDirectory(String directoryPath, String message
231231
.map(Files::isDirectory)
232232
.orElse(false)) {
233233
return ValidationMessage.error(
234-
Localization.lang("File directory '%0' not found.\nCheck \"%1\" file directory path.", directoryPath, messageKey)
234+
Localization.lang("The file directory '%0' for the %1 file path is not found or is inaccessible.", directoryPath, messageKey)
235235
);
236236
}
237237
} catch (InvalidPathException ex) {
@@ -243,11 +243,15 @@ private ValidationMessage validateDirectory(String directoryPath, String message
243243
return null;
244244
}
245245

246-
private boolean validateAndShowError(ValidationStatus status) {
246+
private boolean promptUserToConfirmAction(ValidationStatus status) {
247247
if (!status.isValid()) {
248-
status.getHighestMessage().ifPresent(message ->
249-
dialogService.showErrorDialogAndWait(message.getMessage()));
250-
return false;
248+
return status.getHighestMessage()
249+
.map(message -> dialogService.showConfirmationDialogAndWait(
250+
Localization.lang("Action required: override default file directories"),
251+
message.getMessage() + "\n" + Localization.lang("Would you like to save your other preferences?"),
252+
Localization.lang("Save"),
253+
Localization.lang("Return to Properties")))
254+
.orElse(false);
251255
}
252256
return true;
253257
}

jablib/src/main/resources/l10n/JabRef_en.properties

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1569,8 +1569,11 @@ Clears\ the\ field\ completely.=Clears the field completely.
15691569

15701570
Main\ file\ directory=Main file directory
15711571
Main\ file\ directory\ '%0'\ not\ found.\nCheck\ the\ tab\ "Linked\ files".=Main file directory '%0' not found.\nCheck the tab "Linked files".
1572-
File\ directory\ '%0'\ not\ found.\nCheck\ "%1"\ file\ directory\ path.=File directory '%0' not found.\nCheck "%1" file directory path.
1572+
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.
15731573
Invalid\ path\:\ '%0'.\nCheck\ "%1".=Invalid path: '%0'.\nCheck "%1".
1574+
Action\ required\:\ override\ default\ file\ directories=Action required: override default file directories
1575+
Return\ to\ Properties=Return to Properties
1576+
Would\ you\ like\ to\ save\ your\ other\ preferences?=Would you like to save your other preferences?
15741577
No\ library\ selected=No library selected
15751578

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

0 commit comments

Comments
 (0)