Add drag-and-drop support for Citation Relations tab#15181
Conversation
- Implement drag detection in CitationRelationsTab to allow dragging entries - Add drag support to ViewModelListCellFactory - Fix NullPointerException in FrameDndHandler when dropping onto tabs without IDs - Fixes JabRef#15135
|
Hey @TheCoder777! 👋 Thank you for contributing to JabRef! We have automated checks in place, based on which you will soon get feedback if any of them are failing. We also use Qodo for review assistance. It will update your pull request description with a review help and offer suggestions to improve the pull request. After all automated checks pass, a maintainer will also review your contribution. Once that happens, you can go through their comments in the "Files changed" tab and act on them, or reply to the conversation if you have further inputs. You can read about the whole pull request process in our contribution guide. Please ensure that your pull request is in line with our AI Usage Policy and make necessary disclosures. |
Review Summary by QodoAdd drag-and-drop support for Citation Relations tab
WalkthroughsDescription• Add drag-and-drop support for Citation Relations tab entries • Support dragging single or multiple checked entries simultaneously • Fix NullPointerException when dropping onto tabs without IDs • Extend ViewModelListCellFactory with drag-done event handling Diagramflowchart LR
A["CitationRelationsTab"] -->|"drag detection"| B["handleDragDetected"]
B -->|"populate dragboard"| C["StateManager LocalDragboard"]
C -->|"drop on target"| D["FrameDndHandler"]
D -->|"validate tab ID"| E["LibraryTab"]
A -->|"drag done"| F["handleDragDone"]
F -->|"clear checks"| A
G["ViewModelListCellFactory"] -->|"support drag-done"| H["setOnDragDone"]
File Changes1. jabgui/src/main/java/org/jabref/gui/entryeditor/citationrelationtab/CitationRelationsTab.java
|
Code Review by Qodo
1.
|
This comment has been minimized.
This comment has been minimized.
|
Your pull request conflicts with the target branch. Please merge with your code. For a step-by-step guide to resolve merge conflicts, see https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/addressing-merge-conflicts/resolving-a-merge-conflict-using-the-command-line. |
| private BiConsumer<T, ? super DragEvent> toOnDragEntered; | ||
| private BiConsumer<T, ? super DragEvent> toOnDragExited; | ||
| private BiConsumer<T, ? super DragEvent> toOnDragOver; | ||
| private BiConsumer<T, DragEvent> toOnDragDone; |
There was a problem hiding this comment.
Change to ? super DragEvent for consistency
This comment has been minimized.
This comment has been minimized.
…35' into citation-relations-drag-drop-15135
This comment has been minimized.
This comment has been minimized.
…tation-relations-drag-drop-15135
This comment has been minimized.
This comment has been minimized.
|
Sorry for keeping you waiting so long. Looks good to me. Just fixed one explicit type instead of var for more visible clarity of types. |
✅ All tests passed ✅🏷️ Commit: 158ee34 Learn more about TestLens at testlens.app. |
* Add drag-and-drop support for Citation Relations tab - Implement drag detection in CitationRelationsTab to allow dragging entries - Add drag support to ViewModelListCellFactory - Fix NullPointerException in FrameDndHandler when dropping onto tabs without IDs - Fixes JabRef#15135 * Fix: correctly set drop completion status for entries * Fix: Add Unreleased section and moved changelog entries * Fix CHANGELOG formatting and upstream linter errors; removed empty groups * Fix code consistency for cr * Add explicit type * Consistency in CHANGELOG.md --------- Co-authored-by: Christoph <siedlerkiller@gmail.com> Co-authored-by: Carl Christian Snethlage <calixtus@users.noreply.github.com>
* Close entry editor when last library is closed When no library tab is active, the entry editor remained visible. Added close() call in the activeTabProperty listener's else branch to handle the zero-libraries-open case. Fixes #13125 * Update CHANGELOG for #13125 * Fix case-insensitive DOI comparison in duplicate detection (#12967) * Chore(deps): Bump org.gradlex:java-module-dependencies in /build-logic (#15328) Bumps [org.gradlex:java-module-dependencies](https://github.com/gradlex-org/java-module-dependencies) from 1.12 to 1.12.1. - [Release notes](https://github.com/gradlex-org/java-module-dependencies/releases) - [Changelog](https://github.com/gradlex-org/java-module-dependencies/blob/main/CHANGELOG.md) - [Commits](gradlex-org/java-module-dependencies@v1.12...v1.12.1) --- updated-dependencies: - dependency-name: org.gradlex:java-module-dependencies dependency-version: 1.12.1 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * Chore(deps): Bump org.openrewrite.rewrite from 7.26.0 to 7.28.1 (#15326) Bumps org.openrewrite.rewrite from 7.26.0 to 7.28.1. --- updated-dependencies: - dependency-name: org.openrewrite.rewrite dependency-version: 7.28.1 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * Chore(deps): Bump org.mockito:mockito-core in /versions (#15330) Bumps [org.mockito:mockito-core](https://github.com/mockito/mockito) from 5.22.0 to 5.23.0. - [Release notes](https://github.com/mockito/mockito/releases) - [Commits](mockito/mockito@v5.22.0...v5.23.0) --- updated-dependencies: - dependency-name: org.mockito:mockito-core dependency-version: 5.23.0 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * Chore(deps): Bump org.cyclonedx.bom from 3.2.0 to 3.2.1 (#15327) Bumps org.cyclonedx.bom from 3.2.0 to 3.2.1. --- updated-dependencies: - dependency-name: org.cyclonedx.bom dependency-version: 3.2.1 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * Chore(deps): Bump com.squareup.okio:okio-jvm in /versions (#15329) Bumps [com.squareup.okio:okio-jvm](https://github.com/square/okio) from 3.16.4 to 3.17.0. - [Changelog](https://github.com/square/okio/blob/master/CHANGELOG.md) - [Commits](square/okio@parent-3.16.4...parent-3.17.0) --- updated-dependencies: - dependency-name: com.squareup.okio:okio-jvm dependency-version: 3.17.0 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Carl Christian Snethlage <50491877+calixtus@users.noreply.github.com> * New translations jabref_en.properties (Italian) (#15334) * RIS export SP/EP fields when pages contain Unicode en-dash or em-dash (#15315) * Extend the split regex to match en-dash and em-dash * Added tests --------- Co-authored-by: Carl Christian Snethlage <50491877+calixtus@users.noreply.github.com> * Remove object redundancy, miscellaneous refactoring (#15332) * Remove object redundancy, miscellaneous refactoring Signed-off-by: subhramit <subhramit.bb@live.in> * Use abbreviationRepository parameter Signed-off-by: subhramit <subhramit.bb@live.in> * Use less injections for journal abbreviations repository Signed-off-by: subhramit <subhramit.bb@live.in> * Indent Signed-off-by: subhramit <subhramit.bb@live.in> * Revert to codepoint --------- Signed-off-by: subhramit <subhramit.bb@live.in> Co-authored-by: Carl Christian Snethlage <50491877+calixtus@users.noreply.github.com> * Add drag-and-drop support for Citation Relations tab (#15181) * Add drag-and-drop support for Citation Relations tab - Implement drag detection in CitationRelationsTab to allow dragging entries - Add drag support to ViewModelListCellFactory - Fix NullPointerException in FrameDndHandler when dropping onto tabs without IDs - Fixes #15135 * Fix: correctly set drop completion status for entries * Fix: Add Unreleased section and moved changelog entries * Fix CHANGELOG formatting and upstream linter errors; removed empty groups * Fix code consistency for cr * Add explicit type * Consistency in CHANGELOG.md --------- Co-authored-by: Christoph <siedlerkiller@gmail.com> Co-authored-by: Carl Christian Snethlage <calixtus@users.noreply.github.com> * Update dependency org.eclipse.jgit:org.eclipse.jgit.pgm to v7.6.0.202603022253-r (#15335) * Chore(deps): Bump org.cyclonedx.bom from 3.2.1 to 3.2.2 (#15337) Bumps org.cyclonedx.bom from 3.2.1 to 3.2.2. --- updated-dependencies: - dependency-name: org.cyclonedx.bom dependency-version: 3.2.2 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * Chore(deps): Bump org.eclipse.jgit:org.eclipse.jgit in /versions (#15338) Bumps [org.eclipse.jgit:org.eclipse.jgit](https://github.com/eclipse-jgit/jgit) from 7.5.0.202512021534-r to 7.6.0.202603022253-r. - [Commits](eclipse-jgit/jgit@v7.5.0.202512021534-r...v7.6.0.202603022253-r) --- updated-dependencies: - dependency-name: org.eclipse.jgit:org.eclipse.jgit dependency-version: 7.6.0.202603022253-r dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * Add 'All' citation fetcher that aggregates results from all providers (#15292) * Add 'All' citation fetcher that aggregates and deduplicates results from all providers - Implements CitationFetcher as AllCitationFetcher aggregating CrossRef, OpenAlex, OpenCitations, and SemanticScholar - Deduplicates results using DuplicateCheck with BibDatabaseMode.BIBTEX - Returns maximum citation count across all providers - Tolerates individual provider failures gracefully - Adds ALL entry to CitationFetcherType enum and factory method - Covers behaviour with unit tests (failure tolerance, deduplication, max count) Closes #15029 * Add 'All' citation fetcher that aggregates results from all providers - Add ALL as first entry in CitationFetcherType enum - Implement AllCitationFetcher aggregating CrossRef, OpenAlex, OpenCitations, and SemanticScholar - Union results using DatabaseMerger with keyword separator from ImportFormatPreferences, as specified in the task - Return maximum citation count across all providers - Tolerate individual provider failures gracefully - Fix race condition in SearchCitationsRelationsService by marking citationFetcher and citationCountFetcher fields as volatile - Set ALL as the default citation fetcher in preferences - Add unit tests covering failure tolerance, deduplication, and max citation count Closes #15029 * Update CHANGELOG for issue #15029 * Address bot review: fix AllCitationFetcher and improve tests - Build provider list from CitationFetcherType enum (excluding ALL) to avoid duplicate list that can drift when new providers are added - Track anySuccess in fetch() and getCitationCount(); throw FetcherException when all providers fail instead of silently returning empty results - Emit WARN log when some providers fail but others succeed - Rename test variables to intent-revealing names - Fix citation count assertion to use assertEquals(Optional.of(20)) - Add tests for all-providers-fail and partial-failure scenarios * Trigger CI * Reformat AllCitationFetcher * Fix checkstyle: remove blank line at start of constructor block * Reverted back to semantic scholar ui preference * Revert default citation fetcher to SEMANTIC_SCHOLAR in EntryEditorPreferences * Re-trigger CI * Adapt tests to use real constructor with mocks, remove test constructor * fix unchecked excpetion --------- Co-authored-by: Siedlerchr <siedlerkiller@gmail.com> * Avoid error logs when search queries are incomplete (#15333) * Avoid error logs when search queries are incomplete Log the parsing error at debug level instead of error level. This prevents having unnecessary output when user is still entering input like "title =". * Update changelog for fixing incomplete search logging issue * Update changelog entry for incomplete search logging issue * Refine changelog entry for incomplete search logging issue * Chore(deps): Bump org.openrewrite.recipe:rewrite-recipe-bom from 3.24.0 to 3.25.0 (#15217) * Chore(deps): Bump org.openrewrite.recipe:rewrite-recipe-bom Bumps [org.openrewrite.recipe:rewrite-recipe-bom](https://github.com/openrewrite/rewrite-recipe-bom) from 3.24.0 to 3.25.0. - [Release notes](https://github.com/openrewrite/rewrite-recipe-bom/releases) - [Commits](openrewrite/rewrite-recipe-bom@v3.24.0...v3.25.0) --- updated-dependencies: - dependency-name: org.openrewrite.recipe:rewrite-recipe-bom dependency-version: 3.25.0 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com> * udpate plugin * update rewrite --------- Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Siedlerchr <siedlerkiller@gmail.com> * Select better value in MultiMergeEntries dialog component (#15027) (#15255) * Select better value in MultiMergeEntries dialog component (#15027) * Use PlausibilityComparatorFactory in MultiMergeEntriesViewModel to select the more plausible value when merging fields from multiple sources, instead of always keeping the first-seen value. * Add DateFieldPlausibilityComparator to prefer more specific dates. * Add unit tests for DateFieldPlausibilityComparator * implement review comments * Fix trailing whitespace in MultiMergeEntriesViewModelTest * Trigger CI * CI: re-trigger * CI: re-trigger --------- Co-authored-by: Christoph <siedlerkiller@gmail.com> * Fix reset and import for PreviewPreferences (#15306) * Cleanups * Refactor PreviewPreferences for resetting and import * Some null checks and migrations * Fix wrong notnull * Fix import * Avoid addAll crash on immutable List * Add forgotten customPreviewLayout * Fix artifact from code iteration * Refactor for consistency * Fix artifact from code iteration * Enhance dummy fallback layout * Try to fix jbang * Apply IDE suggestions * Fix weird checkstyle behaviour * Add default styles * Fix migration tests * Add tests * Small cleanups --------- Co-authored-by: Carl Christian Snethlage <calixtus@users.noreply.github.com> * Fix javadoc markdown artifacts (#15309) * Closes #14897 This incorporates all the pending old Javadoc to Markdown changes required after merging #14891.The following files are changed: 1.AutoCompletionTextInputBinding.java 2.JabRefCliPreferences.java 3.SearchBasedParserFetcher.java 4.StartNewStudyAction.java 1. * 1. * Rsolved mix up of endregion and endRegion.Final one is endregion. 1.File changed-JabRefCliPreferences.java * Rsolved format issue related to line space.Files changed. 1.JabRefCliPreferences.java 2.SearchBasedParserFetcher.java * Files changed. 1.JabRefCliPreferences.java. The following changes are done:- 1.Added // endregion to maintain sync with region:AI And // region Push to application preferences and //region to Git 2.Changed region: to region 3.Changed region: Cleanup to previous ToDo: Cleanup 4.changed endRegion to end region 5.Adjusted dangling // endregion by merging Imported Preference tag(new one) with Other Preferences(old one) * Files changed. 1.JabRefCliPreferences.java. The following changes are done:- 1.Apply IntelliJ formatting * Update CHANGELOG for JabRef#12967 * Apply case-insensitive comparison only to DOI identifiers * Apply IntelliJ code formatting to DuplicateCheck and DuplicateCheckTest * Add tests for case-insensitive DOI duplicate detection * Fix case-insensitive DOI comparison in duplicate detection * fix formatting --------- Signed-off-by: dependabot[bot] <support@github.com> Signed-off-by: subhramit <subhramit.bb@live.in> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Carl Christian Snethlage <50491877+calixtus@users.noreply.github.com> Co-authored-by: Christoph <siedlerkiller@gmail.com> Co-authored-by: Faneesh Juneja <willowstration@gmail.com> Co-authored-by: Subhramit Basu <subhramit.bb@live.in> Co-authored-by: Paul <thecoder777.github@gmail.com> Co-authored-by: Carl Christian Snethlage <calixtus@users.noreply.github.com> Co-authored-by: Mend Renovate <bot@renovateapp.com> Co-authored-by: Nishant Dasgupta <nishant.24bcs10451@sst.scaler.com> Co-authored-by: Mike Zhang <97817030+mikezhanghaozhe@users.noreply.github.com> Co-authored-by: JunWang222 <70090336+JunWang222@users.noreply.github.com> Co-authored-by: AbhijitBhowmick <94289124+AbhijitBhowmick@users.noreply.github.com>
* Add drag-and-drop support for Citation Relations tab - Implement drag detection in CitationRelationsTab to allow dragging entries - Add drag support to ViewModelListCellFactory - Fix NullPointerException in FrameDndHandler when dropping onto tabs without IDs - Fixes JabRef#15135 * Fix: correctly set drop completion status for entries * Fix: Add Unreleased section and moved changelog entries * Fix CHANGELOG formatting and upstream linter errors; removed empty groups * Fix code consistency for cr * Add explicit type * Consistency in CHANGELOG.md --------- Co-authored-by: Christoph <siedlerkiller@gmail.com> Co-authored-by: Carl Christian Snethlage <calixtus@users.noreply.github.com>
* Close entry editor when last library is closed When no library tab is active, the entry editor remained visible. Added close() call in the activeTabProperty listener's else branch to handle the zero-libraries-open case. Fixes JabRef#13125 * Update CHANGELOG for JabRef#13125 * Fix case-insensitive DOI comparison in duplicate detection (JabRef#12967) * Chore(deps): Bump org.gradlex:java-module-dependencies in /build-logic (JabRef#15328) Bumps [org.gradlex:java-module-dependencies](https://github.com/gradlex-org/java-module-dependencies) from 1.12 to 1.12.1. - [Release notes](https://github.com/gradlex-org/java-module-dependencies/releases) - [Changelog](https://github.com/gradlex-org/java-module-dependencies/blob/main/CHANGELOG.md) - [Commits](gradlex-org/java-module-dependencies@v1.12...v1.12.1) --- updated-dependencies: - dependency-name: org.gradlex:java-module-dependencies dependency-version: 1.12.1 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * Chore(deps): Bump org.openrewrite.rewrite from 7.26.0 to 7.28.1 (JabRef#15326) Bumps org.openrewrite.rewrite from 7.26.0 to 7.28.1. --- updated-dependencies: - dependency-name: org.openrewrite.rewrite dependency-version: 7.28.1 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * Chore(deps): Bump org.mockito:mockito-core in /versions (JabRef#15330) Bumps [org.mockito:mockito-core](https://github.com/mockito/mockito) from 5.22.0 to 5.23.0. - [Release notes](https://github.com/mockito/mockito/releases) - [Commits](mockito/mockito@v5.22.0...v5.23.0) --- updated-dependencies: - dependency-name: org.mockito:mockito-core dependency-version: 5.23.0 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * Chore(deps): Bump org.cyclonedx.bom from 3.2.0 to 3.2.1 (JabRef#15327) Bumps org.cyclonedx.bom from 3.2.0 to 3.2.1. --- updated-dependencies: - dependency-name: org.cyclonedx.bom dependency-version: 3.2.1 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * Chore(deps): Bump com.squareup.okio:okio-jvm in /versions (JabRef#15329) Bumps [com.squareup.okio:okio-jvm](https://github.com/square/okio) from 3.16.4 to 3.17.0. - [Changelog](https://github.com/square/okio/blob/master/CHANGELOG.md) - [Commits](square/okio@parent-3.16.4...parent-3.17.0) --- updated-dependencies: - dependency-name: com.squareup.okio:okio-jvm dependency-version: 3.17.0 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Carl Christian Snethlage <50491877+calixtus@users.noreply.github.com> * New translations jabref_en.properties (Italian) (JabRef#15334) * RIS export SP/EP fields when pages contain Unicode en-dash or em-dash (JabRef#15315) * Extend the split regex to match en-dash and em-dash * Added tests --------- Co-authored-by: Carl Christian Snethlage <50491877+calixtus@users.noreply.github.com> * Remove object redundancy, miscellaneous refactoring (JabRef#15332) * Remove object redundancy, miscellaneous refactoring Signed-off-by: subhramit <subhramit.bb@live.in> * Use abbreviationRepository parameter Signed-off-by: subhramit <subhramit.bb@live.in> * Use less injections for journal abbreviations repository Signed-off-by: subhramit <subhramit.bb@live.in> * Indent Signed-off-by: subhramit <subhramit.bb@live.in> * Revert to codepoint --------- Signed-off-by: subhramit <subhramit.bb@live.in> Co-authored-by: Carl Christian Snethlage <50491877+calixtus@users.noreply.github.com> * Add drag-and-drop support for Citation Relations tab (JabRef#15181) * Add drag-and-drop support for Citation Relations tab - Implement drag detection in CitationRelationsTab to allow dragging entries - Add drag support to ViewModelListCellFactory - Fix NullPointerException in FrameDndHandler when dropping onto tabs without IDs - Fixes JabRef#15135 * Fix: correctly set drop completion status for entries * Fix: Add Unreleased section and moved changelog entries * Fix CHANGELOG formatting and upstream linter errors; removed empty groups * Fix code consistency for cr * Add explicit type * Consistency in CHANGELOG.md --------- Co-authored-by: Christoph <siedlerkiller@gmail.com> Co-authored-by: Carl Christian Snethlage <calixtus@users.noreply.github.com> * Update dependency org.eclipse.jgit:org.eclipse.jgit.pgm to v7.6.0.202603022253-r (JabRef#15335) * Chore(deps): Bump org.cyclonedx.bom from 3.2.1 to 3.2.2 (JabRef#15337) Bumps org.cyclonedx.bom from 3.2.1 to 3.2.2. --- updated-dependencies: - dependency-name: org.cyclonedx.bom dependency-version: 3.2.2 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * Chore(deps): Bump org.eclipse.jgit:org.eclipse.jgit in /versions (JabRef#15338) Bumps [org.eclipse.jgit:org.eclipse.jgit](https://github.com/eclipse-jgit/jgit) from 7.5.0.202512021534-r to 7.6.0.202603022253-r. - [Commits](eclipse-jgit/jgit@v7.5.0.202512021534-r...v7.6.0.202603022253-r) --- updated-dependencies: - dependency-name: org.eclipse.jgit:org.eclipse.jgit dependency-version: 7.6.0.202603022253-r dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * Add 'All' citation fetcher that aggregates results from all providers (JabRef#15292) * Add 'All' citation fetcher that aggregates and deduplicates results from all providers - Implements CitationFetcher as AllCitationFetcher aggregating CrossRef, OpenAlex, OpenCitations, and SemanticScholar - Deduplicates results using DuplicateCheck with BibDatabaseMode.BIBTEX - Returns maximum citation count across all providers - Tolerates individual provider failures gracefully - Adds ALL entry to CitationFetcherType enum and factory method - Covers behaviour with unit tests (failure tolerance, deduplication, max count) Closes JabRef#15029 * Add 'All' citation fetcher that aggregates results from all providers - Add ALL as first entry in CitationFetcherType enum - Implement AllCitationFetcher aggregating CrossRef, OpenAlex, OpenCitations, and SemanticScholar - Union results using DatabaseMerger with keyword separator from ImportFormatPreferences, as specified in the task - Return maximum citation count across all providers - Tolerate individual provider failures gracefully - Fix race condition in SearchCitationsRelationsService by marking citationFetcher and citationCountFetcher fields as volatile - Set ALL as the default citation fetcher in preferences - Add unit tests covering failure tolerance, deduplication, and max citation count Closes JabRef#15029 * Update CHANGELOG for issue JabRef#15029 * Address bot review: fix AllCitationFetcher and improve tests - Build provider list from CitationFetcherType enum (excluding ALL) to avoid duplicate list that can drift when new providers are added - Track anySuccess in fetch() and getCitationCount(); throw FetcherException when all providers fail instead of silently returning empty results - Emit WARN log when some providers fail but others succeed - Rename test variables to intent-revealing names - Fix citation count assertion to use assertEquals(Optional.of(20)) - Add tests for all-providers-fail and partial-failure scenarios * Trigger CI * Reformat AllCitationFetcher * Fix checkstyle: remove blank line at start of constructor block * Reverted back to semantic scholar ui preference * Revert default citation fetcher to SEMANTIC_SCHOLAR in EntryEditorPreferences * Re-trigger CI * Adapt tests to use real constructor with mocks, remove test constructor * fix unchecked excpetion --------- Co-authored-by: Siedlerchr <siedlerkiller@gmail.com> * Avoid error logs when search queries are incomplete (JabRef#15333) * Avoid error logs when search queries are incomplete Log the parsing error at debug level instead of error level. This prevents having unnecessary output when user is still entering input like "title =". * Update changelog for fixing incomplete search logging issue * Update changelog entry for incomplete search logging issue * Refine changelog entry for incomplete search logging issue * Chore(deps): Bump org.openrewrite.recipe:rewrite-recipe-bom from 3.24.0 to 3.25.0 (JabRef#15217) * Chore(deps): Bump org.openrewrite.recipe:rewrite-recipe-bom Bumps [org.openrewrite.recipe:rewrite-recipe-bom](https://github.com/openrewrite/rewrite-recipe-bom) from 3.24.0 to 3.25.0. - [Release notes](https://github.com/openrewrite/rewrite-recipe-bom/releases) - [Commits](openrewrite/rewrite-recipe-bom@v3.24.0...v3.25.0) --- updated-dependencies: - dependency-name: org.openrewrite.recipe:rewrite-recipe-bom dependency-version: 3.25.0 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com> * udpate plugin * update rewrite --------- Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Siedlerchr <siedlerkiller@gmail.com> * Select better value in MultiMergeEntries dialog component (JabRef#15027) (JabRef#15255) * Select better value in MultiMergeEntries dialog component (JabRef#15027) * Use PlausibilityComparatorFactory in MultiMergeEntriesViewModel to select the more plausible value when merging fields from multiple sources, instead of always keeping the first-seen value. * Add DateFieldPlausibilityComparator to prefer more specific dates. * Add unit tests for DateFieldPlausibilityComparator * implement review comments * Fix trailing whitespace in MultiMergeEntriesViewModelTest * Trigger CI * CI: re-trigger * CI: re-trigger --------- Co-authored-by: Christoph <siedlerkiller@gmail.com> * Fix reset and import for PreviewPreferences (JabRef#15306) * Cleanups * Refactor PreviewPreferences for resetting and import * Some null checks and migrations * Fix wrong notnull * Fix import * Avoid addAll crash on immutable List * Add forgotten customPreviewLayout * Fix artifact from code iteration * Refactor for consistency * Fix artifact from code iteration * Enhance dummy fallback layout * Try to fix jbang * Apply IDE suggestions * Fix weird checkstyle behaviour * Add default styles * Fix migration tests * Add tests * Small cleanups --------- Co-authored-by: Carl Christian Snethlage <calixtus@users.noreply.github.com> * Fix javadoc markdown artifacts (JabRef#15309) * Closes JabRef#14897 This incorporates all the pending old Javadoc to Markdown changes required after merging JabRef#14891.The following files are changed: 1.AutoCompletionTextInputBinding.java 2.JabRefCliPreferences.java 3.SearchBasedParserFetcher.java 4.StartNewStudyAction.java 1. * 1. * Rsolved mix up of endregion and endRegion.Final one is endregion. 1.File changed-JabRefCliPreferences.java * Rsolved format issue related to line space.Files changed. 1.JabRefCliPreferences.java 2.SearchBasedParserFetcher.java * Files changed. 1.JabRefCliPreferences.java. The following changes are done:- 1.Added // endregion to maintain sync with region:AI And // region Push to application preferences and //region to Git 2.Changed region: to region 3.Changed region: Cleanup to previous ToDo: Cleanup 4.changed endRegion to end region 5.Adjusted dangling // endregion by merging Imported Preference tag(new one) with Other Preferences(old one) * Files changed. 1.JabRefCliPreferences.java. The following changes are done:- 1.Apply IntelliJ formatting * Update CHANGELOG for JabRef#12967 * Apply case-insensitive comparison only to DOI identifiers * Apply IntelliJ code formatting to DuplicateCheck and DuplicateCheckTest * Add tests for case-insensitive DOI duplicate detection * Fix case-insensitive DOI comparison in duplicate detection * fix formatting --------- Signed-off-by: dependabot[bot] <support@github.com> Signed-off-by: subhramit <subhramit.bb@live.in> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Carl Christian Snethlage <50491877+calixtus@users.noreply.github.com> Co-authored-by: Christoph <siedlerkiller@gmail.com> Co-authored-by: Faneesh Juneja <willowstration@gmail.com> Co-authored-by: Subhramit Basu <subhramit.bb@live.in> Co-authored-by: Paul <thecoder777.github@gmail.com> Co-authored-by: Carl Christian Snethlage <calixtus@users.noreply.github.com> Co-authored-by: Mend Renovate <bot@renovateapp.com> Co-authored-by: Nishant Dasgupta <nishant.24bcs10451@sst.scaler.com> Co-authored-by: Mike Zhang <97817030+mikezhanghaozhe@users.noreply.github.com> Co-authored-by: JunWang222 <70090336+JunWang222@users.noreply.github.com> Co-authored-by: AbhijitBhowmick <94289124+AbhijitBhowmick@users.noreply.github.com>
* Add drag-and-drop support for Citation Relations tab - Implement drag detection in CitationRelationsTab to allow dragging entries - Add drag support to ViewModelListCellFactory - Fix NullPointerException in FrameDndHandler when dropping onto tabs without IDs - Fixes JabRef#15135 * Fix: correctly set drop completion status for entries * Fix: Add Unreleased section and moved changelog entries * Fix CHANGELOG formatting and upstream linter errors; removed empty groups * Fix code consistency for cr * Add explicit type * Consistency in CHANGELOG.md --------- Co-authored-by: Christoph <siedlerkiller@gmail.com> Co-authored-by: Carl Christian Snethlage <calixtus@users.noreply.github.com>
* Close entry editor when last library is closed When no library tab is active, the entry editor remained visible. Added close() call in the activeTabProperty listener's else branch to handle the zero-libraries-open case. Fixes JabRef#13125 * Update CHANGELOG for JabRef#13125 * Fix case-insensitive DOI comparison in duplicate detection (JabRef#12967) * Chore(deps): Bump org.gradlex:java-module-dependencies in /build-logic (JabRef#15328) Bumps [org.gradlex:java-module-dependencies](https://github.com/gradlex-org/java-module-dependencies) from 1.12 to 1.12.1. - [Release notes](https://github.com/gradlex-org/java-module-dependencies/releases) - [Changelog](https://github.com/gradlex-org/java-module-dependencies/blob/main/CHANGELOG.md) - [Commits](gradlex-org/java-module-dependencies@v1.12...v1.12.1) --- updated-dependencies: - dependency-name: org.gradlex:java-module-dependencies dependency-version: 1.12.1 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * Chore(deps): Bump org.openrewrite.rewrite from 7.26.0 to 7.28.1 (JabRef#15326) Bumps org.openrewrite.rewrite from 7.26.0 to 7.28.1. --- updated-dependencies: - dependency-name: org.openrewrite.rewrite dependency-version: 7.28.1 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * Chore(deps): Bump org.mockito:mockito-core in /versions (JabRef#15330) Bumps [org.mockito:mockito-core](https://github.com/mockito/mockito) from 5.22.0 to 5.23.0. - [Release notes](https://github.com/mockito/mockito/releases) - [Commits](mockito/mockito@v5.22.0...v5.23.0) --- updated-dependencies: - dependency-name: org.mockito:mockito-core dependency-version: 5.23.0 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * Chore(deps): Bump org.cyclonedx.bom from 3.2.0 to 3.2.1 (JabRef#15327) Bumps org.cyclonedx.bom from 3.2.0 to 3.2.1. --- updated-dependencies: - dependency-name: org.cyclonedx.bom dependency-version: 3.2.1 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * Chore(deps): Bump com.squareup.okio:okio-jvm in /versions (JabRef#15329) Bumps [com.squareup.okio:okio-jvm](https://github.com/square/okio) from 3.16.4 to 3.17.0. - [Changelog](https://github.com/square/okio/blob/master/CHANGELOG.md) - [Commits](square/okio@parent-3.16.4...parent-3.17.0) --- updated-dependencies: - dependency-name: com.squareup.okio:okio-jvm dependency-version: 3.17.0 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Carl Christian Snethlage <50491877+calixtus@users.noreply.github.com> * New translations jabref_en.properties (Italian) (JabRef#15334) * RIS export SP/EP fields when pages contain Unicode en-dash or em-dash (JabRef#15315) * Extend the split regex to match en-dash and em-dash * Added tests --------- Co-authored-by: Carl Christian Snethlage <50491877+calixtus@users.noreply.github.com> * Remove object redundancy, miscellaneous refactoring (JabRef#15332) * Remove object redundancy, miscellaneous refactoring Signed-off-by: subhramit <subhramit.bb@live.in> * Use abbreviationRepository parameter Signed-off-by: subhramit <subhramit.bb@live.in> * Use less injections for journal abbreviations repository Signed-off-by: subhramit <subhramit.bb@live.in> * Indent Signed-off-by: subhramit <subhramit.bb@live.in> * Revert to codepoint --------- Signed-off-by: subhramit <subhramit.bb@live.in> Co-authored-by: Carl Christian Snethlage <50491877+calixtus@users.noreply.github.com> * Add drag-and-drop support for Citation Relations tab (JabRef#15181) * Add drag-and-drop support for Citation Relations tab - Implement drag detection in CitationRelationsTab to allow dragging entries - Add drag support to ViewModelListCellFactory - Fix NullPointerException in FrameDndHandler when dropping onto tabs without IDs - Fixes JabRef#15135 * Fix: correctly set drop completion status for entries * Fix: Add Unreleased section and moved changelog entries * Fix CHANGELOG formatting and upstream linter errors; removed empty groups * Fix code consistency for cr * Add explicit type * Consistency in CHANGELOG.md --------- Co-authored-by: Christoph <siedlerkiller@gmail.com> Co-authored-by: Carl Christian Snethlage <calixtus@users.noreply.github.com> * Update dependency org.eclipse.jgit:org.eclipse.jgit.pgm to v7.6.0.202603022253-r (JabRef#15335) * Chore(deps): Bump org.cyclonedx.bom from 3.2.1 to 3.2.2 (JabRef#15337) Bumps org.cyclonedx.bom from 3.2.1 to 3.2.2. --- updated-dependencies: - dependency-name: org.cyclonedx.bom dependency-version: 3.2.2 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * Chore(deps): Bump org.eclipse.jgit:org.eclipse.jgit in /versions (JabRef#15338) Bumps [org.eclipse.jgit:org.eclipse.jgit](https://github.com/eclipse-jgit/jgit) from 7.5.0.202512021534-r to 7.6.0.202603022253-r. - [Commits](eclipse-jgit/jgit@v7.5.0.202512021534-r...v7.6.0.202603022253-r) --- updated-dependencies: - dependency-name: org.eclipse.jgit:org.eclipse.jgit dependency-version: 7.6.0.202603022253-r dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * Add 'All' citation fetcher that aggregates results from all providers (JabRef#15292) * Add 'All' citation fetcher that aggregates and deduplicates results from all providers - Implements CitationFetcher as AllCitationFetcher aggregating CrossRef, OpenAlex, OpenCitations, and SemanticScholar - Deduplicates results using DuplicateCheck with BibDatabaseMode.BIBTEX - Returns maximum citation count across all providers - Tolerates individual provider failures gracefully - Adds ALL entry to CitationFetcherType enum and factory method - Covers behaviour with unit tests (failure tolerance, deduplication, max count) Closes JabRef#15029 * Add 'All' citation fetcher that aggregates results from all providers - Add ALL as first entry in CitationFetcherType enum - Implement AllCitationFetcher aggregating CrossRef, OpenAlex, OpenCitations, and SemanticScholar - Union results using DatabaseMerger with keyword separator from ImportFormatPreferences, as specified in the task - Return maximum citation count across all providers - Tolerate individual provider failures gracefully - Fix race condition in SearchCitationsRelationsService by marking citationFetcher and citationCountFetcher fields as volatile - Set ALL as the default citation fetcher in preferences - Add unit tests covering failure tolerance, deduplication, and max citation count Closes JabRef#15029 * Update CHANGELOG for issue JabRef#15029 * Address bot review: fix AllCitationFetcher and improve tests - Build provider list from CitationFetcherType enum (excluding ALL) to avoid duplicate list that can drift when new providers are added - Track anySuccess in fetch() and getCitationCount(); throw FetcherException when all providers fail instead of silently returning empty results - Emit WARN log when some providers fail but others succeed - Rename test variables to intent-revealing names - Fix citation count assertion to use assertEquals(Optional.of(20)) - Add tests for all-providers-fail and partial-failure scenarios * Trigger CI * Reformat AllCitationFetcher * Fix checkstyle: remove blank line at start of constructor block * Reverted back to semantic scholar ui preference * Revert default citation fetcher to SEMANTIC_SCHOLAR in EntryEditorPreferences * Re-trigger CI * Adapt tests to use real constructor with mocks, remove test constructor * fix unchecked excpetion --------- Co-authored-by: Siedlerchr <siedlerkiller@gmail.com> * Avoid error logs when search queries are incomplete (JabRef#15333) * Avoid error logs when search queries are incomplete Log the parsing error at debug level instead of error level. This prevents having unnecessary output when user is still entering input like "title =". * Update changelog for fixing incomplete search logging issue * Update changelog entry for incomplete search logging issue * Refine changelog entry for incomplete search logging issue * Chore(deps): Bump org.openrewrite.recipe:rewrite-recipe-bom from 3.24.0 to 3.25.0 (JabRef#15217) * Chore(deps): Bump org.openrewrite.recipe:rewrite-recipe-bom Bumps [org.openrewrite.recipe:rewrite-recipe-bom](https://github.com/openrewrite/rewrite-recipe-bom) from 3.24.0 to 3.25.0. - [Release notes](https://github.com/openrewrite/rewrite-recipe-bom/releases) - [Commits](openrewrite/rewrite-recipe-bom@v3.24.0...v3.25.0) --- updated-dependencies: - dependency-name: org.openrewrite.recipe:rewrite-recipe-bom dependency-version: 3.25.0 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com> * udpate plugin * update rewrite --------- Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Siedlerchr <siedlerkiller@gmail.com> * Select better value in MultiMergeEntries dialog component (JabRef#15027) (JabRef#15255) * Select better value in MultiMergeEntries dialog component (JabRef#15027) * Use PlausibilityComparatorFactory in MultiMergeEntriesViewModel to select the more plausible value when merging fields from multiple sources, instead of always keeping the first-seen value. * Add DateFieldPlausibilityComparator to prefer more specific dates. * Add unit tests for DateFieldPlausibilityComparator * implement review comments * Fix trailing whitespace in MultiMergeEntriesViewModelTest * Trigger CI * CI: re-trigger * CI: re-trigger --------- Co-authored-by: Christoph <siedlerkiller@gmail.com> * Fix reset and import for PreviewPreferences (JabRef#15306) * Cleanups * Refactor PreviewPreferences for resetting and import * Some null checks and migrations * Fix wrong notnull * Fix import * Avoid addAll crash on immutable List * Add forgotten customPreviewLayout * Fix artifact from code iteration * Refactor for consistency * Fix artifact from code iteration * Enhance dummy fallback layout * Try to fix jbang * Apply IDE suggestions * Fix weird checkstyle behaviour * Add default styles * Fix migration tests * Add tests * Small cleanups --------- Co-authored-by: Carl Christian Snethlage <calixtus@users.noreply.github.com> * Fix javadoc markdown artifacts (JabRef#15309) * Closes JabRef#14897 This incorporates all the pending old Javadoc to Markdown changes required after merging JabRef#14891.The following files are changed: 1.AutoCompletionTextInputBinding.java 2.JabRefCliPreferences.java 3.SearchBasedParserFetcher.java 4.StartNewStudyAction.java 1. * 1. * Rsolved mix up of endregion and endRegion.Final one is endregion. 1.File changed-JabRefCliPreferences.java * Rsolved format issue related to line space.Files changed. 1.JabRefCliPreferences.java 2.SearchBasedParserFetcher.java * Files changed. 1.JabRefCliPreferences.java. The following changes are done:- 1.Added // endregion to maintain sync with region:AI And // region Push to application preferences and //region to Git 2.Changed region: to region 3.Changed region: Cleanup to previous ToDo: Cleanup 4.changed endRegion to end region 5.Adjusted dangling // endregion by merging Imported Preference tag(new one) with Other Preferences(old one) * Files changed. 1.JabRefCliPreferences.java. The following changes are done:- 1.Apply IntelliJ formatting * Update CHANGELOG for JabRef#12967 * Apply case-insensitive comparison only to DOI identifiers * Apply IntelliJ code formatting to DuplicateCheck and DuplicateCheckTest * Add tests for case-insensitive DOI duplicate detection * Fix case-insensitive DOI comparison in duplicate detection * fix formatting --------- Signed-off-by: dependabot[bot] <support@github.com> Signed-off-by: subhramit <subhramit.bb@live.in> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Carl Christian Snethlage <50491877+calixtus@users.noreply.github.com> Co-authored-by: Christoph <siedlerkiller@gmail.com> Co-authored-by: Faneesh Juneja <willowstration@gmail.com> Co-authored-by: Subhramit Basu <subhramit.bb@live.in> Co-authored-by: Paul <thecoder777.github@gmail.com> Co-authored-by: Carl Christian Snethlage <calixtus@users.noreply.github.com> Co-authored-by: Mend Renovate <bot@renovateapp.com> Co-authored-by: Nishant Dasgupta <nishant.24bcs10451@sst.scaler.com> Co-authored-by: Mike Zhang <97817030+mikezhanghaozhe@users.noreply.github.com> Co-authored-by: JunWang222 <70090336+JunWang222@users.noreply.github.com> Co-authored-by: AbhijitBhowmick <94289124+AbhijitBhowmick@users.noreply.github.com>
* Add drag-and-drop support for Citation Relations tab - Implement drag detection in CitationRelationsTab to allow dragging entries - Add drag support to ViewModelListCellFactory - Fix NullPointerException in FrameDndHandler when dropping onto tabs without IDs - Fixes JabRef#15135 * Fix: correctly set drop completion status for entries * Fix: Add Unreleased section and moved changelog entries * Fix CHANGELOG formatting and upstream linter errors; removed empty groups * Fix code consistency for cr * Add explicit type * Consistency in CHANGELOG.md --------- Co-authored-by: Christoph <siedlerkiller@gmail.com> Co-authored-by: Carl Christian Snethlage <calixtus@users.noreply.github.com>
Related issues and pull requests
Closes #15135
PR Description
Intent:
Impact:
Steps to test
Testing Video on M1 MacOS Sonoma 14.8.1 using Eclipse Temurin 25.0.2 as advised in the Workspace setup guidelines:
https://github.com/user-attachments/assets/8557895c-3c7b-445e-804b-2ccc6659ea21
Checklist
CHANGELOG.mdin a way that can be understood by the average user (if change is visible to the user)