diff --git a/src/main/java/org/jabref/gui/JabRefFrame.java b/src/main/java/org/jabref/gui/JabRefFrame.java index ef9074973d9..73f838d6315 100644 --- a/src/main/java/org/jabref/gui/JabRefFrame.java +++ b/src/main/java/org/jabref/gui/JabRefFrame.java @@ -759,7 +759,7 @@ private MenuBar createMenu() { new SeparatorMenuItem(), - factory.createMenuItem(StandardActions.SET_FILE_LINKS, new AutoLinkFilesAction(this, prefs, stateManager, undoManager)) + factory.createMenuItem(StandardActions.SET_FILE_LINKS, new AutoLinkFilesAction(this, prefs, stateManager, undoManager, Globals.TASK_EXECUTOR)) ); // PushToApplication diff --git a/src/main/java/org/jabref/gui/externalfiles/AutoLinkFilesAction.java b/src/main/java/org/jabref/gui/externalfiles/AutoLinkFilesAction.java index 74a9d3aea77..a2c23ebf6a5 100644 --- a/src/main/java/org/jabref/gui/externalfiles/AutoLinkFilesAction.java +++ b/src/main/java/org/jabref/gui/externalfiles/AutoLinkFilesAction.java @@ -13,6 +13,7 @@ import org.jabref.gui.externalfiletype.ExternalFileTypes; import org.jabref.gui.undo.NamedCompound; import org.jabref.gui.util.BindingsHelper; +import org.jabref.gui.util.TaskExecutor; import org.jabref.logic.l10n.Localization; import org.jabref.model.database.BibDatabaseContext; import org.jabref.model.entry.BibEntry; @@ -31,12 +32,14 @@ public class AutoLinkFilesAction extends SimpleCommand { private final JabRefPreferences preferences; private final StateManager stateManager; private UndoManager undoManager; + private TaskExecutor taskExecutor; - public AutoLinkFilesAction(JabRefFrame frame, JabRefPreferences preferences, StateManager stateManager, UndoManager undoManager) { + public AutoLinkFilesAction(JabRefFrame frame, JabRefPreferences preferences, StateManager stateManager, UndoManager undoManager, TaskExecutor taskExecutor) { this.dialogService = frame.getDialogService(); this.preferences = preferences; this.stateManager = stateManager; this.undoManager = undoManager; + this.taskExecutor = taskExecutor; this.executable.bind(needsDatabase(this.stateManager).and(needsEntriesSelected(stateManager))); this.statusMessage.bind(BindingsHelper.ifThenElse(executable, "", Localization.lang("This operation requires one or more entries to be selected."))); @@ -51,6 +54,7 @@ public void execute() { final NamedCompound nc = new NamedCompound(Localization.lang("Automatically set file links")); AutoSetFileLinksUtil util = new AutoSetFileLinksUtil(database, preferences.getFilePreferences(), preferences.getAutoLinkPreferences(), ExternalFileTypes.getInstance()); Task> linkFilesTask = new Task>() { + @Override protected List call() { return util.linkAssociatedFiles(entries, nc); @@ -71,9 +75,9 @@ protected void succeeded() { }; dialogService.showProgressDialogAndWait( - Localization.lang("Automatically setting file links"), - Localization.lang("Searching for files"), - linkFilesTask - ); + Localization.lang("Automatically setting file links"), + Localization.lang("Searching for files"), + linkFilesTask); + taskExecutor.execute(linkFilesTask); } }