Below the main fields sits a chip bar for adding unset optional fields ("Show more" reveals the secondary-optional ones). The identifiers, files & links, bibliometrics, comments, and meta groups are always-present collapsible sections — collapsed when empty — each with its own add-chips for its unset member fields. A free-form field-name box at the bottom adds arbitrary fields.
| Modifier and Type | Field and Description |
|---|---|
| private static final int | COLLAPSED_MULTILINE_ROWS
Rows a multiline editor shows before it is focused for the first time (a long abstract must not push the other fields out of view just by being selected). |
| private static final List | COMMON_CHIP_FIELDS
Chips offered after the entry type's important optional fields, for every entry type. |
| private @Nullable BibEntry | |
| private final BibEntryTypesManager | |
| private final Set | expandedFields
Multiline fields the user has focused (and thereby expanded) while editing the current entry; editors are rebuilt for the same entry, so the expansion must outlive them. |
| private Set | extractedCustomTabFields
Fields extracted by the configured custom tabs ("Extract field" checked in the preferences); the Main tab shows no editor and no add-chip for these. |
| private final GuiPreferences | |
| private static final double | HEIGHT_PER_WEIGHT
Pixels of preferred height granted per weight unit for editors with weight > 1 (e.g. the linked-files list), since percent-height rows do not exist in the scroll list. |
| private final VBox | listContainer
Scroll content: main grid + chip bar + section panes + free-form add row. |
| private static final Logger | |
| private static final Pattern | NON_ALPHANUMERIC
Characters not allowed in the user-specific comment field name. |
| private final Set | requiredFields
Required fields of the current entry's type, refreshed on every |
| private final Map | sectionExpandOverrides
Manual expand/collapse decisions per section, kept across rebuilds for the current entry (cleared on entry switch). |
| private final Map | sectionPanes
Tracks the |
| private boolean | showSecondaryOptionalChips
Sticky per tab instance: whether the secondary-optional chips are expanded. |
| private Optional | subscribedEntry
The entry whose event bus this tab is currently subscribed to (for live refresh when fields are set/unset from outside, e.g. Source tab, fetchers, undo). |
| private final Map | textAreaWidths
Last laid-out width of each field's growing text area (see |
| private final Set | userAddedFields
Fields the user added via chip / free-form box that are still empty: they are not part
of |
| private final UserSpecificCommentField | userSpecificCommentField
The current user's personal comment field (derived from the default-owner preference). |
| Access | Constructor and Description |
|---|---|
| public | AllFieldsTab(UndoAction undoAction, RedoAction redoAction, GuiPreferences preferences, BibEntryTypesManager entryTypesManager, JournalAbbreviationRepository journalAbbreviationRepository, StateManager stateManager, PreviewPanel previewPanel)
|
| Modifier and Type | Method and Description |
|---|---|
| private BibDatabaseContext | |
| public void | |
| private void | addFieldRows(GridPane grid, SequencedCollection<Field> fields, Map<Field, Label> labelForField, BibDatabaseContext bibDatabaseContext, BibEntry entry)
Label/editor rows with natural heights, label column as narrow as its content. |
| private void | |
| private void | |
| protected void | |
| private Button | |
| private Node | |
| private Node | createMainChipBar(BibDatabaseContext bibDatabaseContext, BibEntry entry)
Chips for the entry type's unset optional fields that belong to the main section
(identifier/file/comment fields get their chips inside their own section), followed by
the |
| private TitledPane | createSectionPane(FieldListSections.
An always-present collapsible section: its shown fields as rows plus add-chips for its unset member fields. |
| protected SequencedSet | determineFieldsToShow(BibEntry entry)
Implements abstract org. Order: citation key, required fields (entry-type order), set optional fields (important first, then detail; each in entry-type order), then all remaining set fields sorted by name, then still-empty user-added fields. |
| protected void | dispose()
Overrides org. Releases listeners owned by this tab before it is discarded. |
| pack-priv BibDatabaseMode | |
| protected Node | getEditorContent()
Overrides org. The node placed inside the tab's ScrollPane. |
| private boolean | isFilesAndLinksSectionOpen(SequencedSet<Field> shownFields)
An open files-and-links section always shows the file editor: its own buttons (add / search / download) are what a "+ File" chip could only reach by popping up a file dialog. |
| protected void | layoutEditors(BibDatabaseContext bibDatabaseContext, BibEntry entry, boolean compressed, List<Label> labels)
Overrides org. Main fields as a grid with natural row heights, then the optional-field chip bar, then the always-present collapsible sections (identifiers / files & links / bibliometrics / comments / meta, collapsed when empty) each with its own add-chips, then the free-form add row. |
| public void | listen(FieldChangedEvent event)
Refreshes the list when a field is set or unset from outside this tab (Source tab, fetchers, undo, …). |
| private void | normalizeInputHeights(Field field, Node node)
The classic stretch layout lets text inputs fill their percent-height rows by setting
an infinite pref height ( |
| private static Optional | overlayInsideTextInput(Node editorNode, Button button)
Re-parents the editor's primary text input into a |
| private void | populateSectionContent(VBox content, FieldListSections.
|
| private void | |
| private void | |
| private void | removeFieldRow(BibDatabaseContext bibDatabaseContext, BibEntry entry, Field field)
Hides a still-empty, user-added field row again (reachable only for non-required,
currently blank fields; see |
| public void | |
| private SequencedSet | sectionMemberFields(FieldListSections.
All member fields of a section offered as add-chips; the comments section offers the general comment plus the current user's personal comment field (if enabled). |
| private void | showFieldEditor(BibDatabaseContext bibDatabaseContext, BibEntry entry, Field field)
Makes an editor for |
| private void | showFileFieldIfAutoLinkFindsFiles(BibEntry entry)
Only set fields get an editor, so an entry without a file field has no
|
| protected boolean | stretchContentToTabHeight()
Overrides org.
|
| private Node | wrapWithRemoveButton(BibDatabaseContext bibDatabaseContext, BibEntry entry, Field field)
Overlays a gray "remove field" icon button on the top-right corner inside the field's text input, shown only while the editor is focused and currently blank (never for the citation key or a required field of the current entry type — those can never be removed this way). |
| COLLAPSED_MULTILINE_ROWS | back to summary |
|---|---|
| private static final int COLLAPSED_MULTILINE_ROWS Rows a multiline editor shows before it is focused for the first time (a long abstract must not push the other fields out of view just by being selected). | |
| COMMON_CHIP_FIELDS | back to summary |
|---|---|
| private static final List<Field> COMMON_CHIP_FIELDS Chips offered after the entry type's important optional fields, for every entry type. The abstract is no optional field of any type, so it would otherwise only be reachable through the free-form field-name box. | |
| entryOfUserAddedFields | back to summary |
|---|---|
| private @Nullable BibEntry entryOfUserAddedFields | |
| entryTypesManager | back to summary |
|---|---|
| private final BibEntryTypesManager entryTypesManager | |
| expandedFields | back to summary |
|---|---|
| private final Set<Field> expandedFields Multiline fields the user has focused (and thereby expanded) while editing the current entry; editors are rebuilt for the same entry, so the expansion must outlive them. | |
| extractedCustomTabFields | back to summary |
|---|---|
| private Set<Field> extractedCustomTabFields Fields extracted by the configured custom tabs ("Extract field" checked in the preferences);
the Main tab shows no editor and no add-chip for these. Recomputed in | |
| guiPreferences | back to summary |
|---|---|
| private final GuiPreferences guiPreferences | |
| HEIGHT_PER_WEIGHT | back to summary |
|---|---|
| private static final double HEIGHT_PER_WEIGHT Pixels of preferred height granted per weight unit for editors with weight > 1 (e.g. the linked-files list), since percent-height rows do not exist in the scroll list. | |
| listContainer | back to summary |
|---|---|
| private final VBox listContainer Scroll content: main grid + chip bar + section panes + free-form add row. | |
| LOGGER | back to summary |
|---|---|
| private static final Logger LOGGER | |
| NON_ALPHANUMERIC | back to summary |
|---|---|
| private static final Pattern NON_ALPHANUMERIC Characters not allowed in the user-specific comment field name. | |
| requiredFields | back to summary |
|---|---|
| private final Set<Field> requiredFields Required fields of the current entry's type, refreshed on every | |
| sectionExpandOverrides | back to summary |
|---|---|
| private final Map<FieldListSections. Manual expand/collapse decisions per section, kept across rebuilds for the current entry (cleared on entry switch). Without an override, a section is expanded iff it contains at least one shown field. | |
| sectionPanes | back to summary |
|---|---|
| private final Map<FieldListSections. Tracks the | |
| showSecondaryOptionalChips | back to summary |
|---|---|
| private boolean showSecondaryOptionalChips Sticky per tab instance: whether the secondary-optional chips are expanded. | |
| subscribedEntry | back to summary |
|---|---|
| private Optional<BibEntry> subscribedEntry The entry whose event bus this tab is currently subscribed to (for live refresh when fields are set/unset from outside, e.g. Source tab, fetchers, undo). | |
| textAreaWidths | back to summary |
|---|---|
| private final Map<Field, Double> textAreaWidths Last laid-out width of each field's growing text area (see | |
| userAddedFields | back to summary |
|---|---|
| private final Set<Field> userAddedFields Fields the user added via chip / free-form box that are still empty: they are not part
of | |
| userSpecificCommentField | back to summary |
|---|---|
| private final UserSpecificCommentField userSpecificCommentField The current user's personal comment field (derived from the default-owner preference). | |
| AllFieldsTab | back to summary |
|---|---|
| public AllFieldsTab(UndoAction undoAction, RedoAction redoAction, GuiPreferences preferences, BibEntryTypesManager entryTypesManager, JournalAbbreviationRepository journalAbbreviationRepository, StateManager stateManager, PreviewPanel previewPanel) | |
| activeDatabaseContext | back to summary |
|---|---|
| private BibDatabaseContext activeDatabaseContext() | |
| addFieldAndFocus | back to summary |
|---|---|
| public void addFieldAndFocus(Field field) | |
| addFieldRows | back to summary |
|---|---|
| private void addFieldRows(GridPane grid, SequencedCollection<Field> fields, Map<Field, Label> labelForField, BibDatabaseContext bibDatabaseContext, BibEntry entry) Label/editor rows with natural heights, label column as narrow as its content. | |
| addFreeFormField | back to summary |
|---|---|
| private void addFreeFormField(BibDatabaseContext bibDatabaseContext, BibEntry entry, @Nullable String fieldName) | |
| applyNaturalHeight | back to summary |
|---|---|
| private void applyNaturalHeight(Field field, FieldEditorFX editor) | |
| bindToEntry | back to summary |
|---|---|
| protected void bindToEntry(BibEntry entry) Overrides org.
| |
| createAddChip | back to summary |
|---|---|
| private Button createAddChip(BibDatabaseContext bibDatabaseContext, BibEntry entry, Field field) | |
| createFreeFormAddRow | back to summary |
|---|---|
| private Node createFreeFormAddRow(BibDatabaseContext bibDatabaseContext, BibEntry entry) | |
| createMainChipBar | back to summary |
|---|---|
| private Node createMainChipBar(BibDatabaseContext bibDatabaseContext, BibEntry entry) Chips for the entry type's unset optional fields that belong to the main section
(identifier/file/comment fields get their chips inside their own section), followed by
the | |
| createSectionPane | back to summary |
|---|---|
| private TitledPane createSectionPane(FieldListSections. An always-present collapsible section: its shown fields as rows plus add-chips for its unset member fields. Collapsed by default when it contains no field; a manual expand/collapse survives rebuilds until another entry is opened. | |
| determineFieldsToShow | back to summary |
|---|---|
| protected SequencedSet Implements abstract org. Order: citation key, required fields (entry-type order), set optional fields (important first, then detail; each in entry-type order), then all remaining set fields sorted by name, then still-empty user-added fields.
| |
| dispose | back to summary |
|---|---|
| protected void dispose() Overrides org. Doc from org. Releases listeners owned by this tab before it is discarded.
| |
| getDatabaseMode | back to summary |
|---|---|
| pack-priv BibDatabaseMode getDatabaseMode() | |
| getEditorContent | back to summary |
|---|---|
| protected Node getEditorContent() Overrides org. Doc from org. The node placed inside the tab's ScrollPane. By default the field grid itself;
subclasses may wrap
| |
| isFilesAndLinksSectionOpen | back to summary |
|---|---|
| private boolean isFilesAndLinksSectionOpen(SequencedSet<Field> shownFields) An open files-and-links section always shows the file editor: its own buttons
(add / search / download) are what a "+ File" chip could only reach by popping up a
file dialog. Decided from the fields the section would show anyway — required ones
included, so an entry type requiring | |
| layoutEditors | back to summary |
|---|---|
| protected void layoutEditors(BibDatabaseContext bibDatabaseContext, BibEntry entry, boolean compressed, List<Label> labels) Overrides org. Main fields as a grid with natural row heights, then the optional-field chip bar, then the always-present collapsible sections (identifiers / files & links / bibliometrics / comments / meta, collapsed when empty) each with its own add-chips, then the free-form add row. The whole column scrolls instead of stretching to the tab height.
| |
| listen | back to summary |
|---|---|
| public void listen(FieldChangedEvent event) Refreshes the list when a field is set or unset from outside this tab (Source tab, fetchers, undo, …). Rebuilds only when the set of shown fields actually changes, so typing inside a visible editor never rebuilds or steals focus.
| |
| normalizeInputHeights | back to summary |
|---|---|
| private void normalizeInputHeights(Field field, Node node) The classic stretch layout lets text inputs fill their percent-height rows by setting
an infinite pref height ( | |
| overlayInsideTextInput | back to summary |
|---|---|
| private static Optional Re-parents the editor's primary text input into a | |
| populateSectionContent | back to summary |
|---|---|
| private void populateSectionContent(VBox content, FieldListSections. | |
| rebuildPanel | back to summary |
|---|---|
| private void rebuildPanel(BibDatabaseContext bibDatabaseContext, BibEntry entry) | |
| refreshShownFieldsIfNeeded | back to summary |
|---|---|
| private void refreshShownFieldsIfNeeded(FieldChangedEvent event) | |
| removeFieldRow | back to summary |
|---|---|
| private void removeFieldRow(BibDatabaseContext bibDatabaseContext, BibEntry entry, Field field) Hides a still-empty, user-added field row again (reachable only for non-required,
currently blank fields; see | |
| requestFocus | back to summary |
|---|---|
| public void requestFocus(Field fieldName) Overrides org.
| |
| sectionMemberFields | back to summary |
|---|---|
| private SequencedSet All member fields of a section offered as add-chips; the comments section offers the general comment plus the current user's personal comment field (if enabled). | |
| showFieldEditor | back to summary |
|---|---|
| private void showFieldEditor(BibDatabaseContext bibDatabaseContext, BibEntry entry, Field field) Makes an editor for | |
| showFileFieldIfAutoLinkFindsFiles | back to summary |
|---|---|
| private void showFileFieldIfAutoLinkFindsFiles(BibEntry entry) Only set fields get an editor, so an entry without a file field has no
| |
| stretchContentToTabHeight | back to summary |
|---|---|
| protected boolean stretchContentToTabHeight() Overrides org. Doc from org.
| |
| wrapWithRemoveButton | back to summary |
|---|---|
| private Node wrapWithRemoveButton(BibDatabaseContext bibDatabaseContext, BibEntry entry, Field field) Overlays a gray "remove field" icon button on the top-right corner inside the field's text input, shown only while the editor is focused and currently blank (never for the citation key or a required field of the current entry type — those can never be removed this way). Overlaying inside the input keeps it left of any trailing option buttons the editor draws itself (identifier/URL fetch icons, ICORE lookup, …), so it never collides. | |