From 0ad6aa5be6b412e9dbfc342f85da4afc69bab470 Mon Sep 17 00:00:00 2001 From: Sanjyot <41758207+sanjyot242@users.noreply.github.com> Date: Thu, 13 Mar 2025 19:30:08 -0700 Subject: [PATCH 01/15] Add placeholder with "Add Example Entry" for empty library -Ensures button is hidden when entries exist but are filtered -Add listeners to track database and table entry changes --- .../org/jabref/gui/maintable/MainTable.java | 50 +++++++++++++++++++ 1 file changed, 50 insertions(+) diff --git a/src/main/java/org/jabref/gui/maintable/MainTable.java b/src/main/java/org/jabref/gui/maintable/MainTable.java index 3e204c1506f..dd9ec31efb8 100644 --- a/src/main/java/org/jabref/gui/maintable/MainTable.java +++ b/src/main/java/org/jabref/gui/maintable/MainTable.java @@ -12,6 +12,9 @@ import javafx.collections.ListChangeListener; import javafx.css.PseudoClass; +import javafx.geometry.Pos; +import javafx.scene.control.Button; +import javafx.scene.control.Label; import javafx.scene.control.SelectionMode; import javafx.scene.control.TableColumn; import javafx.scene.control.TableRow; @@ -24,6 +27,7 @@ import javafx.scene.input.MouseDragEvent; import javafx.scene.input.MouseEvent; import javafx.scene.input.TransferMode; +import javafx.scene.layout.VBox; import org.jabref.architecture.AllowedToUseClassGetResource; import org.jabref.gui.ClipBoardManager; @@ -54,6 +58,8 @@ import org.jabref.model.database.BibDatabaseContext; import org.jabref.model.entry.BibEntry; import org.jabref.model.entry.BibEntryTypesManager; +import org.jabref.model.entry.field.StandardField; +import org.jabref.model.entry.types.StandardEntryType; import com.airhacks.afterburner.injection.Injector; import org.slf4j.Logger; @@ -189,6 +195,23 @@ public MainTable(MainTableDataModel model, this.setItems(model.getEntriesFilteredAndSorted()); + Button addExampleButton = new Button("Add Example Entry"); + addExampleButton.setOnAction(event -> addExampleEntry()); + + VBox placeholderBox = new VBox(10, new Label("No entries available"), addExampleButton); + placeholderBox.setAlignment(Pos.CENTER); + + // Initial check + updatePlaceholder(placeholderBox); + + // Listen for database changes + database.getDatabase().getEntries().addListener((ListChangeListener<BibEntry>) change -> updatePlaceholder(placeholderBox)); + + // Listener for filtering to remove the button + this.getItems().addListener((ListChangeListener<BibEntryTableViewModel>) change -> updatePlaceholder(placeholderBox)); + + + // Enable sorting // Workaround for a JavaFX bug: https://bugs.openjdk.org/browse/JDK-8301761 (The sorting of the SortedList can become invalid) // The default comparator of the SortedList does not consider the insertion index of entries that are equal according to the comparator. @@ -523,4 +546,31 @@ private Optional<BibEntryTableViewModel> findEntry(BibEntry entry) { public void setCitationMergeMode(boolean citationMerge) { this.citationMergeMode = citationMerge; } + + private void updatePlaceholder(VBox placeholderBox) { + LOGGER.info("Update place holder ran "); + if (database.getDatabase().getEntries().isEmpty()) { + this.setPlaceholder(placeholderBox); + } else { + this.setPlaceholder(null); + } + } + + private void addExampleEntry() { + BibEntry exampleEntry = new BibEntry(StandardEntryType.Article); + exampleEntry.setField(StandardField.AUTHOR, "Oliver Kopp and Carl Christian Snethlage and Christoph Schwentker"); + exampleEntry.setField(StandardField.TITLE, "JabRef: BibTeX-based literature management software"); + exampleEntry.setField(StandardField.JOURNAL, "TUGboat"); + exampleEntry.setField(StandardField.VOLUME, "44"); + exampleEntry.setField(StandardField.NUMBER, "3"); + exampleEntry.setField(StandardField.PAGES, "441--447"); + exampleEntry.setField(StandardField.DOI, "10.47397/tb/44-3/tb138kopp-jabref"); + exampleEntry.setField(StandardField.ISSN, "0896-3207"); + exampleEntry.setField(StandardField.ISSUE, "138"); + exampleEntry.setField(StandardField.YEAR, "2023"); + + database.getDatabase().insertEntry(exampleEntry); + } } + + From 1316e103a9108d81893d28f0bbb9f1b2877540e9 Mon Sep 17 00:00:00 2001 From: Sanjyot <41758207+sanjyot242@users.noreply.github.com> Date: Mon, 17 Mar 2025 20:31:58 -0700 Subject: [PATCH 02/15] Updated code based on draft review ( Import pdf pending) -used localization -added styles for button --- src/main/java/org/jabref/gui/Base.css | 7 ++++ .../org/jabref/gui/maintable/MainTable.java | 39 ++++++++++++++----- 2 files changed, 37 insertions(+), 9 deletions(-) diff --git a/src/main/java/org/jabref/gui/Base.css b/src/main/java/org/jabref/gui/Base.css index 42d9c866367..8af63d522a8 100644 --- a/src/main/java/org/jabref/gui/Base.css +++ b/src/main/java/org/jabref/gui/Base.css @@ -2431,3 +2431,10 @@ journalInfo .grid-cell-b { #styleSelectDialog .currentStyleNameLabel { -fx-font-size: 1em; -fx-font-weight: bold; -fx-text-fill: -jr-theme; } + +.text-button-blue{ + -fx-background-color: transparent; + -fx-text-fill: -jr-theme; + -fx-font-size: 1.25em; + -fx-border-color: transparent; +} diff --git a/src/main/java/org/jabref/gui/maintable/MainTable.java b/src/main/java/org/jabref/gui/maintable/MainTable.java index dd9ec31efb8..f88ff3923c2 100644 --- a/src/main/java/org/jabref/gui/maintable/MainTable.java +++ b/src/main/java/org/jabref/gui/maintable/MainTable.java @@ -27,6 +27,7 @@ import javafx.scene.input.MouseDragEvent; import javafx.scene.input.MouseEvent; import javafx.scene.input.TransferMode; +import javafx.scene.layout.HBox; import javafx.scene.layout.VBox; import org.jabref.architecture.AllowedToUseClassGetResource; @@ -54,6 +55,7 @@ import org.jabref.logic.FilePreferences; import org.jabref.logic.citationstyle.CitationStyleOutputFormat; import org.jabref.logic.journals.JournalAbbreviationRepository; +import org.jabref.logic.l10n.Localization; import org.jabref.logic.util.TaskExecutor; import org.jabref.model.database.BibDatabaseContext; import org.jabref.model.entry.BibEntry; @@ -195,23 +197,38 @@ public MainTable(MainTableDataModel model, this.setItems(model.getEntriesFilteredAndSorted()); - Button addExampleButton = new Button("Add Example Entry"); - addExampleButton.setOnAction(event -> addExampleEntry()); + Button addExampleButton = new Button(Localization.lang("Add example Entry")); + addExampleButton.getStyleClass().add("text-button-blue"); + addExampleButton.setOnAction(event -> { + BibEntry entry = addExampleEntry(); + libraryTab.showAndEdit(entry); + }); + + Button importPdfsButton = new Button(Localization.lang("Import existing PDFs")); + importPdfsButton.getStyleClass().add("text-button-blue"); + importPdfsButton.setOnAction(event -> { + importPdfsButton(); + }); + + Label noContentLabel = new Label(Localization.lang("No content in table")); + + // Create horizontal box for buttons + HBox buttonBox = new HBox(20, addExampleButton, importPdfsButton); + buttonBox.setAlignment(Pos.CENTER); - VBox placeholderBox = new VBox(10, new Label("No entries available"), addExampleButton); + // Create a VBox with the label and horizontal button box + VBox placeholderBox = new VBox(15, noContentLabel, buttonBox); placeholderBox.setAlignment(Pos.CENTER); - // Initial check + // Initial placeholder based on database content updatePlaceholder(placeholderBox); // Listen for database changes database.getDatabase().getEntries().addListener((ListChangeListener<BibEntry>) change -> updatePlaceholder(placeholderBox)); - // Listener for filtering to remove the button + // Listen for filter changes this.getItems().addListener((ListChangeListener<BibEntryTableViewModel>) change -> updatePlaceholder(placeholderBox)); - - // Enable sorting // Workaround for a JavaFX bug: https://bugs.openjdk.org/browse/JDK-8301761 (The sorting of the SortedList can become invalid) // The default comparator of the SortedList does not consider the insertion index of entries that are equal according to the comparator. @@ -548,7 +565,6 @@ public void setCitationMergeMode(boolean citationMerge) { } private void updatePlaceholder(VBox placeholderBox) { - LOGGER.info("Update place holder ran "); if (database.getDatabase().getEntries().isEmpty()) { this.setPlaceholder(placeholderBox); } else { @@ -556,7 +572,7 @@ private void updatePlaceholder(VBox placeholderBox) { } } - private void addExampleEntry() { + private BibEntry addExampleEntry() { BibEntry exampleEntry = new BibEntry(StandardEntryType.Article); exampleEntry.setField(StandardField.AUTHOR, "Oliver Kopp and Carl Christian Snethlage and Christoph Schwentker"); exampleEntry.setField(StandardField.TITLE, "JabRef: BibTeX-based literature management software"); @@ -570,6 +586,11 @@ private void addExampleEntry() { exampleEntry.setField(StandardField.YEAR, "2023"); database.getDatabase().insertEntry(exampleEntry); + return exampleEntry; + } + + private void importPdfsButton() { + System.out.println("Import PDF flow"); } } From 0ebccda6a24aec0dbff65c672364663186bf0cc9 Mon Sep 17 00:00:00 2001 From: Sanjyot <41758207+sanjyot242@users.noreply.github.com> Date: Mon, 17 Mar 2025 22:19:49 -0700 Subject: [PATCH 03/15] Added function for Import existing PDFs -checks if directory exists -triggers search for unlinked files ( if directory exists ) -Shows notification and open library properties ( if directory doesn't exist) --- .../org/jabref/gui/maintable/MainTable.java | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) diff --git a/src/main/java/org/jabref/gui/maintable/MainTable.java b/src/main/java/org/jabref/gui/maintable/MainTable.java index 8fdd4babc04..c32e8c34beb 100644 --- a/src/main/java/org/jabref/gui/maintable/MainTable.java +++ b/src/main/java/org/jabref/gui/maintable/MainTable.java @@ -40,10 +40,12 @@ import org.jabref.gui.actions.StandardActions; import org.jabref.gui.edit.EditAction; import org.jabref.gui.externalfiles.ExternalFilesEntryLinker; +import org.jabref.gui.externalfiles.FindUnlinkedFilesAction; import org.jabref.gui.externalfiles.ImportHandler; import org.jabref.gui.importer.fetcher.LookupIdentifierAction; import org.jabref.gui.keyboard.KeyBinding; import org.jabref.gui.keyboard.KeyBindingRepository; +import org.jabref.gui.libraryproperties.LibraryPropertiesAction; import org.jabref.gui.maintable.columns.LibraryColumn; import org.jabref.gui.maintable.columns.MainTableColumn; import org.jabref.gui.mergeentries.MergeWithFetchedEntryAction; @@ -63,8 +65,8 @@ import org.jabref.model.database.BibDatabaseContext; import org.jabref.model.entry.BibEntry; import org.jabref.model.entry.BibEntryTypesManager; -import org.jabref.model.entry.field.StandardField; import org.jabref.model.entry.identifier.DOI; +import org.jabref.model.entry.field.StandardField; import org.jabref.model.entry.types.StandardEntryType; import com.airhacks.afterburner.injection.Injector; @@ -605,7 +607,20 @@ private BibEntry addExampleEntry() { } private void importPdfsButton() { - System.out.println("Flow for pdfs"); + // check if file directories is not empty + List<Path> fileDirectories = database.getFileDirectories(filePreferences); + + if (fileDirectories.isEmpty()) { + dialogService.showWarningDialogAndWait( + Localization.lang("File directory doesn't exist's"), + Localization.lang("Please configure a file directory now")); + + LibraryPropertiesAction libraryPropertiesAction = new LibraryPropertiesAction(stateManager); + libraryPropertiesAction.execute(); + } else { + FindUnlinkedFilesAction findUnlinkedFilesAction = new FindUnlinkedFilesAction(dialogService, stateManager); + findUnlinkedFilesAction.execute(); + } } } From c3e6ba516f279a254fe1790478767c79a6e3fffd Mon Sep 17 00:00:00 2001 From: Sanjyot <41758207+sanjyot242@users.noreply.github.com> Date: Mon, 17 Mar 2025 22:25:16 -0700 Subject: [PATCH 04/15] updated CHANGELOG.md --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index d10da493072..4d7deb5870c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -11,6 +11,7 @@ Note that this project **does not** adhere to [Semantic Versioning](https://semv ### Added +- We added buttons "Add example entry" and "Import existing PDFs" when a library is empty, making it easier for new users to get started. [#12662](https://github.com/JabRef/jabref/issues/12662) - We added <kbd>F5</kbd> as a shortcut key for fetching data and <kbd>Alt+F</kbd> as a shortcut for looking up data using DOI. [#11802](https://github.com/JabRef/jabref/issues/11802) - We added a feature to rename the subgroup, with the keybinding (<kbd>F2</kbd>) for quick access. [#11896](https://github.com/JabRef/jabref/issues/11896) - We added a new functionality that displays a drop-down list of matching suggestions when typing a citation key pattern. [#12502](https://github.com/JabRef/jabref/issues/12502) From a58fe3d396193f22315777ba41278ea88cc509ba Mon Sep 17 00:00:00 2001 From: Sanjyot <41758207+sanjyot242@users.noreply.github.com> Date: Mon, 17 Mar 2025 22:54:43 -0700 Subject: [PATCH 05/15] Fixed localization issues and checkstyle --- src/main/java/org/jabref/gui/maintable/MainTable.java | 8 ++++---- src/main/resources/l10n/JabRef_en.properties | 6 ++++++ 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/src/main/java/org/jabref/gui/maintable/MainTable.java b/src/main/java/org/jabref/gui/maintable/MainTable.java index c32e8c34beb..21317093d51 100644 --- a/src/main/java/org/jabref/gui/maintable/MainTable.java +++ b/src/main/java/org/jabref/gui/maintable/MainTable.java @@ -65,8 +65,8 @@ import org.jabref.model.database.BibDatabaseContext; import org.jabref.model.entry.BibEntry; import org.jabref.model.entry.BibEntryTypesManager; -import org.jabref.model.entry.identifier.DOI; import org.jabref.model.entry.field.StandardField; +import org.jabref.model.entry.identifier.DOI; import org.jabref.model.entry.types.StandardEntryType; import com.airhacks.afterburner.injection.Injector; @@ -203,7 +203,7 @@ public MainTable(MainTableDataModel model, this.setItems(model.getEntriesFilteredAndSorted()); - Button addExampleButton = new Button(Localization.lang("Add example Entry")); + Button addExampleButton = new Button(Localization.lang("Add example entry")); addExampleButton.getStyleClass().add("text-button-blue"); addExampleButton.setOnAction(event -> { BibEntry entry = addExampleEntry(); @@ -612,8 +612,8 @@ private void importPdfsButton() { if (fileDirectories.isEmpty()) { dialogService.showWarningDialogAndWait( - Localization.lang("File directory doesn't exist's"), - Localization.lang("Please configure a file directory now")); + Localization.lang("File directory is not set or does not exist!"), + Localization.lang("Please configure a file directory")); LibraryPropertiesAction libraryPropertiesAction = new LibraryPropertiesAction(stateManager); libraryPropertiesAction.execute(); diff --git a/src/main/resources/l10n/JabRef_en.properties b/src/main/resources/l10n/JabRef_en.properties index a7737a9a456..7ab8773a2e9 100644 --- a/src/main/resources/l10n/JabRef_en.properties +++ b/src/main/resources/l10n/JabRef_en.properties @@ -2870,3 +2870,9 @@ Author\ related=Author related Editor\ related=Editor related Title\ related=Title related Entry\ fields=Entry fields + +Please\ configure\ a\ file\ directory=Please configure a file directory +Add\ example\ entry=Add example entry +No\ content\ in\ table=No content in table + + From 82a6ff4efed0aaad5d87fea9c05e757b76efe17c Mon Sep 17 00:00:00 2001 From: Sanjyot <41758207+sanjyot242@users.noreply.github.com> Date: Mon, 17 Mar 2025 23:03:21 -0700 Subject: [PATCH 06/15] Fixed localization issues --- src/main/resources/l10n/JabRef_en.properties | 1 + 1 file changed, 1 insertion(+) diff --git a/src/main/resources/l10n/JabRef_en.properties b/src/main/resources/l10n/JabRef_en.properties index 7ab8773a2e9..d397ee7bcb3 100644 --- a/src/main/resources/l10n/JabRef_en.properties +++ b/src/main/resources/l10n/JabRef_en.properties @@ -2874,5 +2874,6 @@ Entry\ fields=Entry fields Please\ configure\ a\ file\ directory=Please configure a file directory Add\ example\ entry=Add example entry No\ content\ in\ table=No content in table +Import\ existing\ PDFs=Import existing PDFs From bee45103c2e5a9bd0ab3dc606f0ef18d03b0eaf1 Mon Sep 17 00:00:00 2001 From: Sanjyot <41758207+sanjyot242@users.noreply.github.com> Date: Mon, 17 Mar 2025 23:49:32 -0700 Subject: [PATCH 07/15] submodules changes --- src/main/resources/csl-styles | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/resources/csl-styles b/src/main/resources/csl-styles index 44d9b9f778e..5dcaf2790ec 160000 --- a/src/main/resources/csl-styles +++ b/src/main/resources/csl-styles @@ -1 +1 @@ -Subproject commit 44d9b9f778ea3b947bf381ed8c7269acff31db84 +Subproject commit 5dcaf2790ecac10dde44e70538a790b52c78fa4b From 3b4cacb8da7d04292df7d854bfbafffdbcd13723 Mon Sep 17 00:00:00 2001 From: Sanjyot <41758207+sanjyot242@users.noreply.github.com> Date: Wed, 19 Mar 2025 18:22:42 -0700 Subject: [PATCH 08/15] roll back .gitmodules --- .gitmodules | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.gitmodules b/.gitmodules index 54034f90bca..10944a3d5a0 100644 --- a/.gitmodules +++ b/.gitmodules @@ -6,10 +6,10 @@ [submodule "csl-styles"] path = src/main/resources/csl-styles url = https://github.com/citation-style-language/styles.git - #ignore = all + ignore = all shallow = true [submodule "csl-locales"] path = src/main/resources/csl-locales url = https://github.com/citation-style-language/locales.git - #ignore = all + ignore = all shallow = true From 612e9948e913d30ed4c660bd66beabac19aeb5e6 Mon Sep 17 00:00:00 2001 From: Sanjyot <41758207+sanjyot242@users.noreply.github.com> Date: Wed, 19 Mar 2025 18:41:58 -0700 Subject: [PATCH 09/15] Added comment at the right place --- src/main/java/org/jabref/gui/maintable/MainTable.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/org/jabref/gui/maintable/MainTable.java b/src/main/java/org/jabref/gui/maintable/MainTable.java index 21317093d51..db6d16bc284 100644 --- a/src/main/java/org/jabref/gui/maintable/MainTable.java +++ b/src/main/java/org/jabref/gui/maintable/MainTable.java @@ -607,9 +607,9 @@ private BibEntry addExampleEntry() { } private void importPdfsButton() { - // check if file directories is not empty List<Path> fileDirectories = database.getFileDirectories(filePreferences); + // check if file directories is not empty if (fileDirectories.isEmpty()) { dialogService.showWarningDialogAndWait( Localization.lang("File directory is not set or does not exist!"), From 56e00a226450de8fe4789e2b2f2f985fa12d8678 Mon Sep 17 00:00:00 2001 From: Sanjyot <41758207+sanjyot242@users.noreply.github.com> Date: Fri, 21 Mar 2025 10:36:23 -0700 Subject: [PATCH 10/15] Resolved Review Comments - Removed Unnecessary comments - Used withField for BibEntry instead of setField --- .../org/jabref/gui/maintable/MainTable.java | 28 ++++++++----------- src/main/resources/l10n/JabRef_en.properties | 2 +- 2 files changed, 12 insertions(+), 18 deletions(-) diff --git a/src/main/java/org/jabref/gui/maintable/MainTable.java b/src/main/java/org/jabref/gui/maintable/MainTable.java index db6d16bc284..8621b486335 100644 --- a/src/main/java/org/jabref/gui/maintable/MainTable.java +++ b/src/main/java/org/jabref/gui/maintable/MainTable.java @@ -218,21 +218,16 @@ public MainTable(MainTableDataModel model, Label noContentLabel = new Label(Localization.lang("No content in table")); - // Create horizontal box for buttons HBox buttonBox = new HBox(20, addExampleButton, importPdfsButton); buttonBox.setAlignment(Pos.CENTER); - // Create a VBox with the label and horizontal button box VBox placeholderBox = new VBox(15, noContentLabel, buttonBox); placeholderBox.setAlignment(Pos.CENTER); - // Initial placeholder based on database content updatePlaceholder(placeholderBox); - // Listen for database changes database.getDatabase().getEntries().addListener((ListChangeListener<BibEntry>) change -> updatePlaceholder(placeholderBox)); - // Listen for filter changes this.getItems().addListener((ListChangeListener<BibEntryTableViewModel>) change -> updatePlaceholder(placeholderBox)); // Enable sorting @@ -591,16 +586,16 @@ private void updatePlaceholder(VBox placeholderBox) { private BibEntry addExampleEntry() { BibEntry exampleEntry = new BibEntry(StandardEntryType.Article); - exampleEntry.setField(StandardField.AUTHOR, "Oliver Kopp and Carl Christian Snethlage and Christoph Schwentker"); - exampleEntry.setField(StandardField.TITLE, "JabRef: BibTeX-based literature management software"); - exampleEntry.setField(StandardField.JOURNAL, "TUGboat"); - exampleEntry.setField(StandardField.VOLUME, "44"); - exampleEntry.setField(StandardField.NUMBER, "3"); - exampleEntry.setField(StandardField.PAGES, "441--447"); - exampleEntry.setField(StandardField.DOI, "10.47397/tb/44-3/tb138kopp-jabref"); - exampleEntry.setField(StandardField.ISSN, "0896-3207"); - exampleEntry.setField(StandardField.ISSUE, "138"); - exampleEntry.setField(StandardField.YEAR, "2023"); + exampleEntry.withField(StandardField.AUTHOR, "Oliver Kopp and Carl Christian Snethlage and Christoph Schwentker"); + exampleEntry.withField(StandardField.TITLE, "JabRef: BibTeX-based literature management software"); + exampleEntry.withField(StandardField.JOURNAL, "TUGboat"); + exampleEntry.withField(StandardField.VOLUME, "44"); + exampleEntry.withField(StandardField.NUMBER, "3"); + exampleEntry.withField(StandardField.PAGES, "441--447"); + exampleEntry.withField(StandardField.DOI, "10.47397/tb/44-3/tb138kopp-jabref"); + exampleEntry.withField(StandardField.ISSN, "0896-3207"); + exampleEntry.withField(StandardField.ISSUE, "138"); + exampleEntry.withField(StandardField.YEAR, "2023"); database.getDatabase().insertEntry(exampleEntry); return exampleEntry; @@ -609,10 +604,9 @@ private BibEntry addExampleEntry() { private void importPdfsButton() { List<Path> fileDirectories = database.getFileDirectories(filePreferences); - // check if file directories is not empty if (fileDirectories.isEmpty()) { dialogService.showWarningDialogAndWait( - Localization.lang("File directory is not set or does not exist!"), + Localization.lang("File directory is not set or does not exist"), Localization.lang("Please configure a file directory")); LibraryPropertiesAction libraryPropertiesAction = new LibraryPropertiesAction(stateManager); diff --git a/src/main/resources/l10n/JabRef_en.properties b/src/main/resources/l10n/JabRef_en.properties index f0bfca3d7ef..ffe7fcd9b59 100644 --- a/src/main/resources/l10n/JabRef_en.properties +++ b/src/main/resources/l10n/JabRef_en.properties @@ -2748,7 +2748,7 @@ Clear\ history=Clear history File=File file=file -File\ directory\ is\ not\ set\ or\ does\ not\ exist\!=File directory is not set or does not exist! +File\ directory\ is\ not\ set\ or\ does\ not\ exist=File directory is not set or does not exist File\ exists=File exists File\ not\ found=File not found From 6f64742912f01a5eaaa9e5faa76785a1be80496d Mon Sep 17 00:00:00 2001 From: Sanjyot <41758207+sanjyot242@users.noreply.github.com> Date: Fri, 21 Mar 2025 10:48:40 -0700 Subject: [PATCH 11/15] Removed Exclamation mark , should be avoided in UI messages. -updating with period --- .../java/org/jabref/gui/fieldeditors/LinkedFileViewModel.java | 2 +- src/main/java/org/jabref/gui/maintable/MainTable.java | 2 +- src/main/resources/l10n/JabRef_en.properties | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/main/java/org/jabref/gui/fieldeditors/LinkedFileViewModel.java b/src/main/java/org/jabref/gui/fieldeditors/LinkedFileViewModel.java index 3505d1dfd10..28337d51d02 100644 --- a/src/main/java/org/jabref/gui/fieldeditors/LinkedFileViewModel.java +++ b/src/main/java/org/jabref/gui/fieldeditors/LinkedFileViewModel.java @@ -294,7 +294,7 @@ public void moveToDefaultDirectory() { // Get target folder Optional<Path> fileDir = databaseContext.getFirstExistingFileDir(preferences.getFilePreferences()); if (fileDir.isEmpty()) { - dialogService.showErrorDialogAndWait(Localization.lang("Move file"), Localization.lang("File directory is not set or does not exist!")); + dialogService.showErrorDialogAndWait(Localization.lang("Move file"), Localization.lang("File directory is not set or does not exist.")); return; } diff --git a/src/main/java/org/jabref/gui/maintable/MainTable.java b/src/main/java/org/jabref/gui/maintable/MainTable.java index 8621b486335..b99b99d5839 100644 --- a/src/main/java/org/jabref/gui/maintable/MainTable.java +++ b/src/main/java/org/jabref/gui/maintable/MainTable.java @@ -606,7 +606,7 @@ private void importPdfsButton() { if (fileDirectories.isEmpty()) { dialogService.showWarningDialogAndWait( - Localization.lang("File directory is not set or does not exist"), + Localization.lang("File directory is not set or does not exist."), Localization.lang("Please configure a file directory")); LibraryPropertiesAction libraryPropertiesAction = new LibraryPropertiesAction(stateManager); diff --git a/src/main/resources/l10n/JabRef_en.properties b/src/main/resources/l10n/JabRef_en.properties index ffe7fcd9b59..97f902fca35 100644 --- a/src/main/resources/l10n/JabRef_en.properties +++ b/src/main/resources/l10n/JabRef_en.properties @@ -2748,7 +2748,7 @@ Clear\ history=Clear history File=File file=file -File\ directory\ is\ not\ set\ or\ does\ not\ exist=File directory is not set or does not exist +File\ directory\ is\ not\ set\ or\ does\ not\ exist.=File directory is not set or does not exist. File\ exists=File exists File\ not\ found=File not found From 6c74e419c155128aa600dfc3070ebcd104aab637 Mon Sep 17 00:00:00 2001 From: Sanjyot <41758207+sanjyot242@users.noreply.github.com> Date: Wed, 26 Mar 2025 23:04:42 -0700 Subject: [PATCH 12/15] -Refactored function name to importPdfs -Added focus for library-specific file directory --- .../general/GeneralPropertiesView.java | 7 +++++++ src/main/java/org/jabref/gui/maintable/MainTable.java | 11 +++++------ 2 files changed, 12 insertions(+), 6 deletions(-) diff --git a/src/main/java/org/jabref/gui/libraryproperties/general/GeneralPropertiesView.java b/src/main/java/org/jabref/gui/libraryproperties/general/GeneralPropertiesView.java index 760a742bc3d..bf2af1186aa 100644 --- a/src/main/java/org/jabref/gui/libraryproperties/general/GeneralPropertiesView.java +++ b/src/main/java/org/jabref/gui/libraryproperties/general/GeneralPropertiesView.java @@ -57,6 +57,13 @@ public void initialize() { librarySpecificFileDirectory.textProperty().bindBidirectional(viewModel.librarySpecificDirectoryPropertyProperty()); userSpecificFileDirectory.textProperty().bindBidirectional(viewModel.userSpecificFileDirectoryProperty()); laTexFileDirectory.textProperty().bindBidirectional(viewModel.laTexFileDirectoryProperty()); + + javafx.application.Platform.runLater(new Runnable() { + @Override + public void run() { + librarySpecificFileDirectory.requestFocus(); + } + }); } @FXML diff --git a/src/main/java/org/jabref/gui/maintable/MainTable.java b/src/main/java/org/jabref/gui/maintable/MainTable.java index b99b99d5839..5b758dfc118 100644 --- a/src/main/java/org/jabref/gui/maintable/MainTable.java +++ b/src/main/java/org/jabref/gui/maintable/MainTable.java @@ -213,7 +213,7 @@ public MainTable(MainTableDataModel model, Button importPdfsButton = new Button(Localization.lang("Import existing PDFs")); importPdfsButton.getStyleClass().add("text-button-blue"); importPdfsButton.setOnAction(event -> { - importPdfsButton(); + importPdfs(); }); Label noContentLabel = new Label(Localization.lang("No content in table")); @@ -601,14 +601,13 @@ private BibEntry addExampleEntry() { return exampleEntry; } - private void importPdfsButton() { + private void importPdfs() { List<Path> fileDirectories = database.getFileDirectories(filePreferences); if (fileDirectories.isEmpty()) { - dialogService.showWarningDialogAndWait( - Localization.lang("File directory is not set or does not exist."), - Localization.lang("Please configure a file directory")); - + dialogService.notify( + Localization.lang("File directory is not set or does not exist.") + ); LibraryPropertiesAction libraryPropertiesAction = new LibraryPropertiesAction(stateManager); libraryPropertiesAction.execute(); } else { From d5610ce7f9856b0e57d13c718dab0024857e5ca3 Mon Sep 17 00:00:00 2001 From: Sanjyot <41758207+sanjyot242@users.noreply.github.com> Date: Wed, 26 Mar 2025 23:43:40 -0700 Subject: [PATCH 13/15] -Refactored importPDFs to follow fail fast principles -Removed Unused Localization keys -Updated to lambda for better readability --- .../general/GeneralPropertiesView.java | 7 +------ src/main/java/org/jabref/gui/maintable/MainTable.java | 10 ++++------ src/main/resources/l10n/JabRef_en.properties | 1 - 3 files changed, 5 insertions(+), 13 deletions(-) diff --git a/src/main/java/org/jabref/gui/libraryproperties/general/GeneralPropertiesView.java b/src/main/java/org/jabref/gui/libraryproperties/general/GeneralPropertiesView.java index bf2af1186aa..006b3b4fcae 100644 --- a/src/main/java/org/jabref/gui/libraryproperties/general/GeneralPropertiesView.java +++ b/src/main/java/org/jabref/gui/libraryproperties/general/GeneralPropertiesView.java @@ -58,12 +58,7 @@ public void initialize() { userSpecificFileDirectory.textProperty().bindBidirectional(viewModel.userSpecificFileDirectoryProperty()); laTexFileDirectory.textProperty().bindBidirectional(viewModel.laTexFileDirectoryProperty()); - javafx.application.Platform.runLater(new Runnable() { - @Override - public void run() { - librarySpecificFileDirectory.requestFocus(); - } - }); + javafx.application.Platform.runLater(()-> librarySpecificFileDirectory.requestFocus()); } @FXML diff --git a/src/main/java/org/jabref/gui/maintable/MainTable.java b/src/main/java/org/jabref/gui/maintable/MainTable.java index 5b758dfc118..a060a7851c7 100644 --- a/src/main/java/org/jabref/gui/maintable/MainTable.java +++ b/src/main/java/org/jabref/gui/maintable/MainTable.java @@ -212,9 +212,7 @@ public MainTable(MainTableDataModel model, Button importPdfsButton = new Button(Localization.lang("Import existing PDFs")); importPdfsButton.getStyleClass().add("text-button-blue"); - importPdfsButton.setOnAction(event -> { - importPdfs(); - }); + importPdfsButton.setOnAction(event -> importPdfs()); Label noContentLabel = new Label(Localization.lang("No content in table")); @@ -607,13 +605,13 @@ private void importPdfs() { if (fileDirectories.isEmpty()) { dialogService.notify( Localization.lang("File directory is not set or does not exist.") - ); + ); LibraryPropertiesAction libraryPropertiesAction = new LibraryPropertiesAction(stateManager); libraryPropertiesAction.execute(); - } else { + return; + } FindUnlinkedFilesAction findUnlinkedFilesAction = new FindUnlinkedFilesAction(dialogService, stateManager); findUnlinkedFilesAction.execute(); - } } } diff --git a/src/main/resources/l10n/JabRef_en.properties b/src/main/resources/l10n/JabRef_en.properties index 97f902fca35..64eb14be253 100644 --- a/src/main/resources/l10n/JabRef_en.properties +++ b/src/main/resources/l10n/JabRef_en.properties @@ -2875,7 +2875,6 @@ Editor\ related=Editor related Title\ related=Title related Entry\ fields=Entry fields -Please\ configure\ a\ file\ directory=Please configure a file directory Add\ example\ entry=Add example entry No\ content\ in\ table=No content in table Import\ existing\ PDFs=Import existing PDFs From df3e33f73cbb30f9e146326471845f8e2fa13b1e Mon Sep 17 00:00:00 2001 From: Sanjyot <41758207+sanjyot242@users.noreply.github.com> Date: Wed, 26 Mar 2025 23:56:03 -0700 Subject: [PATCH 14/15] -rewriteRun changes --- .../gui/libraryproperties/general/GeneralPropertiesView.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/main/java/org/jabref/gui/libraryproperties/general/GeneralPropertiesView.java b/src/main/java/org/jabref/gui/libraryproperties/general/GeneralPropertiesView.java index 006b3b4fcae..8e74db1a915 100644 --- a/src/main/java/org/jabref/gui/libraryproperties/general/GeneralPropertiesView.java +++ b/src/main/java/org/jabref/gui/libraryproperties/general/GeneralPropertiesView.java @@ -2,6 +2,7 @@ import java.nio.charset.Charset; +import javafx.application.Platform; import javafx.fxml.FXML; import javafx.scene.control.ComboBox; import javafx.scene.control.TextField; @@ -58,7 +59,7 @@ public void initialize() { userSpecificFileDirectory.textProperty().bindBidirectional(viewModel.userSpecificFileDirectoryProperty()); laTexFileDirectory.textProperty().bindBidirectional(viewModel.laTexFileDirectoryProperty()); - javafx.application.Platform.runLater(()-> librarySpecificFileDirectory.requestFocus()); + Platform.runLater(()-> librarySpecificFileDirectory.requestFocus()); } @FXML From c17222d1f632fccc2e951bfbfae254c57ee8e875 Mon Sep 17 00:00:00 2001 From: Sanjyot <41758207+sanjyot242@users.noreply.github.com> Date: Fri, 28 Mar 2025 16:58:31 -0700 Subject: [PATCH 15/15] -Resolved Review Changes . -Label Style Changes --- .../org/jabref/gui/maintable/MainTable.java | 29 +++++++++---------- 1 file changed, 14 insertions(+), 15 deletions(-) diff --git a/src/main/java/org/jabref/gui/maintable/MainTable.java b/src/main/java/org/jabref/gui/maintable/MainTable.java index a060a7851c7..40a6ab25bf9 100644 --- a/src/main/java/org/jabref/gui/maintable/MainTable.java +++ b/src/main/java/org/jabref/gui/maintable/MainTable.java @@ -215,6 +215,7 @@ public MainTable(MainTableDataModel model, importPdfsButton.setOnAction(event -> importPdfs()); Label noContentLabel = new Label(Localization.lang("No content in table")); + noContentLabel.getStyleClass().add("welcome-header-label"); HBox buttonBox = new HBox(20, addExampleButton, importPdfsButton); buttonBox.setAlignment(Pos.CENTER); @@ -583,17 +584,16 @@ private void updatePlaceholder(VBox placeholderBox) { } private BibEntry addExampleEntry() { - BibEntry exampleEntry = new BibEntry(StandardEntryType.Article); - exampleEntry.withField(StandardField.AUTHOR, "Oliver Kopp and Carl Christian Snethlage and Christoph Schwentker"); - exampleEntry.withField(StandardField.TITLE, "JabRef: BibTeX-based literature management software"); - exampleEntry.withField(StandardField.JOURNAL, "TUGboat"); - exampleEntry.withField(StandardField.VOLUME, "44"); - exampleEntry.withField(StandardField.NUMBER, "3"); - exampleEntry.withField(StandardField.PAGES, "441--447"); - exampleEntry.withField(StandardField.DOI, "10.47397/tb/44-3/tb138kopp-jabref"); - exampleEntry.withField(StandardField.ISSN, "0896-3207"); - exampleEntry.withField(StandardField.ISSUE, "138"); - exampleEntry.withField(StandardField.YEAR, "2023"); + BibEntry exampleEntry = new BibEntry(StandardEntryType.Article) + .withField(StandardField.AUTHOR, "Oliver Kopp and Carl Christian Snethlage and Christoph Schwentker").withField(StandardField.TITLE, "JabRef: BibTeX-based literature management software") + .withField(StandardField.JOURNAL, "TUGboat") + .withField(StandardField.VOLUME, "44") + .withField(StandardField.NUMBER, "3") + .withField(StandardField.PAGES, "441--447") + .withField(StandardField.DOI, "10.47397/tb/44-3/tb138kopp-jabref") + .withField(StandardField.ISSN, "0896-3207") + .withField(StandardField.ISSUE, "138") + .withField(StandardField.YEAR, "2023"); database.getDatabase().insertEntry(exampleEntry); return exampleEntry; @@ -610,9 +610,8 @@ private void importPdfs() { libraryPropertiesAction.execute(); return; } - FindUnlinkedFilesAction findUnlinkedFilesAction = new FindUnlinkedFilesAction(dialogService, stateManager); - findUnlinkedFilesAction.execute(); + + FindUnlinkedFilesAction findUnlinkedFilesAction = new FindUnlinkedFilesAction(dialogService, stateManager); + findUnlinkedFilesAction.execute(); } } - -