diff --git a/CHANGELOG.md b/CHANGELOG.md index e1e59e5e77f..0e34874359a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -13,6 +13,7 @@ Note that this project **does not** adhere to [Semantic Versioning](https://semv - We added support for offline extracting refereferences from PDFs following the IEEE format. [#11156](https://github.com/JabRef/jabref/pull/11156) - We added a new keyboard shortcut ctrl + , to open the preferences. [#11154](https://github.com/JabRef/jabref/pull/11154) +- We added value selection (such as for month) for content selectors in custom entry types. [#11109](https://github.com/JabRef/jabref/issues/11109) ### Changed diff --git a/src/main/java/org/jabref/gui/fieldeditors/CustomFieldEditorViewModel.java b/src/main/java/org/jabref/gui/fieldeditors/CustomFieldEditorViewModel.java new file mode 100644 index 00000000000..d51d99568e8 --- /dev/null +++ b/src/main/java/org/jabref/gui/fieldeditors/CustomFieldEditorViewModel.java @@ -0,0 +1,39 @@ +package org.jabref.gui.fieldeditors; + +import java.util.List; + +import javax.swing.undo.UndoManager; + +import org.jabref.gui.autocompleter.SuggestionProvider; +import org.jabref.logic.integrity.FieldCheckers; +import org.jabref.model.database.BibDatabaseContext; +import org.jabref.model.entry.field.Field; + +import com.google.common.collect.BiMap; +import com.google.common.collect.HashBiMap; + +public class CustomFieldEditorViewModel extends MapBasedEditorViewModel { + + private BiMap itemMap; + + public CustomFieldEditorViewModel(Field field, SuggestionProvider suggestionProvider, + FieldCheckers fieldCheckers, UndoManager undoManager, BibDatabaseContext databaseContext) { + super(field, suggestionProvider, fieldCheckers, undoManager); + + List values = databaseContext.getMetaData().getContentSelectorValuesForField(field); + itemMap = HashBiMap.create(values.size()); + for (String value : values) { + itemMap.put(value, value); + } + } + + @Override + protected BiMap getItemMap() { + return itemMap; + } + + @Override + public String convertToDisplayText(String object) { + return object; + } +} diff --git a/src/main/java/org/jabref/gui/fieldeditors/FieldEditors.java b/src/main/java/org/jabref/gui/fieldeditors/FieldEditors.java index bbdefc05f1c..c86b5fc4a67 100644 --- a/src/main/java/org/jabref/gui/fieldeditors/FieldEditors.java +++ b/src/main/java/org/jabref/gui/fieldeditors/FieldEditors.java @@ -98,6 +98,8 @@ public static FieldEditorFX getForField(final Field field, return new CitationKeyEditor(field, suggestionProvider, fieldCheckers, databaseContext); } else if (fieldProperties.contains(FieldProperty.MARKDOWN)) { return new MarkdownEditor(field, suggestionProvider, fieldCheckers, preferences, undoManager); + } else if (fieldProperties.contains(FieldProperty.CUSTOM_FIELD) && !isMultiLine) { + return new OptionEditor<>(new CustomFieldEditorViewModel(field, suggestionProvider, fieldCheckers, undoManager, databaseContext)); } else { // default return new SimpleEditor(field, suggestionProvider, fieldCheckers, preferences, isMultiLine, undoManager); diff --git a/src/main/java/org/jabref/model/entry/field/FieldProperty.java b/src/main/java/org/jabref/model/entry/field/FieldProperty.java index 28030da53ec..bf9bc58dd6d 100644 --- a/src/main/java/org/jabref/model/entry/field/FieldProperty.java +++ b/src/main/java/org/jabref/model/entry/field/FieldProperty.java @@ -26,5 +26,6 @@ public enum FieldProperty { TYPE, VERBATIM, YES_NO, - COMMENT + COMMENT, + CUSTOM_FIELD } diff --git a/src/main/java/org/jabref/model/entry/field/UnknownField.java b/src/main/java/org/jabref/model/entry/field/UnknownField.java index 5e4ff7bc39d..3fee64991c1 100644 --- a/src/main/java/org/jabref/model/entry/field/UnknownField.java +++ b/src/main/java/org/jabref/model/entry/field/UnknownField.java @@ -32,7 +32,7 @@ public UnknownField(String name, String displayName, FieldProperty first, FieldP } public static UnknownField fromDisplayName(String displayName) { - return new UnknownField(displayName.toLowerCase(Locale.ROOT), displayName); + return new UnknownField(displayName.toLowerCase(Locale.ROOT), displayName, FieldProperty.CUSTOM_FIELD); } @Override