Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
70 commits
Select commit Hold shift + click to select a range
63d6af2
Added a watcher for directories (#10930)
ErwanGou Nov 3, 2025
14fecbe
Added a new group type that mirrors local directories (#10930)
ErwanGou Nov 3, 2025
368de2b
Allowed the creation of directory groups (#10930)
ErwanGou Nov 3, 2025
621b25f
Added the button to create directory groups (#10930)
ErwanGou Nov 3, 2025
07830f0
Directory groups are now editable and removable (#10930)
ErwanGou Nov 3, 2025
2545df1
Merge branch 'JabRef:main' into fix-issue-10930
Julien384760 Nov 3, 2025
21bb443
Correcting a bug : now directory groups can't have the name of an exi…
ErwanGou Nov 5, 2025
b3e713a
Modified the watcher structure to consider directory deletion (#10930)
ErwanGou Nov 5, 2025
8aea30f
Merge branch 'fix-issue-10930' of https://github.com/Julien384760/jab…
ErwanGou Nov 5, 2025
9453828
Merge branch 'JabRef:main' into fix-issue-10930
Julien384760 Nov 5, 2025
94f410d
Renamed an attribute for more clarity (#10930)
ErwanGou Nov 5, 2025
2a610d1
The root node of the mirrored structure can be dragged now (#10930)
ErwanGou Nov 5, 2025
eb30f50
Merge branch 'fix-issue-10930' of https://github.com/Julien384760/jab…
ErwanGou Nov 5, 2025
30d16c8
Fixed a bug : "Sort subgroups Z-A" is not always allowed
ErwanGou Nov 6, 2025
fc267c2
Cleanup the useless watchers after a directory deletion (#10930)
ErwanGou Nov 6, 2025
92dc780
Autofill the name only if it is empty after browsing for the structur…
ErwanGou Nov 6, 2025
b616ddf
Improved getNode() method (#10930)
ErwanGou Nov 6, 2025
5748690
Renamed an attribute for more clarity (#10930)
ErwanGou Nov 7, 2025
befa0b3
Now also remove the watcher if the user decide to remove a directory …
ErwanGou Nov 7, 2025
563718b
Fixed a bug : too many directory creation after Ctrl+V a whole direct…
ErwanGou Nov 7, 2025
b307d2d
Fixed a bug : the watcher was deleted before the group when a local d…
ErwanGou Nov 7, 2025
7114844
Deleted useless data display (#10930)
ErwanGou Nov 7, 2025
f72c586
Merge branch 'main' of https://github.com/Julien384760/jabref into fi…
ErwanGou Nov 7, 2025
6b72829
Resolved issues that appeared while merging branch (#10930)
ErwanGou Nov 7, 2025
3e8b521
Add the new feature in the CHANGELOG.md (#10930)
ErwanGou Nov 7, 2025
582ecd5
Rewrite a test properly (#10930)
ErwanGou Nov 7, 2025
6491f52
Fix test failure (#10930)
ErwanGou Nov 7, 2025
b351345
Pressing 'Enter' after selecting the root path now create the Directo…
ErwanGou Nov 11, 2025
a21f302
Merge branch 'JabRef:main' into 'fix-issue-10930'
ErwanGou Nov 11, 2025
df9cbda
Add PDF import during the creation of the group (#10930)
ErwanGou Nov 12, 2025
dc1a8c2
Add a new line in the CHANGELOG.md (#10930)
ErwanGou Nov 12, 2025
20450b5
Add a PDF import when a file is created within a local directory (#10…
ErwanGou Nov 12, 2025
13d1ff1
Fix a possible nullPointerException (#10930)
ErwanGou Nov 12, 2025
7c70161
The hierarchical context of a directory group should be 'Union' (#10930)
ErwanGou Nov 12, 2025
34c21d2
Merge branch 'main' into fix-issue-10930
ErwanGou Nov 12, 2025
17db791
Add some tests (#10930)
ErwanGou Nov 13, 2025
c3fc143
Merge branch 'fix-issue-10930' of https://github.com/Julien384760/jab…
ErwanGou Nov 13, 2025
27277f1
Merge branch 'main' into fix-issue-10930
ErwanGou Nov 13, 2025
69f6825
Modify the tests (#10930)
ErwanGou Nov 13, 2025
541724d
Merge branch 'fix-issue-10930' of https://github.com/Julien384760/jab…
ErwanGou Nov 13, 2025
eb3cf11
Merge branch 'main' into fix-issue-10930
ErwanGou Nov 13, 2025
d598f2f
Merge branch 'main' into fix-issue-10930
ErwanGou Nov 13, 2025
2045919
Merge branch 'main' into fix-issue-10930
ErwanGou Nov 13, 2025
55101bb
Rewrite the CHANGELOG.md (#10930)
ErwanGou Nov 13, 2025
8b7c241
Improve the JUnit tests (#10930)
ErwanGou Nov 13, 2025
f7aea89
Merge branch 'fix-issue-10930' of https://github.com/Julien384760/jab…
ErwanGou Nov 13, 2025
2cb5a53
Improve the JUnit tests (#10930)
ErwanGou Nov 13, 2025
b1def84
Merge branch 'main' into fix-issue-10930
ErwanGou Nov 13, 2025
4e45369
Delete useless call (#10930)
ErwanGou Nov 13, 2025
99706a4
Merge branch 'fix-issue-10930' of https://github.com/Julien384760/jab…
ErwanGou Nov 13, 2025
f59085d
Rewrite to fit camel-case (#10930)
ErwanGou Nov 13, 2025
16bd339
Rewrite to fit camel-case (#10930)
ErwanGou Nov 14, 2025
669c37c
Ensure that new pdfs are added to the right database (#10930)
ErwanGou Nov 14, 2025
329c308
Refine the CHANGELOG.md (#10930)
ErwanGou Nov 14, 2025
9fcbed9
Merge branch 'main' into fix-issue-10930
ErwanGou Nov 14, 2025
6efbcf0
Add pdf import and deletion in the watcher (#10930)
ErwanGou Nov 14, 2025
14fce1d
Merge branch 'fix-issue-10930' of https://github.com/Julien384760/jab…
ErwanGou Nov 14, 2025
0288275
Merge branch 'main' into fix-issue-10930
ErwanGou Nov 17, 2025
8bea781
Add DirectoryGroup serializer (#10930)
ErwanGou Nov 17, 2025
5d5ef06
Merge branch 'fix-issue-10930' of https://github.com/Julien384760/jab…
ErwanGou Nov 17, 2025
b0010b3
Merge branch 'main' into fix-issue-10930
ErwanGou Nov 19, 2025
48e6a77
Fix a bug : now displays the entries after PDF import when creating a…
ErwanGou Nov 20, 2025
1851d60
Merge branch 'main' into fix-issue-10930
ErwanGou Nov 21, 2025
8daa66f
Merge branch 'fix-issue-10930' of https://github.com/Julien384760/jab…
ErwanGou Nov 21, 2025
f858e08
Fix a bug : can save and open a library that contains DirectoryGroups…
ErwanGou Nov 21, 2025
83729bf
Improve import display when monitoring the mirrored local file struct…
ErwanGou Nov 22, 2025
48d05bb
Fix a bug : update the database stored in DirectoryGroups when openin…
ErwanGou Nov 22, 2025
4af7dac
Add some tests (#10930)
ErwanGou Nov 22, 2025
bcaffbf
Merge branch 'main' into fix-issue-10930
ErwanGou Nov 22, 2025
976925c
Merge branch 'fix-issue-10930' of https://github.com/Julien384760/jab…
ErwanGou Nov 22, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@ Note that this project **does not** adhere to [Semantic Versioning](https://semv
- We added the possibility to configure the email provided to unpaywall. [#14340](https://github.com/JabRef/jabref/pull/14340)
- We added a "Regenerate" button for the AI chat allowing the user to make the language model reformulate its response to the previous prompt. [#12191](https://github.com/JabRef/jabref/issues/12191)
- We added support for transliteration of fields to English and automatic transliteration of generated citation key. [#11377](https://github.com/JabRef/jabref/issues/11377)
- We added groups that mirror the local file directory structure. [#10930](https://github.com/JabRef/jabref/issues/10930)

### Changed

Expand Down
4 changes: 3 additions & 1 deletion jabgui/src/main/java/org/jabref/cli/CliImportHelper.java
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@
import org.jabref.logic.net.URLDownload;
import org.jabref.logic.os.OS;
import org.jabref.logic.preferences.CliPreferences;
import org.jabref.model.util.DummyDirectoryUpdateMonitor;
import org.jabref.model.util.DummyFileUpdateMonitor;

import org.slf4j.Logger;
Expand Down Expand Up @@ -71,7 +72,8 @@ public static Optional<ParserResult> importFile(Path file,
cliPreferences.getImporterPreferences(),
cliPreferences.getImportFormatPreferences(),
cliPreferences.getCitationKeyPatternPreferences(),
new DummyFileUpdateMonitor()
new DummyFileUpdateMonitor(),
new DummyDirectoryUpdateMonitor()
);

if (!porcelain) {
Expand Down
22 changes: 22 additions & 0 deletions jabgui/src/main/java/org/jabref/gui/JabRefGUI.java
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@
import org.jabref.gui.remote.CLIMessageHandler;
import org.jabref.gui.theme.ThemeManager;
import org.jabref.gui.undo.CountingUndoManager;
import org.jabref.gui.util.DefaultDirectoryUpdateMonitor;
import org.jabref.gui.util.DefaultFileUpdateMonitor;
import org.jabref.gui.util.DirectoryMonitor;
import org.jabref.gui.util.UiTaskExecutor;
Expand All @@ -54,6 +55,7 @@
import org.jabref.logic.util.TaskExecutor;
import org.jabref.logic.util.strings.StringUtil;
import org.jabref.model.entry.BibEntryTypesManager;
import org.jabref.model.util.DirectoryUpdateMonitor;
import org.jabref.model.util.FileUpdateMonitor;

import com.airhacks.afterburner.injection.Injector;
Expand All @@ -78,6 +80,7 @@ public class JabRefGUI extends Application {
private static SearchCitationsRelationsService citationsAndRelationsSearchService;

private static FileUpdateMonitor fileUpdateMonitor;
private static DirectoryUpdateMonitor directoryUpdateMonitor;
private static StateManager stateManager;
private static ThemeManager themeManager;
private static CountingUndoManager countingUndoManager;
Expand Down Expand Up @@ -111,6 +114,7 @@ public void start(Stage stage) {
mainStage,
dialogService,
fileUpdateMonitor,
directoryUpdateMonitor,
preferences,
aiService,
stateManager,
Expand All @@ -131,6 +135,13 @@ public void start(Stage stage) {
"with this session."));
}

if (!directoryUpdateMonitor.isActive()) {
dialogService.showErrorDialogAndWait(
Localization.lang("Unable to monitor directory changes. Please close directories " +
"and processes and restart. You may encounter errors if you continue " +
"with this session."));
}

BuildInfo buildInfo = Injector.instantiateModelOrService(BuildInfo.class);
EasyBind.subscribe(preferences.getInternalPreferences().versionCheckEnabledProperty(), enabled -> {
if (enabled) {
Expand Down Expand Up @@ -207,6 +218,11 @@ public void initialize() {
JabRefGUI.dialogService = new JabRefDialogService(mainStage);
Injector.setModelOrService(DialogService.class, dialogService);

DefaultDirectoryUpdateMonitor directoryUpdateMonitor = new DefaultDirectoryUpdateMonitor(preferences, fileUpdateMonitor, countingUndoManager, stateManager, dialogService, taskExecutor);
JabRefGUI.directoryUpdateMonitor = directoryUpdateMonitor;
HeadlessExecutorService.INSTANCE.executeInterruptableTask(directoryUpdateMonitor, "DirectoryUpdateMonitor");
Injector.setModelOrService(DirectoryUpdateMonitor.class, directoryUpdateMonitor);

JabRefGUI.clipBoardManager = new ClipBoardManager();
Injector.setModelOrService(ClipBoardManager.class, clipBoardManager);

Expand Down Expand Up @@ -512,6 +528,12 @@ public void stop() {
LOGGER.trace("FileUpdateMonitor shut down");
});

executor.submit(() -> {
LOGGER.trace("Shutting down directoryUpdateMonitor");
directoryUpdateMonitor.shutdown();
LOGGER.trace("DirectoryUpdateMonitor shut down");
});

executor.submit(() -> {
LOGGER.trace("Shutting down directoryMonitor");
DirectoryMonitor directoryMonitor = Injector.instantiateModelOrService(DirectoryMonitor.class);
Expand Down
24 changes: 23 additions & 1 deletion jabgui/src/main/java/org/jabref/gui/LibraryTab.java
Original file line number Diff line number Diff line change
Expand Up @@ -89,8 +89,10 @@
import org.jabref.model.entry.event.EntriesEventSource;
import org.jabref.model.entry.event.FieldChangedEvent;
import org.jabref.model.entry.field.FieldFactory;
import org.jabref.model.groups.DirectoryGroup;
import org.jabref.model.groups.GroupTreeNode;
import org.jabref.model.search.query.SearchQuery;
import org.jabref.model.util.DirectoryUpdateMonitor;
import org.jabref.model.util.FileUpdateMonitor;

import com.airhacks.afterburner.injection.Injector;
Expand All @@ -113,6 +115,7 @@ public class LibraryTab extends Tab implements CommandSelectionTab {
private final DialogService dialogService;
private final GuiPreferences preferences;
private final FileUpdateMonitor fileUpdateMonitor;
private final DirectoryUpdateMonitor directoryUpdateMonitor;
private final StateManager stateManager;
private final BibEntryTypesManager entryTypesManager;
private final BooleanProperty changedProperty = new SimpleBooleanProperty(false);
Expand Down Expand Up @@ -179,6 +182,7 @@ private LibraryTab(@NonNull BibDatabaseContext bibDatabaseContext,
@NonNull GuiPreferences preferences,
@NonNull StateManager stateManager,
FileUpdateMonitor fileUpdateMonitor,
DirectoryUpdateMonitor directoryUpdateMonitor,
BibEntryTypesManager entryTypesManager,
CountingUndoManager undoManager,
ClipBoardManager clipBoardManager,
Expand All @@ -192,6 +196,7 @@ private LibraryTab(@NonNull BibDatabaseContext bibDatabaseContext,
this.stateManager = stateManager;
assert bibDatabaseContext.getDatabasePath().isEmpty() || fileUpdateMonitor != null;
this.fileUpdateMonitor = fileUpdateMonitor;
this.directoryUpdateMonitor = directoryUpdateMonitor;
this.entryTypesManager = entryTypesManager;
this.clipBoardManager = clipBoardManager;
this.taskExecutor = taskExecutor;
Expand Down Expand Up @@ -231,6 +236,7 @@ private void initializeComponentsAndListeners(boolean isDummyContext) {
bibDatabaseContext,
preferences,
fileUpdateMonitor,
directoryUpdateMonitor,
undoManager,
stateManager,
dialogService,
Expand Down Expand Up @@ -311,7 +317,19 @@ private void onDatabaseLoadingSucceed(ParserResult result) {
this.markBaseChanged();
}

setDatabaseContext(result.getDatabaseContext());
BibDatabaseContext newDatabase = result.getDatabaseContext();
setDatabaseContext(newDatabase);

// Update the database stored in Directory Groups
newDatabase.getMetaData().getGroups().ifPresent(groupTree -> {
groupTree.findChildrenSatisfying(groupTreeNode -> groupTreeNode.getGroup() instanceof DirectoryGroup)
.forEach(groupTreeNode -> {
if (groupTreeNode.getGroup() instanceof DirectoryGroup directoryGroup) {
directoryGroup.setBibDatabaseContext(newDatabase);
}
});
});

// Notify listeners that the auto-completer may have changed
if (autoCompleterChangedListener != null) {
autoCompleterChangedListener.run();
Expand Down Expand Up @@ -1033,6 +1051,7 @@ public static LibraryTab createLibraryTab(BackgroundTask<ParserResult> dataLoadi
StateManager stateManager,
LibraryTabContainer tabContainer,
FileUpdateMonitor fileUpdateMonitor,
DirectoryUpdateMonitor directoryUpdateMonitor,
BibEntryTypesManager entryTypesManager,
CountingUndoManager undoManager,
ClipBoardManager clipBoardManager,
Expand All @@ -1048,6 +1067,7 @@ public static LibraryTab createLibraryTab(BackgroundTask<ParserResult> dataLoadi
preferences,
stateManager,
fileUpdateMonitor,
directoryUpdateMonitor,
entryTypesManager,
undoManager,
clipBoardManager,
Expand All @@ -1070,6 +1090,7 @@ public static LibraryTab createLibraryTab(@NonNull BibDatabaseContext databaseCo
GuiPreferences preferences,
StateManager stateManager,
FileUpdateMonitor fileUpdateMonitor,
DirectoryUpdateMonitor directoryUpdateMonitor,
BibEntryTypesManager entryTypesManager,
UndoManager undoManager,
ClipBoardManager clipBoardManager,
Expand All @@ -1082,6 +1103,7 @@ public static LibraryTab createLibraryTab(@NonNull BibDatabaseContext databaseCo
preferences,
stateManager,
fileUpdateMonitor,
directoryUpdateMonitor,
entryTypesManager,
(CountingUndoManager) undoManager,
clipBoardManager,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@
import org.jabref.logic.importer.OpenDatabase;
import org.jabref.logic.importer.ParserResult;
import org.jabref.model.database.BibDatabaseContext;
import org.jabref.model.util.DummyDirectoryUpdateMonitor;
import org.jabref.model.util.DummyFileUpdateMonitor;

import org.slf4j.Logger;
Expand Down Expand Up @@ -39,7 +40,7 @@ public List<DatabaseChange> scanForChanges() {
// Parse the modified file
// Important: apply all post-load actions
ImportFormatPreferences importFormatPreferences = preferences.getImportFormatPreferences();
ParserResult result = OpenDatabase.loadDatabase(database.getDatabasePath().get(), importFormatPreferences, new DummyFileUpdateMonitor());
ParserResult result = OpenDatabase.loadDatabase(database.getDatabasePath().get(), importFormatPreferences, new DummyFileUpdateMonitor(), new DummyDirectoryUpdateMonitor());
BibDatabaseContext databaseOnDisk = result.getDatabaseContext();

return DatabaseChangeList.compareAndGetChanges(database, databaseOnDisk, databaseChangeResolverFactory);
Expand Down
12 changes: 8 additions & 4 deletions jabgui/src/main/java/org/jabref/gui/dialogs/BackupUIManager.java
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,8 @@
import org.jabref.logic.util.BackupFileType;
import org.jabref.logic.util.io.BackupFileUtil;
import org.jabref.model.database.BibDatabaseContext;
import org.jabref.model.util.DirectoryUpdateMonitor;
import org.jabref.model.util.DummyDirectoryUpdateMonitor;
import org.jabref.model.util.DummyFileUpdateMonitor;
import org.jabref.model.util.FileUpdateMonitor;

Expand All @@ -48,6 +50,7 @@ public static Optional<ParserResult> showRestoreBackupDialog(DialogService dialo
Path originalPath,
GuiPreferences preferences,
FileUpdateMonitor fileUpdateMonitor,
DirectoryUpdateMonitor directoryUpdateMonitor,
UndoManager undoManager,
StateManager stateManager) {
Optional<ButtonType> actionOpt = showBackupResolverDialog(
Expand All @@ -60,7 +63,7 @@ public static Optional<ParserResult> showRestoreBackupDialog(DialogService dialo
BackupManager.restoreBackup(originalPath, preferences.getFilePreferences().getBackupDirectory());
return Optional.empty();
} else if (action == BackupResolverDialog.REVIEW_BACKUP) {
return showReviewBackupDialog(dialogService, originalPath, preferences, fileUpdateMonitor, undoManager, stateManager);
return showReviewBackupDialog(dialogService, originalPath, preferences, fileUpdateMonitor, directoryUpdateMonitor, undoManager, stateManager);
}
return Optional.empty();
});
Expand All @@ -79,18 +82,19 @@ private static Optional<ParserResult> showReviewBackupDialog(
Path originalPath,
GuiPreferences preferences,
FileUpdateMonitor fileUpdateMonitor,
DirectoryUpdateMonitor directoryUpdateMonitor,
UndoManager undoManager,
StateManager stateManager) {
try {
ImportFormatPreferences importFormatPreferences = preferences.getImportFormatPreferences();

// The database of the originalParserResult will be modified
ParserResult originalParserResult = OpenDatabase.loadDatabase(originalPath, importFormatPreferences, fileUpdateMonitor);
ParserResult originalParserResult = OpenDatabase.loadDatabase(originalPath, importFormatPreferences, fileUpdateMonitor, directoryUpdateMonitor);
// This will be modified by using the `DatabaseChangesResolverDialog`.
BibDatabaseContext originalDatabase = originalParserResult.getDatabaseContext();

Path backupPath = BackupFileUtil.getPathOfLatestExistingBackupFile(originalPath, BackupFileType.BACKUP, preferences.getFilePreferences().getBackupDirectory()).orElseThrow();
BibDatabaseContext backupDatabase = OpenDatabase.loadDatabase(backupPath, importFormatPreferences, new DummyFileUpdateMonitor()).getDatabaseContext();
BibDatabaseContext backupDatabase = OpenDatabase.loadDatabase(backupPath, importFormatPreferences, new DummyFileUpdateMonitor(), new DummyDirectoryUpdateMonitor()).getDatabaseContext();

DatabaseChangeResolverFactory changeResolverFactory = new DatabaseChangeResolverFactory(dialogService, originalDatabase, preferences);

Expand Down Expand Up @@ -119,7 +123,7 @@ private static Optional<ParserResult> showReviewBackupDialog(
}

// In case not all changes are resolved, start from scratch
return showRestoreBackupDialog(dialogService, originalPath, preferences, fileUpdateMonitor, undoManager, stateManager);
return showRestoreBackupDialog(dialogService, originalPath, preferences, fileUpdateMonitor, directoryUpdateMonitor, undoManager, stateManager);
});
} catch (IOException e) {
LOGGER.error("Error while loading backup or current database", e);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -69,6 +69,7 @@
import org.jabref.model.entry.BibEntryTypesManager;
import org.jabref.model.entry.EntryConverter;
import org.jabref.model.entry.field.Field;
import org.jabref.model.util.DirectoryUpdateMonitor;
import org.jabref.model.util.FileUpdateMonitor;

import com.airhacks.afterburner.views.ViewLoader;
Expand Down Expand Up @@ -114,6 +115,7 @@ public class EntryEditor extends BorderPane implements PreviewControls, AdaptVis
@Inject private StateManager stateManager;
@Inject private ThemeManager themeManager;
@Inject private FileUpdateMonitor fileMonitor;
@Inject private DirectoryUpdateMonitor directoryUpdateMonitor;
@Inject private DirectoryMonitor directoryMonitor;
@Inject private CountingUndoManager undoManager;
@Inject private BibEntryTypesManager bibEntryTypesManager;
Expand Down Expand Up @@ -342,6 +344,7 @@ private List<EntryEditorTab> createTabs() {
undoManager,
stateManager,
fileMonitor,
directoryUpdateMonitor,
preferences,
taskExecutor,
bibEntryTypesManager,
Expand All @@ -353,6 +356,7 @@ private List<EntryEditorTab> createTabs() {
preferences.getFieldPreferences(),
preferences.getImportFormatPreferences(),
fileMonitor,
directoryUpdateMonitor,
dialogService,
bibEntryTypesManager,
keyBindingRepository,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -51,6 +51,7 @@
import org.jabref.model.entry.BibEntryTypesManager;
import org.jabref.model.entry.field.Field;
import org.jabref.model.search.query.SearchQuery;
import org.jabref.model.util.DirectoryUpdateMonitor;
import org.jabref.model.util.FileUpdateMonitor;
import org.jabref.model.util.Range;

Expand All @@ -74,6 +75,7 @@ public class SourceTab extends EntryEditorTab {
private final ObservableRuleBasedValidator sourceValidator = new ObservableRuleBasedValidator();
private final ImportFormatPreferences importFormatPreferences;
private final FileUpdateMonitor fileMonitor;
private final DirectoryUpdateMonitor directoryUpdateMonitor;
private final DialogService dialogService;
private final BibEntryTypesManager entryTypesManager;
private final KeyBindingRepository keyBindingRepository;
Expand All @@ -86,6 +88,7 @@ public SourceTab(CountingUndoManager undoManager,
FieldPreferences fieldPreferences,
ImportFormatPreferences importFormatPreferences,
FileUpdateMonitor fileMonitor,
DirectoryUpdateMonitor directoryUpdateMonitor,
DialogService dialogService,
BibEntryTypesManager entryTypesManager,
KeyBindingRepository keyBindingRepository,
Expand All @@ -96,6 +99,7 @@ public SourceTab(CountingUndoManager undoManager,
this.fieldPreferences = fieldPreferences;
this.importFormatPreferences = importFormatPreferences;
this.fileMonitor = fileMonitor;
this.directoryUpdateMonitor = directoryUpdateMonitor;
this.dialogService = dialogService;
this.entryTypesManager = entryTypesManager;
this.keyBindingRepository = keyBindingRepository;
Expand Down Expand Up @@ -287,7 +291,7 @@ private void storeSource(BibEntry outOfFocusEntry, String text) {
return;
}

BibtexParser bibtexParser = new BibtexParser(importFormatPreferences, fileMonitor);
BibtexParser bibtexParser = new BibtexParser(importFormatPreferences, fileMonitor, directoryUpdateMonitor);
try {
ParserResult parserResult = bibtexParser.parse(Reader.of(text));
BibDatabase database = parserResult.getDatabase();
Expand Down
Loading