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