Skip to content

Commit

Permalink
use set of fields
Browse files Browse the repository at this point in the history
store in prefs
  • Loading branch information
Siedlerchr committed Dec 27, 2022
1 parent d3684b3 commit b1e483f
Show file tree
Hide file tree
Showing 3 changed files with 12 additions and 5 deletions.
1 change: 1 addition & 0 deletions src/main/java/org/jabref/gui/EntryTypeViewModel.java
Original file line number Diff line number Diff line change
Expand Up @@ -207,3 +207,4 @@ public void runFetcherWorker() {
});
}
}

Original file line number Diff line number Diff line change
Expand Up @@ -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;

Expand All @@ -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;
Expand Down Expand Up @@ -64,17 +67,16 @@ public Field fromString(String string) {

private final Validator entryTypeValidator;
private final Validator fieldValidator;
private List<Field> multiLineFields = new ArrayList<>();

Predicate<Field> isMultiline = (field) -> this.multiLineFields.contains(field);
private final Set<Field> multiLineFields = new HashSet<>();

Predicate<Field> 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();
Expand Down Expand Up @@ -198,11 +200,13 @@ public void resetAllCustomEntryTypes() {
}

public void apply() {
Set<Field> multilineFields = new HashSet<>();
for (EntryTypeViewModel typeWithField : entryTypesWithFields) {
BibEntryType type = typeWithField.entryType().getValue();
List<FieldViewModel> allFields = typeWithField.fields();

allFields.stream().filter(f->f.getField().isMultiLineDefined()).collect(Collectors.toList());
List<Field> multilineFieldsForType = allFields.stream().map(FieldViewModel::getField).filter(Field::isMultiLineDefined).collect(Collectors.toList());
multilineFields.addAll(multilineFieldsForType);

List<OrFields> requiredFields = allFields.stream().filter(field -> field.getFieldType() == FieldType.REQUIRED).map(FieldViewModel::getField).map(OrFields::new).collect(Collectors.toList());
List<BibField> otherFields = allFields.stream().filter(field -> field.getFieldType() == FieldType.OPTIONAL).map(bibField -> new BibField(bibField.getField(), bibField.getFieldPriority())).collect(Collectors.toList());
Expand All @@ -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),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
import org.jabref.model.entry.field.Field;

public class CustomEntryTypeViewModel extends EntryTypeViewModel {

public CustomEntryTypeViewModel(BibEntryType entryType, Predicate<Field> isMultiline) {
super(entryType, isMultiline);
}
Expand Down

0 comments on commit b1e483f

Please sign in to comment.