diff --git a/src/main/java/org/jabref/Launcher.java b/src/main/java/org/jabref/Launcher.java index 6f8fd7ec121..99c13cfc4f5 100644 --- a/src/main/java/org/jabref/Launcher.java +++ b/src/main/java/org/jabref/Launcher.java @@ -16,6 +16,7 @@ import org.jabref.gui.Globals; import org.jabref.gui.JabRefGUI; import org.jabref.logic.UiCommand; +import org.jabref.logic.ai.AiService; import org.jabref.logic.journals.JournalAbbreviationLoader; import org.jabref.logic.net.ProxyAuthenticator; import org.jabref.logic.net.ProxyPreferences; @@ -70,6 +71,9 @@ public static void main(String[] args) { // Initialize preferences final JabRefPreferences preferences = JabRefPreferences.getInstance(); + // Initialize AI service. + final AiService aiService = new AiService(preferences.getAiPreferences()); + // Early exit in case another instance is already running if (!handleMultipleAppInstances(args, preferences.getRemotePreferences())) { return; @@ -103,7 +107,7 @@ public static void main(String[] args) { } List uiCommands = new ArrayList<>(argumentProcessor.getUiCommands()); - JabRefGUI.setup(uiCommands, preferences, fileUpdateMonitor); + JabRefGUI.setup(uiCommands, preferences, aiService, fileUpdateMonitor); JabRefGUI.launch(JabRefGUI.class, args); } catch (ParseException e) { LOGGER.error("Problem parsing arguments", e); diff --git a/src/main/java/org/jabref/gui/DefaultInjector.java b/src/main/java/org/jabref/gui/DefaultInjector.java index 9adfa1fcde5..c9ba14ee516 100644 --- a/src/main/java/org/jabref/gui/DefaultInjector.java +++ b/src/main/java/org/jabref/gui/DefaultInjector.java @@ -7,6 +7,7 @@ import org.jabref.gui.keyboard.KeyBindingRepository; import org.jabref.gui.theme.ThemeManager; import org.jabref.gui.util.TaskExecutor; +import org.jabref.logic.ai.AiService; import org.jabref.logic.journals.JournalAbbreviationRepository; import org.jabref.logic.protectedterms.ProtectedTermsLoader; import org.jabref.model.entry.BibEntryTypesManager; @@ -52,6 +53,8 @@ private static Object createDependency(Class clazz) { return Globals.undoManager; } else if (clazz == BibEntryTypesManager.class) { return Globals.entryTypesManager; + } else if (clazz == AiService.class) { + return JabRefGUI.getAiService(); } else { try { return clazz.newInstance(); diff --git a/src/main/java/org/jabref/gui/JabRefGUI.java b/src/main/java/org/jabref/gui/JabRefGUI.java index a2805111e0e..00f1c9295c5 100644 --- a/src/main/java/org/jabref/gui/JabRefGUI.java +++ b/src/main/java/org/jabref/gui/JabRefGUI.java @@ -19,6 +19,7 @@ import org.jabref.gui.telemetry.Telemetry; import org.jabref.gui.theme.ThemeManager; import org.jabref.logic.UiCommand; +import org.jabref.logic.ai.AiService; import org.jabref.logic.l10n.Localization; import org.jabref.logic.net.ProxyRegisterer; import org.jabref.logic.util.WebViewStore; @@ -40,6 +41,7 @@ public class JabRefGUI extends Application { private static List uiCommands; private static JabRefPreferences preferencesService; + private static AiService aiService; private static FileUpdateMonitor fileUpdateMonitor; private static JabRefFrame mainFrame; private static DialogService dialogService; @@ -50,9 +52,11 @@ public class JabRefGUI extends Application { public static void setup(List uiCommands, JabRefPreferences preferencesService, + AiService aiService, FileUpdateMonitor fileUpdateMonitor) { JabRefGUI.uiCommands = uiCommands; JabRefGUI.preferencesService = preferencesService; + JabRefGUI.aiService = aiService; JabRefGUI.fileUpdateMonitor = fileUpdateMonitor; } @@ -75,6 +79,7 @@ public void start(Stage stage) { dialogService, fileUpdateMonitor, preferencesService, + aiService, Globals.stateManager, Globals.undoManager, Globals.entryTypesManager, @@ -257,4 +262,8 @@ public static DialogService getDialogService() { public static ThemeManager getThemeManager() { return themeManager; } + + public static AiService getAiService() { + return aiService; + } } diff --git a/src/main/java/org/jabref/gui/LibraryTab.java b/src/main/java/org/jabref/gui/LibraryTab.java index ff2c9e4ba20..89a8c218e60 100644 --- a/src/main/java/org/jabref/gui/LibraryTab.java +++ b/src/main/java/org/jabref/gui/LibraryTab.java @@ -57,6 +57,7 @@ import org.jabref.gui.util.BackgroundTask; import org.jabref.gui.util.DefaultTaskExecutor; import org.jabref.gui.util.TaskExecutor; +import org.jabref.logic.ai.AiService; import org.jabref.logic.citationstyle.CitationStyleCache; import org.jabref.logic.importer.ParserResult; import org.jabref.logic.importer.util.FileFieldParser; @@ -110,6 +111,7 @@ private enum PanelMode { MAIN_TABLE, MAIN_TABLE_AND_ENTRY_EDITOR } private final CountingUndoManager undoManager; private final DialogService dialogService; private final PreferencesService preferencesService; + private final AiService aiService; private final FileUpdateMonitor fileUpdateMonitor; private final StateManager stateManager; private final BibEntryTypesManager entryTypesManager; @@ -158,6 +160,7 @@ private LibraryTab(BibDatabaseContext bibDatabaseContext, LibraryTabContainer tabContainer, DialogService dialogService, PreferencesService preferencesService, + AiService aiService, StateManager stateManager, FileUpdateMonitor fileUpdateMonitor, BibEntryTypesManager entryTypesManager, @@ -168,6 +171,7 @@ private LibraryTab(BibDatabaseContext bibDatabaseContext, this.undoManager = undoManager; this.dialogService = dialogService; this.preferencesService = Objects.requireNonNull(preferencesService); + this.aiService = Objects.requireNonNull(aiService); this.stateManager = Objects.requireNonNull(stateManager); this.fileUpdateMonitor = fileUpdateMonitor; this.entryTypesManager = entryTypesManager; @@ -972,6 +976,7 @@ public static LibraryTab createLibraryTab(BackgroundTask dataLoadi Path file, DialogService dialogService, PreferencesService preferencesService, + AiService aiService, StateManager stateManager, LibraryTabContainer tabContainer, FileUpdateMonitor fileUpdateMonitor, @@ -986,6 +991,7 @@ public static LibraryTab createLibraryTab(BackgroundTask dataLoadi tabContainer, dialogService, preferencesService, + aiService, stateManager, fileUpdateMonitor, entryTypesManager, @@ -1005,6 +1011,7 @@ public static LibraryTab createLibraryTab(BibDatabaseContext databaseContext, LibraryTabContainer tabContainer, DialogService dialogService, PreferencesService preferencesService, + AiService aiService, StateManager stateManager, FileUpdateMonitor fileUpdateMonitor, BibEntryTypesManager entryTypesManager, @@ -1017,6 +1024,7 @@ public static LibraryTab createLibraryTab(BibDatabaseContext databaseContext, tabContainer, dialogService, preferencesService, + aiService, stateManager, fileUpdateMonitor, entryTypesManager, diff --git a/src/main/java/org/jabref/gui/entryeditor/EntryEditor.java b/src/main/java/org/jabref/gui/entryeditor/EntryEditor.java index 9a0c728834c..2f0fde50ee9 100644 --- a/src/main/java/org/jabref/gui/entryeditor/EntryEditor.java +++ b/src/main/java/org/jabref/gui/entryeditor/EntryEditor.java @@ -117,6 +117,7 @@ public class EntryEditor extends BorderPane { @Inject private DialogService dialogService; @Inject private TaskExecutor taskExecutor; @Inject private PreferencesService preferencesService; + @Inject private AiService aiService; @Inject private StateManager stateManager; @Inject private ThemeManager themeManager; @Inject private FileUpdateMonitor fileMonitor; diff --git a/src/main/java/org/jabref/gui/frame/JabRefFrame.java b/src/main/java/org/jabref/gui/frame/JabRefFrame.java index e154ae6f7e6..9189c7b388f 100644 --- a/src/main/java/org/jabref/gui/frame/JabRefFrame.java +++ b/src/main/java/org/jabref/gui/frame/JabRefFrame.java @@ -47,6 +47,7 @@ import org.jabref.gui.undo.CountingUndoManager; import org.jabref.gui.util.TaskExecutor; import org.jabref.logic.UiCommand; +import org.jabref.logic.ai.AiService; import org.jabref.logic.undo.AddUndoableActionEvent; import org.jabref.logic.undo.UndoChangeEvent; import org.jabref.logic.undo.UndoRedoEvent; @@ -77,6 +78,7 @@ public class JabRefFrame extends BorderPane implements LibraryTabContainer { private final SplitPane splitPane = new SplitPane(); private final PreferencesService prefs; + private final AiService aiService; private final GlobalSearchBar globalSearchBar; private final FileHistoryMenu fileHistory; @@ -103,6 +105,7 @@ public JabRefFrame(Stage mainStage, DialogService dialogService, FileUpdateMonitor fileUpdateMonitor, PreferencesService preferencesService, + AiService aiService, StateManager stateManager, CountingUndoManager undoManager, BibEntryTypesManager entryTypesManager, @@ -111,6 +114,7 @@ public JabRefFrame(Stage mainStage, this.dialogService = dialogService; this.fileUpdateMonitor = fileUpdateMonitor; this.prefs = preferencesService; + this.aiService = aiService; this.stateManager = stateManager; this.undoManager = undoManager; this.entryTypesManager = entryTypesManager; @@ -121,6 +125,7 @@ public JabRefFrame(Stage mainStage, // Create components this.viewModel = new JabRefFrameViewModel( preferencesService, + aiService, stateManager, dialogService, this, @@ -146,6 +151,7 @@ public JabRefFrame(Stage mainStage, this.sidePane = new SidePane( this, prefs, + aiService, Globals.journalAbbreviationRepository, taskExecutor, dialogService, @@ -186,6 +192,7 @@ private void initLayout() { dialogService, stateManager, prefs, + aiService, fileUpdateMonitor, taskExecutor, entryTypesManager, @@ -427,6 +434,7 @@ public void addTab(@NonNull BibDatabaseContext databaseContext, boolean raisePan this, dialogService, prefs, + aiService, stateManager, fileUpdateMonitor, entryTypesManager, @@ -502,6 +510,7 @@ private OpenDatabaseAction getOpenDatabaseAction() { return new OpenDatabaseAction( this, prefs, + aiService, dialogService, stateManager, fileUpdateMonitor, diff --git a/src/main/java/org/jabref/gui/frame/JabRefFrameViewModel.java b/src/main/java/org/jabref/gui/frame/JabRefFrameViewModel.java index 94d52b6617b..7acd566f676 100644 --- a/src/main/java/org/jabref/gui/frame/JabRefFrameViewModel.java +++ b/src/main/java/org/jabref/gui/frame/JabRefFrameViewModel.java @@ -26,6 +26,7 @@ import org.jabref.gui.util.BackgroundTask; import org.jabref.gui.util.TaskExecutor; import org.jabref.logic.UiCommand; +import org.jabref.logic.ai.AiService; import org.jabref.logic.importer.ImportCleanup; import org.jabref.logic.importer.ParserResult; import org.jabref.logic.l10n.Localization; @@ -45,6 +46,7 @@ public class JabRefFrameViewModel { private static final Logger LOGGER = LoggerFactory.getLogger(JabRefFrameViewModel.class); private final PreferencesService prefs; + private final AiService aiService; private final StateManager stateManager; private final DialogService dialogService; private final LibraryTabContainer tabContainer; @@ -54,6 +56,7 @@ public class JabRefFrameViewModel { private final TaskExecutor taskExecutor; public JabRefFrameViewModel(PreferencesService preferencesService, + AiService aiService, StateManager stateManager, DialogService dialogService, LibraryTabContainer tabContainer, @@ -62,6 +65,7 @@ public JabRefFrameViewModel(PreferencesService preferencesService, UndoManager undoManager, TaskExecutor taskExecutor) { this.prefs = preferencesService; + this.aiService = aiService; this.stateManager = stateManager; this.dialogService = dialogService; this.tabContainer = tabContainer; @@ -196,6 +200,7 @@ private void openDatabases(List parserResults) { tabContainer, dialogService, prefs, + aiService, stateManager, entryTypesManager, fileUpdateMonitor, diff --git a/src/main/java/org/jabref/gui/frame/MainToolBar.java b/src/main/java/org/jabref/gui/frame/MainToolBar.java index fabdf849137..9513992486d 100644 --- a/src/main/java/org/jabref/gui/frame/MainToolBar.java +++ b/src/main/java/org/jabref/gui/frame/MainToolBar.java @@ -37,6 +37,7 @@ import org.jabref.gui.undo.UndoRedoAction; import org.jabref.gui.util.BackgroundTask; import org.jabref.gui.util.TaskExecutor; +import org.jabref.logic.ai.AiService; import org.jabref.logic.l10n.Localization; import org.jabref.model.entry.BibEntryTypesManager; import org.jabref.model.entry.types.StandardEntryType; @@ -54,6 +55,7 @@ public class MainToolBar extends ToolBar { private final DialogService dialogService; private final StateManager stateManager; private final PreferencesService preferencesService; + private final AiService aiService; private final FileUpdateMonitor fileUpdateMonitor; private final TaskExecutor taskExecutor; private final BibEntryTypesManager entryTypesManager; @@ -68,6 +70,7 @@ public MainToolBar(LibraryTabContainer tabContainer, DialogService dialogService, StateManager stateManager, PreferencesService preferencesService, + AiService aiService, FileUpdateMonitor fileUpdateMonitor, TaskExecutor taskExecutor, BibEntryTypesManager entryTypesManager, @@ -78,6 +81,7 @@ public MainToolBar(LibraryTabContainer tabContainer, this.dialogService = dialogService; this.stateManager = stateManager; this.preferencesService = preferencesService; + this.aiService = aiService; this.fileUpdateMonitor = fileUpdateMonitor; this.taskExecutor = taskExecutor; this.entryTypesManager = entryTypesManager; @@ -100,7 +104,7 @@ private void createToolBar() { getItems().addAll( new HBox( factory.createIconButton(StandardActions.NEW_LIBRARY, new NewDatabaseAction(frame, preferencesService)), - factory.createIconButton(StandardActions.OPEN_LIBRARY, new OpenDatabaseAction(frame, preferencesService, dialogService, stateManager, fileUpdateMonitor, entryTypesManager, undoManager, taskExecutor)), + factory.createIconButton(StandardActions.OPEN_LIBRARY, new OpenDatabaseAction(frame, preferencesService, aiService, dialogService, stateManager, fileUpdateMonitor, entryTypesManager, undoManager, taskExecutor)), factory.createIconButton(StandardActions.SAVE_LIBRARY, new SaveAction(SaveAction.SaveMethod.SAVE, frame::getCurrentLibraryTab, dialogService, preferencesService, stateManager))), leftSpacer, diff --git a/src/main/java/org/jabref/gui/importer/actions/OpenDatabaseAction.java b/src/main/java/org/jabref/gui/importer/actions/OpenDatabaseAction.java index 2cd9c46c35c..04d561d4663 100644 --- a/src/main/java/org/jabref/gui/importer/actions/OpenDatabaseAction.java +++ b/src/main/java/org/jabref/gui/importer/actions/OpenDatabaseAction.java @@ -27,6 +27,7 @@ import org.jabref.gui.util.DefaultTaskExecutor; import org.jabref.gui.util.FileDialogConfiguration; import org.jabref.gui.util.TaskExecutor; +import org.jabref.logic.ai.AiService; import org.jabref.logic.importer.OpenDatabase; import org.jabref.logic.importer.ParserResult; import org.jabref.logic.l10n.Localization; @@ -59,6 +60,7 @@ public class OpenDatabaseAction extends SimpleCommand { private final LibraryTabContainer tabContainer; private final PreferencesService preferencesService; + private final AiService aiService; private final StateManager stateManager; private final FileUpdateMonitor fileUpdateMonitor; private final DialogService dialogService; @@ -68,6 +70,7 @@ public class OpenDatabaseAction extends SimpleCommand { public OpenDatabaseAction(LibraryTabContainer tabContainer, PreferencesService preferencesService, + AiService aiService, DialogService dialogService, StateManager stateManager, FileUpdateMonitor fileUpdateMonitor, @@ -76,6 +79,7 @@ public OpenDatabaseAction(LibraryTabContainer tabContainer, TaskExecutor taskExecutor) { this.tabContainer = tabContainer; this.preferencesService = preferencesService; + this.aiService = aiService; this.dialogService = dialogService; this.stateManager = stateManager; this.fileUpdateMonitor = fileUpdateMonitor; @@ -198,6 +202,7 @@ private void openTheFile(Path file) { file, dialogService, preferencesService, + aiService, stateManager, tabContainer, fileUpdateMonitor, @@ -249,6 +254,7 @@ private ParserResult loadDatabase(Path file) throws Exception { tabContainer, dialogService, preferencesService, + aiService, stateManager, entryTypesManager, fileUpdateMonitor, @@ -269,6 +275,7 @@ public static void openSharedDatabase(ParserResult parserResult, LibraryTabContainer tabContainer, DialogService dialogService, PreferencesService preferencesService, + AiService aiService, StateManager stateManager, BibEntryTypesManager entryTypesManager, FileUpdateMonitor fileUpdateMonitor, @@ -280,6 +287,7 @@ public static void openSharedDatabase(ParserResult parserResult, tabContainer, dialogService, preferencesService, + aiService, stateManager, entryTypesManager, fileUpdateMonitor, diff --git a/src/main/java/org/jabref/gui/openoffice/OpenOfficePanel.java b/src/main/java/org/jabref/gui/openoffice/OpenOfficePanel.java index a64b527ec56..b68817f3759 100644 --- a/src/main/java/org/jabref/gui/openoffice/OpenOfficePanel.java +++ b/src/main/java/org/jabref/gui/openoffice/OpenOfficePanel.java @@ -40,6 +40,7 @@ import org.jabref.gui.util.BackgroundTask; import org.jabref.gui.util.DirectoryDialogConfiguration; import org.jabref.gui.util.TaskExecutor; +import org.jabref.logic.ai.AiService; import org.jabref.logic.citationkeypattern.CitationKeyGenerator; import org.jabref.logic.citationkeypattern.CitationKeyPatternPreferences; import org.jabref.logic.help.HelpFile; @@ -89,6 +90,7 @@ public class OpenOfficePanel { private final VBox vbox = new VBox(); private final PreferencesService preferencesService; + private final AiService aiService; private final StateManager stateManager; private final UndoManager undoManager; private final TaskExecutor taskExecutor; @@ -101,6 +103,7 @@ public class OpenOfficePanel { public OpenOfficePanel(LibraryTabContainer tabContainer, PreferencesService preferencesService, + AiService aiService, KeyBindingRepository keyBindingRepository, JournalAbbreviationRepository abbreviationRepository, TaskExecutor taskExecutor, @@ -114,6 +117,7 @@ public OpenOfficePanel(LibraryTabContainer tabContainer, this.entryTypesManager = entryTypesManager; ActionFactory factory = new ActionFactory(keyBindingRepository); this.preferencesService = preferencesService; + this.aiService = aiService; this.taskExecutor = taskExecutor; this.dialogService = dialogService; this.stateManager = stateManager; @@ -276,6 +280,7 @@ private void exportEntries() { tabContainer, dialogService, preferencesService, + aiService, stateManager, fileUpdateMonitor, entryTypesManager, diff --git a/src/main/java/org/jabref/gui/shared/SharedDatabaseLoginDialogView.java b/src/main/java/org/jabref/gui/shared/SharedDatabaseLoginDialogView.java index b43c748cfc0..fb939296c8c 100644 --- a/src/main/java/org/jabref/gui/shared/SharedDatabaseLoginDialogView.java +++ b/src/main/java/org/jabref/gui/shared/SharedDatabaseLoginDialogView.java @@ -19,6 +19,7 @@ import org.jabref.gui.util.ControlHelper; import org.jabref.gui.util.IconValidationDecorator; import org.jabref.gui.util.TaskExecutor; +import org.jabref.logic.ai.AiService; import org.jabref.logic.l10n.Localization; import org.jabref.logic.shared.DBMSType; import org.jabref.model.entry.BibEntryTypesManager; @@ -50,6 +51,7 @@ public class SharedDatabaseLoginDialogView extends BaseDialog { @Inject private DialogService dialogService; @Inject private PreferencesService preferencesService; + @Inject private AiService aiService; @Inject private StateManager stateManager; @Inject private BibEntryTypesManager entryTypesManager; @Inject private FileUpdateMonitor fileUpdateMonitor; @@ -92,6 +94,7 @@ private void initialize() { tabContainer, dialogService, preferencesService, + aiService, stateManager, entryTypesManager, fileUpdateMonitor, diff --git a/src/main/java/org/jabref/gui/shared/SharedDatabaseLoginDialogViewModel.java b/src/main/java/org/jabref/gui/shared/SharedDatabaseLoginDialogViewModel.java index 6505d7ca028..24ef00d9c23 100644 --- a/src/main/java/org/jabref/gui/shared/SharedDatabaseLoginDialogViewModel.java +++ b/src/main/java/org/jabref/gui/shared/SharedDatabaseLoginDialogViewModel.java @@ -32,6 +32,7 @@ import org.jabref.gui.util.FileDialogConfiguration; import org.jabref.gui.util.FileFilterConverter; import org.jabref.gui.util.TaskExecutor; +import org.jabref.logic.ai.AiService; import org.jabref.logic.help.HelpFile; import org.jabref.logic.l10n.Localization; import org.jabref.logic.shared.DBMSConnectionProperties; @@ -80,6 +81,7 @@ public class SharedDatabaseLoginDialogViewModel extends AbstractViewModel { private final LibraryTabContainer tabContainer; private final DialogService dialogService; private final PreferencesService preferencesService; + private final AiService aiService; private final SharedDatabasePreferences sharedDatabasePreferences = new SharedDatabasePreferences(); private final StateManager stateManager; private final BibEntryTypesManager entryTypesManager; @@ -98,6 +100,7 @@ public class SharedDatabaseLoginDialogViewModel extends AbstractViewModel { public SharedDatabaseLoginDialogViewModel(LibraryTabContainer tabContainer, DialogService dialogService, PreferencesService preferencesService, + AiService aiService, StateManager stateManager, BibEntryTypesManager entryTypesManager, FileUpdateMonitor fileUpdateMonitor, @@ -106,6 +109,7 @@ public SharedDatabaseLoginDialogViewModel(LibraryTabContainer tabContainer, this.tabContainer = tabContainer; this.dialogService = dialogService; this.preferencesService = preferencesService; + this.aiService = aiService; this.stateManager = stateManager; this.entryTypesManager = entryTypesManager; this.fileUpdateMonitor = fileUpdateMonitor; @@ -184,6 +188,7 @@ private boolean openSharedDatabase(DBMSConnectionProperties connectionProperties tabContainer, dialogService, preferencesService, + aiService, stateManager, entryTypesManager, fileUpdateMonitor, diff --git a/src/main/java/org/jabref/gui/shared/SharedDatabaseUIManager.java b/src/main/java/org/jabref/gui/shared/SharedDatabaseUIManager.java index f83426b0a9e..3fa34bf82b5 100644 --- a/src/main/java/org/jabref/gui/shared/SharedDatabaseUIManager.java +++ b/src/main/java/org/jabref/gui/shared/SharedDatabaseUIManager.java @@ -20,6 +20,7 @@ import org.jabref.gui.mergeentries.MergeEntriesDialog; import org.jabref.gui.undo.UndoableRemoveEntries; import org.jabref.gui.util.TaskExecutor; +import org.jabref.logic.ai.AiService; import org.jabref.logic.importer.ParserResult; import org.jabref.logic.l10n.Localization; import org.jabref.logic.shared.DBMSConnection; @@ -47,6 +48,7 @@ public class SharedDatabaseUIManager { private DatabaseSynchronizer dbmsSynchronizer; private final DialogService dialogService; private final PreferencesService preferencesService; + private final AiService aiService; private final StateManager stateManager; private final BibEntryTypesManager entryTypesManager; private final FileUpdateMonitor fileUpdateMonitor; @@ -56,6 +58,7 @@ public class SharedDatabaseUIManager { public SharedDatabaseUIManager(LibraryTabContainer tabContainer, DialogService dialogService, PreferencesService preferencesService, + AiService aiService, StateManager stateManager, BibEntryTypesManager entryTypesManager, FileUpdateMonitor fileUpdateMonitor, @@ -64,6 +67,7 @@ public SharedDatabaseUIManager(LibraryTabContainer tabContainer, this.tabContainer = tabContainer; this.dialogService = dialogService; this.preferencesService = preferencesService; + this.aiService = aiService; this.stateManager = stateManager; this.entryTypesManager = entryTypesManager; this.fileUpdateMonitor = fileUpdateMonitor; @@ -168,6 +172,7 @@ public LibraryTab openNewSharedDatabaseTab(DBMSConnectionProperties dbmsConnecti tabContainer, dialogService, preferencesService, + aiService, stateManager, fileUpdateMonitor, entryTypesManager, diff --git a/src/main/java/org/jabref/gui/sidepane/SidePane.java b/src/main/java/org/jabref/gui/sidepane/SidePane.java index fa8b74e170a..5e7963f8204 100644 --- a/src/main/java/org/jabref/gui/sidepane/SidePane.java +++ b/src/main/java/org/jabref/gui/sidepane/SidePane.java @@ -15,6 +15,7 @@ import org.jabref.gui.StateManager; import org.jabref.gui.actions.SimpleCommand; import org.jabref.gui.util.TaskExecutor; +import org.jabref.logic.ai.AiService; import org.jabref.logic.journals.JournalAbbreviationRepository; import org.jabref.model.entry.BibEntryTypesManager; import org.jabref.model.util.FileUpdateMonitor; @@ -31,6 +32,7 @@ public class SidePane extends VBox { public SidePane(LibraryTabContainer tabContainer, PreferencesService preferencesService, + AiService aiService, JournalAbbreviationRepository abbreviationRepository, TaskExecutor taskExecutor, DialogService dialogService, @@ -43,6 +45,7 @@ public SidePane(LibraryTabContainer tabContainer, this.viewModel = new SidePaneViewModel( tabContainer, preferencesService, + aiService, abbreviationRepository, stateManager, taskExecutor, diff --git a/src/main/java/org/jabref/gui/sidepane/SidePaneContentFactory.java b/src/main/java/org/jabref/gui/sidepane/SidePaneContentFactory.java index 8a8c5a03af4..8cc00fe7b7d 100644 --- a/src/main/java/org/jabref/gui/sidepane/SidePaneContentFactory.java +++ b/src/main/java/org/jabref/gui/sidepane/SidePaneContentFactory.java @@ -11,6 +11,7 @@ import org.jabref.gui.importer.fetcher.WebSearchPaneView; import org.jabref.gui.openoffice.OpenOfficePanel; import org.jabref.gui.util.TaskExecutor; +import org.jabref.logic.ai.AiService; import org.jabref.logic.journals.JournalAbbreviationRepository; import org.jabref.model.entry.BibEntryTypesManager; import org.jabref.model.util.FileUpdateMonitor; @@ -19,6 +20,7 @@ public class SidePaneContentFactory { private final LibraryTabContainer tabContainer; private final PreferencesService preferences; + private final AiService aiService; private final JournalAbbreviationRepository abbreviationRepository; private final TaskExecutor taskExecutor; private final DialogService dialogService; @@ -29,6 +31,7 @@ public class SidePaneContentFactory { public SidePaneContentFactory(LibraryTabContainer tabContainer, PreferencesService preferences, + AiService aiService, JournalAbbreviationRepository abbreviationRepository, TaskExecutor taskExecutor, DialogService dialogService, @@ -38,6 +41,7 @@ public SidePaneContentFactory(LibraryTabContainer tabContainer, UndoManager undoManager) { this.tabContainer = tabContainer; this.preferences = preferences; + this.aiService = aiService; this.abbreviationRepository = abbreviationRepository; this.taskExecutor = taskExecutor; this.dialogService = dialogService; @@ -57,6 +61,7 @@ public Node create(SidePaneType sidePaneType) { case OPEN_OFFICE -> new OpenOfficePanel( tabContainer, preferences, + aiService, preferences.getKeyBindingRepository(), abbreviationRepository, taskExecutor, diff --git a/src/main/java/org/jabref/gui/sidepane/SidePaneViewModel.java b/src/main/java/org/jabref/gui/sidepane/SidePaneViewModel.java index 16d500b57b1..d353ad3a28a 100644 --- a/src/main/java/org/jabref/gui/sidepane/SidePaneViewModel.java +++ b/src/main/java/org/jabref/gui/sidepane/SidePaneViewModel.java @@ -19,6 +19,7 @@ import org.jabref.gui.StateManager; import org.jabref.gui.actions.SimpleCommand; import org.jabref.gui.util.TaskExecutor; +import org.jabref.logic.ai.AiService; import org.jabref.logic.journals.JournalAbbreviationRepository; import org.jabref.model.entry.BibEntryTypesManager; import org.jabref.model.util.FileUpdateMonitor; @@ -40,6 +41,7 @@ public class SidePaneViewModel extends AbstractViewModel { public SidePaneViewModel(LibraryTabContainer tabContainer, PreferencesService preferencesService, + AiService aiService, JournalAbbreviationRepository abbreviationRepository, StateManager stateManager, TaskExecutor taskExecutor, @@ -53,6 +55,7 @@ public SidePaneViewModel(LibraryTabContainer tabContainer, this.sidePaneContentFactory = new SidePaneContentFactory( tabContainer, preferencesService, + aiService, abbreviationRepository, taskExecutor, dialogService, diff --git a/src/test/java/org/jabref/gui/sidepane/SidePaneViewModelTest.java b/src/test/java/org/jabref/gui/sidepane/SidePaneViewModelTest.java index 0483736515c..536d34898a5 100644 --- a/src/test/java/org/jabref/gui/sidepane/SidePaneViewModelTest.java +++ b/src/test/java/org/jabref/gui/sidepane/SidePaneViewModelTest.java @@ -15,6 +15,7 @@ import org.jabref.gui.util.CustomLocalDragboard; import org.jabref.gui.util.OptionalObjectProperty; import org.jabref.gui.util.TaskExecutor; +import org.jabref.logic.ai.AiService; import org.jabref.logic.journals.JournalAbbreviationRepository; import org.jabref.model.entry.BibEntryTypesManager; import org.jabref.model.util.FileUpdateMonitor; @@ -36,6 +37,7 @@ class SidePaneViewModelTest { LibraryTabContainer tabContainer = mock(LibraryTabContainer.class); PreferencesService preferencesService = mock(PreferencesService.class); + AiService aiService = mock(AiService.class); JournalAbbreviationRepository abbreviationRepository = mock(JournalAbbreviationRepository.class); StateManager stateManager = mock(StateManager.class); TaskExecutor taskExecutor = mock(TaskExecutor.class); @@ -63,6 +65,7 @@ void setUp() { sidePaneViewModel = new SidePaneViewModel( tabContainer, preferencesService, + aiService, abbreviationRepository, stateManager, taskExecutor,