diff --git a/src/main/java/org/jabref/gui/actions/StandardActions.java b/src/main/java/org/jabref/gui/actions/StandardActions.java index 7f44fb8810f..0be9688a677 100644 --- a/src/main/java/org/jabref/gui/actions/StandardActions.java +++ b/src/main/java/org/jabref/gui/actions/StandardActions.java @@ -113,7 +113,7 @@ public enum StandardActions implements Action { ABBREVIATE_DOTLESS(Localization.lang("dotless"), Localization.lang("Abbreviate journal names of the selected entries (DOTLESS abbreviation)")), ABBREVIATE_SHORTEST_UNIQUE(Localization.lang("shortest unique"), Localization.lang("Abbreviate journal names of the selected entries (SHORTEST UNIQUE abbreviation)")), UNABBREVIATE(Localization.lang("Unabbreviate journal names"), Localization.lang("Unabbreviate journal names of the selected entries"), KeyBinding.UNABBREVIATE), - + GET_BIBLIOGRAPHIC_DATA(Localization.lang("Get bibliographic data"), IconTheme.JabRefIcons.SEARCH,KeyBinding.GET_BIBLIOGRAPHIC_DATA), MANAGE_CUSTOM_EXPORTS(Localization.lang("Manage custom exports")), MANAGE_CUSTOM_IMPORTS(Localization.lang("Manage custom imports")), CUSTOMIZE_ENTRY_TYPES(Localization.lang("Customize entry types")), diff --git a/src/main/java/org/jabref/gui/fieldeditors/identifier/IdentifierEditor.java b/src/main/java/org/jabref/gui/fieldeditors/identifier/IdentifierEditor.java index f0c308f9179..8c342e6d654 100644 --- a/src/main/java/org/jabref/gui/fieldeditors/identifier/IdentifierEditor.java +++ b/src/main/java/org/jabref/gui/fieldeditors/identifier/IdentifierEditor.java @@ -1,15 +1,14 @@ package org.jabref.gui.fieldeditors.identifier; -import java.util.Optional; - -import javax.swing.undo.UndoManager; - +import com.airhacks.afterburner.injection.Injector; +import com.airhacks.afterburner.views.ViewLoader; +import jakarta.inject.Inject; import javafx.fxml.FXML; import javafx.scene.Parent; import javafx.scene.control.Button; import javafx.scene.control.Tooltip; +import javafx.scene.input.KeyEvent; import javafx.scene.layout.HBox; - import org.jabref.gui.DialogService; import org.jabref.gui.StateManager; import org.jabref.gui.autocompleter.SuggestionProvider; @@ -18,6 +17,7 @@ import org.jabref.gui.fieldeditors.FieldEditorFX; import org.jabref.gui.fieldeditors.contextmenu.DefaultMenu; import org.jabref.gui.fieldeditors.contextmenu.EditorMenus; +import org.jabref.gui.keyboard.KeyBinding; import org.jabref.gui.preferences.GuiPreferences; import org.jabref.logic.integrity.FieldCheckers; import org.jabref.logic.l10n.Localization; @@ -25,26 +25,32 @@ import org.jabref.model.entry.BibEntry; import org.jabref.model.entry.field.Field; -import com.airhacks.afterburner.injection.Injector; -import com.airhacks.afterburner.views.ViewLoader; -import jakarta.inject.Inject; +import javax.swing.undo.UndoManager; +import java.util.Optional; -import static org.jabref.model.entry.field.StandardField.DOI; -import static org.jabref.model.entry.field.StandardField.EPRINT; -import static org.jabref.model.entry.field.StandardField.ISBN; +import static org.jabref.model.entry.field.StandardField.*; public class IdentifierEditor extends HBox implements FieldEditorFX { - @FXML private BaseIdentifierEditorViewModel viewModel; - @FXML private EditorTextArea textArea; - @FXML private Button fetchInformationByIdentifierButton; - @FXML private Button lookupIdentifierButton; - - @Inject private DialogService dialogService; - @Inject private TaskExecutor taskExecutor; - @Inject private GuiPreferences preferences; - @Inject private UndoManager undoManager; - @Inject private StateManager stateManager; + @FXML + private BaseIdentifierEditorViewModel viewModel; + @FXML + private EditorTextArea textArea; + @FXML + private Button fetchInformationByIdentifierButton; + @FXML + private Button lookupIdentifierButton; + + @Inject + private DialogService dialogService; + @Inject + private TaskExecutor taskExecutor; + @Inject + private GuiPreferences preferences; + @Inject + private UndoManager undoManager; + @Inject + private StateManager stateManager; private Optional entry = Optional.empty(); @@ -56,6 +62,9 @@ public IdentifierEditor(Field field, // but we need the injected vars to create the viewmodels. Injector.registerExistingAndInject(this); + initKeyBindings(); + + switch (field) { case DOI -> this.viewModel = new DoiIdentifierEditorViewModel(suggestionProvider, fieldCheckers, dialogService, taskExecutor, preferences, undoManager, stateManager); @@ -71,8 +80,8 @@ public IdentifierEditor(Field field, } ViewLoader.view(this) - .root(this) - .load(); + .root(this) + .load(); textArea.textProperty().bindBidirectional(viewModel.textProperty()); @@ -90,6 +99,15 @@ public IdentifierEditor(Field field, new EditorValidator(preferences).configureValidation(viewModel.getFieldValidator().getValidationStatus(), textArea); } + private void initKeyBindings() { + addEventFilter(KeyEvent.KEY_PRESSED, event -> { + Optional keyBinding = preferences.getKeyBindingRepository().mapToKeyBinding(event); + if (keyBinding.isPresent() && keyBinding.get() == KeyBinding.GET_BIBLIOGRAPHIC_DATA) { + this.fetchInformationByIdentifier(); + } + }); + } + public BaseIdentifierEditorViewModel getViewModel() { return viewModel; } diff --git a/src/main/java/org/jabref/gui/keyboard/KeyBinding.java b/src/main/java/org/jabref/gui/keyboard/KeyBinding.java index d0cb6100338..12754286a9e 100644 --- a/src/main/java/org/jabref/gui/keyboard/KeyBinding.java +++ b/src/main/java/org/jabref/gui/keyboard/KeyBinding.java @@ -8,6 +8,7 @@ public enum KeyBinding { EDITOR_DELETE("Delete", Localization.lang("Delete text"), "", KeyBindingCategory.EDITOR), // DELETE BACKWARDS = Rubout + GET_BIBLIOGRAPHIC_DATA("Get bibliographic data", Localization.lang("Get bibliographic data"), "ctrl+shift+alt+B", KeyBindingCategory.EDITOR), EDITOR_BACKWARD("Move caret left", Localization.lang("Move caret left"), "", KeyBindingCategory.EDITOR), EDITOR_FORWARD("Move caret right", Localization.lang("Move caret right"), "", KeyBindingCategory.EDITOR), EDITOR_WORD_BACKWARD("Move caret to previous word", Localization.lang("Move caret to previous word"), "", KeyBindingCategory.EDITOR),