From b1e483f630ccaa535b0bea182c355f08491a3646 Mon Sep 17 00:00:00 2001 From: Siedlerchr Date: Tue, 27 Dec 2022 21:04:06 +0100 Subject: [PATCH] use set of fields store in prefs --- .../java/org/jabref/gui/EntryTypeViewModel.java | 1 + .../CustomEntryTypeDialogViewModel.java | 15 ++++++++++----- .../CustomEntryTypeViewModel.java | 1 + 3 files changed, 12 insertions(+), 5 deletions(-) diff --git a/src/main/java/org/jabref/gui/EntryTypeViewModel.java b/src/main/java/org/jabref/gui/EntryTypeViewModel.java index 233c1a8edcb..c0c7a9592d2 100644 --- a/src/main/java/org/jabref/gui/EntryTypeViewModel.java +++ b/src/main/java/org/jabref/gui/EntryTypeViewModel.java @@ -207,3 +207,4 @@ public void runFetcherWorker() { }); } } + diff --git a/src/main/java/org/jabref/gui/customentrytypes/CustomEntryTypeDialogViewModel.java b/src/main/java/org/jabref/gui/customentrytypes/CustomEntryTypeDialogViewModel.java index 531ed4cd810..7ddda783049 100644 --- a/src/main/java/org/jabref/gui/customentrytypes/CustomEntryTypeDialogViewModel.java +++ b/src/main/java/org/jabref/gui/customentrytypes/CustomEntryTypeDialogViewModel.java @@ -3,7 +3,9 @@ import java.util.ArrayList; import java.util.Collection; import java.util.Collections; +import java.util.HashSet; import java.util.List; +import java.util.Set; import java.util.function.Predicate; import java.util.stream.Collectors; @@ -25,6 +27,7 @@ import org.jabref.model.entry.field.Field; import org.jabref.model.entry.field.FieldFactory; import org.jabref.model.entry.field.FieldPriority; +import org.jabref.model.entry.field.FieldProperty; import org.jabref.model.entry.field.OrFields; import org.jabref.model.entry.types.EntryType; import org.jabref.model.entry.types.UnknownEntryType; @@ -64,17 +67,16 @@ public Field fromString(String string) { private final Validator entryTypeValidator; private final Validator fieldValidator; - private List multiLineFields = new ArrayList<>(); - - Predicate isMultiline = (field) -> this.multiLineFields.contains(field); + private final Set multiLineFields = new HashSet<>(); + Predicate isMultiline = (field) -> this.multiLineFields.contains(field) || field.getProperties().contains(FieldProperty.MULTILINE_TEXT); public CustomEntryTypeDialogViewModel(BibDatabaseMode mode, PreferencesService preferencesService, BibEntryTypesManager entryTypesManager, DialogService dialogService) { this.mode = mode; this.preferencesService = preferencesService; this.entryTypesManager = entryTypesManager; this.dialogService = dialogService; - this.multiLineFields = preferencesService.getFieldContentParserPreferences().getNonWrappableFields(); + this.multiLineFields.addAll(preferencesService.getFieldContentParserPreferences().getNonWrappableFields()); addAllTypes(); @@ -198,11 +200,13 @@ public void resetAllCustomEntryTypes() { } public void apply() { + Set multilineFields = new HashSet<>(); for (EntryTypeViewModel typeWithField : entryTypesWithFields) { BibEntryType type = typeWithField.entryType().getValue(); List allFields = typeWithField.fields(); - allFields.stream().filter(f->f.getField().isMultiLineDefined()).collect(Collectors.toList()); + List multilineFieldsForType = allFields.stream().map(FieldViewModel::getField).filter(Field::isMultiLineDefined).collect(Collectors.toList()); + multilineFields.addAll(multilineFieldsForType); List requiredFields = allFields.stream().filter(field -> field.getFieldType() == FieldType.REQUIRED).map(FieldViewModel::getField).map(OrFields::new).collect(Collectors.toList()); List otherFields = allFields.stream().filter(field -> field.getFieldType() == FieldType.OPTIONAL).map(bibField -> new BibField(bibField.getField(), bibField.getFieldPriority())).collect(Collectors.toList()); @@ -215,6 +219,7 @@ public void apply() { entryTypesManager.removeCustomOrModifiedEntryType(entryType, mode); } + preferencesService.getImportExportPreferences().setNonWrappableFields(multilineFields.stream().map(Field::getDisplayName).collect(Collectors.joining(";"))); preferencesService.storeCustomEntryTypes(entryTypesManager); // Reload types from preferences to make sure any modifications are present when reopening the dialog entryTypesManager.addCustomOrModifiedTypes(preferencesService.getBibEntryTypes(BibDatabaseMode.BIBTEX), diff --git a/src/main/java/org/jabref/gui/customentrytypes/CustomEntryTypeViewModel.java b/src/main/java/org/jabref/gui/customentrytypes/CustomEntryTypeViewModel.java index d76b877bb2f..1d8691060c4 100644 --- a/src/main/java/org/jabref/gui/customentrytypes/CustomEntryTypeViewModel.java +++ b/src/main/java/org/jabref/gui/customentrytypes/CustomEntryTypeViewModel.java @@ -6,6 +6,7 @@ import org.jabref.model.entry.field.Field; public class CustomEntryTypeViewModel extends EntryTypeViewModel { + public CustomEntryTypeViewModel(BibEntryType entryType, Predicate isMultiline) { super(entryType, isMultiline); }