From d9a3b26bbd9365c3fd9f88ce4bd38c96d30afb32 Mon Sep 17 00:00:00 2001 From: Siedlerchr Date: Wed, 5 Aug 2020 21:24:31 +0200 Subject: [PATCH 1/2] Fix copy pasting via menu Add hack for OSX. Caveat: Prevents pasting using Cmd+V on an empty library --- .../java/org/jabref/gui/edit/EditAction.java | 29 +++++++++++++++++++ .../org/jabref/gui/maintable/MainTable.java | 14 ++++++--- 2 files changed, 39 insertions(+), 4 deletions(-) diff --git a/src/main/java/org/jabref/gui/edit/EditAction.java b/src/main/java/org/jabref/gui/edit/EditAction.java index 0864a09a7ee..2835d825c70 100644 --- a/src/main/java/org/jabref/gui/edit/EditAction.java +++ b/src/main/java/org/jabref/gui/edit/EditAction.java @@ -7,6 +7,10 @@ import org.jabref.gui.actions.ActionHelper; import org.jabref.gui.actions.SimpleCommand; import org.jabref.gui.actions.StandardActions; +import org.jabref.gui.maintable.MainTable; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; /** * Class for handling general actions; cut, copy and paste. The focused component is kept track of by @@ -14,6 +18,8 @@ */ public class EditAction extends SimpleCommand { + private static final Logger LOGGER = LoggerFactory.getLogger(EditAction.class); + private final JabRefFrame frame; private final StandardActions action; private final StateManager stateManager; @@ -54,6 +60,29 @@ public void execute() { default: throw new IllegalStateException("Only cut/copy/paste supported in TextInputControl but got " + action); } + + } else if (focusOwner instanceof MainTable) { + + LOGGER.debug("I am a Maintable in Edit action"); + // Not sure what is selected -> copy/paste/cut selected entries + + // ToDo: Should be handled by BibDatabaseContext instead of BasePanel + switch (action) { + case COPY: + frame.getCurrentBasePanel().copy(); + break; + case CUT: + frame.getCurrentBasePanel().cut(); + break; + case PASTE: + frame.getCurrentBasePanel().paste(); + break; + case DELETE_ENTRY: + frame.getCurrentBasePanel().delete(false); + break; + default: + throw new IllegalStateException("Only cut/copy/paste supported but got " + action); + } } }); } diff --git a/src/main/java/org/jabref/gui/maintable/MainTable.java b/src/main/java/org/jabref/gui/maintable/MainTable.java index 9a8ae6f2a18..dc698321394 100644 --- a/src/main/java/org/jabref/gui/maintable/MainTable.java +++ b/src/main/java/org/jabref/gui/maintable/MainTable.java @@ -37,6 +37,7 @@ import org.jabref.gui.util.DefaultTaskExecutor; import org.jabref.gui.util.ViewModelTableRowFactory; import org.jabref.logic.l10n.Localization; +import org.jabref.logic.util.OS; import org.jabref.model.database.BibDatabaseContext; import org.jabref.model.database.event.EntriesAddedEvent; import org.jabref.model.entry.BibEntry; @@ -61,6 +62,7 @@ public class MainTable extends TableView { private long lastKeyPressTime; private String columnSearchTerm; + public MainTable(MainTableDataModel model, JabRefFrame frame, BasePanel panel, BibDatabaseContext database, MainTablePreferences preferences, ExternalFileTypes externalFileTypes, KeyBindingRepository keyBindingRepository) { @@ -220,10 +222,13 @@ private void setupKeyBindings(KeyBindingRepository keyBindings) { clearAndSelectLast(); event.consume(); break; - case PASTE: - paste(); - event.consume(); - break; + case PASTE: { + if (!OS.OS_X) { //ugly hack, prevents duplicate entries on pasting. Side effect: Prevents pasting using cmd+v on an empty library + paste(); + event.consume(); + break; + } + } case COPY: copy(); event.consume(); @@ -258,6 +263,7 @@ public void paste() { if (!entriesToAdd.isEmpty()) { this.requestFocus(); } + } private void handleOnDragOver(TableRow row, BibEntryTableViewModel item, DragEvent event) { From fe206ac9661ced1fa05216edfa1cb87c13a9b410 Mon Sep 17 00:00:00 2001 From: Siedlerchr Date: Wed, 5 Aug 2020 21:32:14 +0200 Subject: [PATCH 2/2] fix checkstyle --- src/main/java/org/jabref/gui/maintable/MainTable.java | 6 ++---- 1 file changed, 2 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 dc698321394..6b0183299a4 100644 --- a/src/main/java/org/jabref/gui/maintable/MainTable.java +++ b/src/main/java/org/jabref/gui/maintable/MainTable.java @@ -62,7 +62,6 @@ public class MainTable extends TableView { private long lastKeyPressTime; private String columnSearchTerm; - public MainTable(MainTableDataModel model, JabRefFrame frame, BasePanel panel, BibDatabaseContext database, MainTablePreferences preferences, ExternalFileTypes externalFileTypes, KeyBindingRepository keyBindingRepository) { @@ -222,13 +221,12 @@ private void setupKeyBindings(KeyBindingRepository keyBindings) { clearAndSelectLast(); event.consume(); break; - case PASTE: { - if (!OS.OS_X) { //ugly hack, prevents duplicate entries on pasting. Side effect: Prevents pasting using cmd+v on an empty library + case PASTE: + if (!OS.OS_X) { // ugly hack, prevents duplicate entries on pasting. Side effect: Prevents pasting using cmd+v on an empty library paste(); event.consume(); break; } - } case COPY: copy(); event.consume();