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();
     }
 }
-
-