From b2d4125ebc1bbec4ddf145a8d0f55982f80e6a87 Mon Sep 17 00:00:00 2001 From: Sanghyeok Kim Date: Sun, 27 Jul 2025 11:23:01 +0900 Subject: [PATCH 1/2] Add multiple bibtex dialog --- .../gui/importer/ImportEntriesDialog.java | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/jabgui/src/main/java/org/jabref/gui/importer/ImportEntriesDialog.java b/jabgui/src/main/java/org/jabref/gui/importer/ImportEntriesDialog.java index 4fc5a89000e..c57a50c10f2 100644 --- a/jabgui/src/main/java/org/jabref/gui/importer/ImportEntriesDialog.java +++ b/jabgui/src/main/java/org/jabref/gui/importer/ImportEntriesDialog.java @@ -188,14 +188,24 @@ private void initialize() { private void displayBibTeX(BibEntry entry, String bibTeX) { if (entriesListView.getCheckModel().isChecked(entry)) { - bibTeXData.clear(); bibTeXData.appendText(bibTeX); + bibTeXData.appendText(OS.NEWLINE); bibTeXData.moveTo(0); bibTeXData.requestFollowCaret(); } else { + String currentText = bibTeXData.getText(); + String newText = currentText.replace(bibTeX, ""); bibTeXData.clear(); + bibTeXData.appendText(newText); } } + + private void displayBibTeXesWithoutCheck(String bibTeXes) { + bibTeXData.clear(); + bibTeXData.appendText(bibTeXes); + bibTeXData.moveTo(0); + bibTeXData.requestFollowCaret(); + } private void initBibTeX() { bibTeXDataLabel.setText(Localization.lang("%0 source", "BibTeX")); @@ -209,6 +219,7 @@ private void initBibTeX() { public void unselectAll() { entriesListView.getCheckModel().clearChecks(); + bibTeXData.clear(); } public void selectAllNewEntries() { @@ -216,7 +227,7 @@ public void selectAllNewEntries() { for (BibEntry entry : entriesListView.getItems()) { if (!viewModel.hasDuplicate(entry)) { entriesListView.getCheckModel().check(entry); - displayBibTeX(entry, viewModel.getSourceString(entry)); + displayBibTeX(entry, viewModel.getSourceString(entry, true)); } } } @@ -224,5 +235,7 @@ public void selectAllNewEntries() { public void selectAllEntries() { unselectAll(); entriesListView.getCheckModel().checkAll(); + List entries = entriesListView.getItems(); + displayBibTeXesWithoutCheck(viewModel.getSourcesString(entries)); } } From 0bbc7e95622e02fa4317e121262b4ead65fca899 Mon Sep 17 00:00:00 2001 From: Sanghyeok Kim Date: Sun, 27 Jul 2025 11:27:37 +0900 Subject: [PATCH 2/2] Add multiple bibtex format through serializeAll --- .../gui/importer/ImportEntriesViewModel.java | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/jabgui/src/main/java/org/jabref/gui/importer/ImportEntriesViewModel.java b/jabgui/src/main/java/org/jabref/gui/importer/ImportEntriesViewModel.java index 8dc031f249a..4392f6b1004 100644 --- a/jabgui/src/main/java/org/jabref/gui/importer/ImportEntriesViewModel.java +++ b/jabgui/src/main/java/org/jabref/gui/importer/ImportEntriesViewModel.java @@ -120,12 +120,25 @@ public boolean hasDuplicate(BibEntry entry) { .containsDuplicate(selectedDb.getValue().getDatabase(), entry, selectedDb.getValue().getMode()).isPresent(); } - public String getSourceString(BibEntry entry) { + public String getSourcesString(List entries) { StringWriter writer = new StringWriter(); BibWriter bibWriter = new BibWriter(writer, OS.NEWLINE); FieldWriter fieldWriter = FieldWriter.buildIgnoreHashes(preferences.getFieldPreferences()); + String serializedStrings; try { - new BibEntryWriter(fieldWriter, entryTypesManager).write(entry, bibWriter, selectedDb.getValue().getMode()); + serializedStrings = new BibEntryWriter(fieldWriter, entryTypesManager).serializeAll(entries, selectedDb.getValue().getMode()); + } catch (IOException ioException) { + serializedStrings = ""; + } + return serializedStrings; + } + + public String getSourceString(BibEntry entry, boolean reformat) { + StringWriter writer = new StringWriter(); + BibWriter bibWriter = new BibWriter(writer, OS.NEWLINE); + FieldWriter fieldWriter = FieldWriter.buildIgnoreHashes(preferences.getFieldPreferences()); + try { + new BibEntryWriter(fieldWriter, entryTypesManager).write(entry, bibWriter, selectedDb.getValue().getMode(), reformat); } catch (IOException ioException) { return ""; }