From 34a2ae445933b0d1c15e027e17ca8e295acf7cb3 Mon Sep 17 00:00:00 2001 From: azhagparov Date: Sat, 30 Mar 2019 01:20:23 +0300 Subject: [PATCH 01/12] #4795 disable menu item if database not connected --- src/main/java/org/jabref/gui/BasePanel.java | 2 + src/main/java/org/jabref/gui/JabRefFrame.java | 8 +- .../java/org/jabref/gui/actions/Actions.java | 3 +- .../gui/push/PushToApplicationAction.java | 56 +++++++++--- .../gui/push/PushToApplicationButton.java | 90 ------------------- 5 files changed, 51 insertions(+), 108 deletions(-) delete mode 100644 src/main/java/org/jabref/gui/push/PushToApplicationButton.java diff --git a/src/main/java/org/jabref/gui/BasePanel.java b/src/main/java/org/jabref/gui/BasePanel.java index f57f69d6134..1e0632bc594 100644 --- a/src/main/java/org/jabref/gui/BasePanel.java +++ b/src/main/java/org/jabref/gui/BasePanel.java @@ -62,6 +62,7 @@ import org.jabref.gui.maintable.MainTableDataModel; import org.jabref.gui.mergeentries.MergeEntriesAction; import org.jabref.gui.mergeentries.MergeWithFetchedEntryAction; +import org.jabref.gui.push.PushToApplicationAction; import org.jabref.gui.specialfields.SpecialFieldDatabaseChangeListener; import org.jabref.gui.specialfields.SpecialFieldValueViewModel; import org.jabref.gui.specialfields.SpecialFieldViewModel; @@ -430,6 +431,7 @@ private void setupActions() { actions.put(Actions.MOVE_TO_GROUP, new GroupAddRemoveDialog(this, true, true)); actions.put(Actions.DOWNLOAD_FULL_TEXT, new FindFullTextAction(frame.getDialogService(), this)); + actions.put(Actions.PUSH_TO_APPLICATION, new PushToApplicationAction(frame)); } /** diff --git a/src/main/java/org/jabref/gui/JabRefFrame.java b/src/main/java/org/jabref/gui/JabRefFrame.java index a7f2586d7e0..3e1bf0ae167 100644 --- a/src/main/java/org/jabref/gui/JabRefFrame.java +++ b/src/main/java/org/jabref/gui/JabRefFrame.java @@ -97,7 +97,7 @@ import org.jabref.gui.keyboard.KeyBinding; import org.jabref.gui.menus.FileHistoryMenu; import org.jabref.gui.mergeentries.MergeEntriesAction; -import org.jabref.gui.push.PushToApplicationButton; +import org.jabref.gui.push.PushToApplicationAction; import org.jabref.gui.push.PushToApplications; import org.jabref.gui.search.GlobalSearchBar; import org.jabref.gui.specialfields.SpecialFieldMenuItemFactory; @@ -616,7 +616,6 @@ private Node createToolbar() { leftSide.prefWidthProperty().bind(sidePane.widthProperty()); leftSide.maxWidthProperty().bind(sidePane.widthProperty()); - PushToApplicationButton pushToExternal = new PushToApplicationButton(this, pushApplications.getApplications()); HBox rightSide = new HBox( factory.createIconButton(StandardActions.NEW_ARTICLE, new NewEntryAction(this, BiblatexEntryTypes.ARTICLE, dialogService, Globals.prefs)), factory.createIconButton(StandardActions.DELETE_ENTRY, new OldDatabaseCommandWrapper(Actions.DELETE, this, Globals.stateManager)), @@ -628,7 +627,7 @@ private Node createToolbar() { factory.createIconButton(StandardActions.PASTE, new OldDatabaseCommandWrapper(Actions.PASTE, this, Globals.stateManager)), factory.createIconButton(StandardActions.CLEANUP_ENTRIES, new OldDatabaseCommandWrapper(Actions.CLEANUP, this, Globals.stateManager)), - factory.createIconButton(pushToExternal.getMenuAction(), pushToExternal), + factory.createIconButton(new PushToApplicationAction(this), new OldDatabaseCommandWrapper(Actions.PUSH_TO_APPLICATION, this, Globals.stateManager)), factory.createIconButton(StandardActions.FORK_ME, new OpenBrowserAction("https://github.com/JabRef/jabref")), factory.createIconButton(StandardActions.OPEN_FACEBOOK, new OpenBrowserAction("https://www.facebook.com/JabRef/")), @@ -896,7 +895,6 @@ private MenuBar createMenu() { factory.createMenuItem(StandardActions.PREVIOUS_PREVIEW_STYLE, new OldDatabaseCommandWrapper(Actions.PREVIOUS_PREVIEW_STYLE, this, Globals.stateManager)) ); - PushToApplicationButton pushToExternal = new PushToApplicationButton(this, pushApplications.getApplications()); tools.getItems().addAll( factory.createMenuItem(StandardActions.NEW_SUB_LIBRARY_FROM_AUX, new NewSubLibraryAction(this)), factory.createMenuItem(StandardActions.WRITE_XMP, new OldDatabaseCommandWrapper(Actions.WRITE_XMP, this, Globals.stateManager)), @@ -904,7 +902,7 @@ private MenuBar createMenu() { new SeparatorMenuItem(), factory.createMenuItem(openOffice.getToggleAction(), openOffice.getToggleCommand()), - factory.createMenuItem(pushToExternal.getMenuAction(), pushToExternal), + factory.createMenuItem(new PushToApplicationAction(this), new OldDatabaseCommandWrapper(Actions.PUSH_TO_APPLICATION, this, Globals.stateManager)), new SeparatorMenuItem(), diff --git a/src/main/java/org/jabref/gui/actions/Actions.java b/src/main/java/org/jabref/gui/actions/Actions.java index 4a72f33a45f..b8d705fa544 100644 --- a/src/main/java/org/jabref/gui/actions/Actions.java +++ b/src/main/java/org/jabref/gui/actions/Actions.java @@ -72,5 +72,6 @@ public enum Actions { CLEAR_READ_STATUS, SET_READ_STATUS_TO_READ, SET_READ_STATUS_TO_SKIMMED, - TOGGLE_RELEVANCE + TOGGLE_RELEVANCE, + PUSH_TO_APPLICATION } diff --git a/src/main/java/org/jabref/gui/push/PushToApplicationAction.java b/src/main/java/org/jabref/gui/push/PushToApplicationAction.java index 468fb8b57dc..76e1c927286 100644 --- a/src/main/java/org/jabref/gui/push/PushToApplicationAction.java +++ b/src/main/java/org/jabref/gui/push/PushToApplicationAction.java @@ -1,39 +1,71 @@ package org.jabref.gui.push; -import java.awt.event.ActionEvent; import java.util.List; import java.util.Optional; -import javax.swing.AbstractAction; -import javax.swing.Action; import javax.swing.SwingUtilities; +import org.jabref.Globals; import org.jabref.JabRefExecutorService; import org.jabref.gui.BasePanel; import org.jabref.gui.JabRefFrame; +import org.jabref.gui.actions.Action; +import org.jabref.gui.actions.BaseAction; +import org.jabref.gui.icon.JabRefIcon; +import org.jabref.gui.keyboard.KeyBinding; import org.jabref.logic.l10n.Localization; import org.jabref.model.entry.BibEntry; +import org.jabref.preferences.JabRefPreferences; /** * An Action class representing the process of invoking a PushToApplication operation. */ -class PushToApplicationAction extends AbstractAction implements Runnable { +public class PushToApplicationAction implements Runnable, BaseAction, Action{ private final PushToApplication operation; private final JabRefFrame frame; private BasePanel panel; private List entries; - public PushToApplicationAction(JabRefFrame frame, PushToApplication operation) { + public PushToApplicationAction(JabRefFrame frame) { this.frame = frame; - putValue(Action.SMALL_ICON, operation.getIcon()); - putValue(Action.NAME, operation.getName()); - putValue(Action.SHORT_DESCRIPTION, operation.getTooltip()); - this.operation = operation; + this.operation = getLastUsedApplication(frame.getPushApplications().getApplications()); + } + + private PushToApplication getLastUsedApplication(List pushActions) { + String appSelected = Globals.prefs.get(JabRefPreferences.PUSH_TO_APPLICATION); + for (PushToApplication application : pushActions) { + if (application.getApplicationName().equals(appSelected)) { + return application; + } + } + + // Nothing found, pick first + return pushActions.get(0); + } + + @Override + public Optional getIcon() { + return Optional.of(operation.getIcon()); + } + + @Override + public Optional getKeyBinding() { + return Optional.of(KeyBinding.PUSH_TO_APPLICATION); + } + + @Override + public String getText() { + return Localization.lang("Push entries to external application (%0)", operation.getApplicationName()); + } + + @Override + public String getDescription() { + return ""; } @Override - public void actionPerformed(ActionEvent e) { + public void action() { panel = frame.getCurrentBasePanel(); // Check if a BasePanel exists: @@ -44,7 +76,7 @@ public void actionPerformed(ActionEvent e) { // Check if any entries are selected: entries = panel.getSelectedEntries(); if (entries.isEmpty()) { - frame.getDialogService().showErrorDialogAndWait((String) getValue(Action.NAME), + frame.getDialogService().showErrorDialogAndWait(operation.getApplicationName(), Localization.lang("This operation requires one or more entries to be selected.")); return; @@ -54,7 +86,7 @@ public void actionPerformed(ActionEvent e) { if (operation.requiresBibtexKeys()) { for (BibEntry entry : entries) { if (!(entry.getCiteKeyOptional().isPresent()) || entry.getCiteKeyOptional().get().trim().isEmpty()) { - frame.getDialogService().showErrorDialogAndWait((String) getValue(Action.NAME), + frame.getDialogService().showErrorDialogAndWait(operation.getApplicationName(), Localization.lang("This operation requires all selected entries to have BibTeX keys defined.")); return; diff --git a/src/main/java/org/jabref/gui/push/PushToApplicationButton.java b/src/main/java/org/jabref/gui/push/PushToApplicationButton.java deleted file mode 100644 index 5ab8fefd4aa..00000000000 --- a/src/main/java/org/jabref/gui/push/PushToApplicationButton.java +++ /dev/null @@ -1,90 +0,0 @@ -package org.jabref.gui.push; - -import java.awt.event.ActionEvent; -import java.awt.event.ActionListener; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.Optional; - -import org.jabref.Globals; -import org.jabref.gui.JabRefFrame; -import org.jabref.gui.actions.SimpleCommand; -import org.jabref.gui.icon.JabRefIcon; -import org.jabref.gui.keyboard.KeyBinding; -import org.jabref.logic.l10n.Localization; -import org.jabref.preferences.JabRefPreferences; - -/** - * Customized UI component for pushing to external applications. Has a selection popup menu to change the selected - * external application. This class implements the ActionListener interface. When actionPerformed() is invoked, the - * currently selected PushToApplication is activated. The actionPerformed() method can be called with a null argument. - */ -public class PushToApplicationButton extends SimpleCommand implements ActionListener { - - private final JabRefFrame frame; - private final List pushActions; - private final PushToApplication toApp; - private final Map actions = new HashMap<>(); - - public PushToApplicationButton(JabRefFrame frame, List pushActions) { - this.frame = frame; - this.pushActions = pushActions; - // Set the last used external application - toApp = getLastUsedApplication(); - } - - private PushToApplication getLastUsedApplication() { - String appSelected = Globals.prefs.get(JabRefPreferences.PUSH_TO_APPLICATION); - for (PushToApplication application : pushActions) { - if (application.getApplicationName().equals(appSelected)) { - return application; - } - } - - // Nothing found, pick first - return pushActions.get(0); - } - - public org.jabref.gui.actions.Action getMenuAction() { - PushToApplication application = getLastUsedApplication(); - - return new org.jabref.gui.actions.Action() { - @Override - public Optional getIcon() { - return Optional.of(application.getIcon()); - } - - @Override - public Optional getKeyBinding() { - return Optional.of(KeyBinding.PUSH_TO_APPLICATION); - } - - @Override - public String getText() { - return Localization.lang("Push entries to external application (%0)", application.getApplicationName()); - } - - @Override - public String getDescription() { - return ""; - } - }; - } - - @Override - public void actionPerformed(ActionEvent e) { - execute(); - } - - @Override - public void execute() { - // Lazy initialization of the push action: - PushToApplicationAction action = actions.get(toApp); - if (action == null) { - action = new PushToApplicationAction(frame, toApp); - actions.put(toApp, action); - } - action.actionPerformed(new ActionEvent(toApp, 0, "push")); - } -} From ceac2784e9f1b49e40b9ee648ba117523362c220 Mon Sep 17 00:00:00 2001 From: azhagparov Date: Sat, 30 Mar 2019 11:55:44 +0300 Subject: [PATCH 02/12] resolve merge conflict --- src/main/java/org/jabref/gui/BasePanel.java | 6 ------ 1 file changed, 6 deletions(-) diff --git a/src/main/java/org/jabref/gui/BasePanel.java b/src/main/java/org/jabref/gui/BasePanel.java index 8d8256552d0..33126b0f6d8 100644 --- a/src/main/java/org/jabref/gui/BasePanel.java +++ b/src/main/java/org/jabref/gui/BasePanel.java @@ -390,12 +390,6 @@ private void setupActions() { actions.put(Actions.ABBREVIATE_MEDLINE, new AbbreviateAction(this, false)); actions.put(Actions.UNABBREVIATE, new UnabbreviateAction(this)); - actions.put(Actions.RESOLVE_DUPLICATE_KEYS, new SearchFixDuplicateLabels(this)); - - actions.put(Actions.ADD_TO_GROUP, new GroupAddRemoveDialog(this, true, false)); - actions.put(Actions.REMOVE_FROM_GROUP, new GroupAddRemoveDialog(this, false, false)); - actions.put(Actions.MOVE_TO_GROUP, new GroupAddRemoveDialog(this, true, true)); - actions.put(Actions.PUSH_TO_APPLICATION, new PushToApplicationAction(frame)); actions.put(Actions.DOWNLOAD_FULL_TEXT, new FindFullTextAction(this)::execute); } From da42044de40481d9fe362a5a58d2decb21dfd808 Mon Sep 17 00:00:00 2001 From: azhagparov Date: Sat, 30 Mar 2019 11:57:20 +0300 Subject: [PATCH 03/12] resolve merge conflict --- src/main/java/org/jabref/gui/JabRefFrame.java | 1 - 1 file changed, 1 deletion(-) diff --git a/src/main/java/org/jabref/gui/JabRefFrame.java b/src/main/java/org/jabref/gui/JabRefFrame.java index 4582bacfef4..cee1a9c4fc8 100644 --- a/src/main/java/org/jabref/gui/JabRefFrame.java +++ b/src/main/java/org/jabref/gui/JabRefFrame.java @@ -593,7 +593,6 @@ private Node createToolbar() { factory.createIconButton(StandardActions.CUT, new OldDatabaseCommandWrapper(Actions.CUT, this, Globals.stateManager)), factory.createIconButton(StandardActions.COPY, new OldDatabaseCommandWrapper(Actions.COPY, this, Globals.stateManager)), factory.createIconButton(StandardActions.PASTE, new OldDatabaseCommandWrapper(Actions.PASTE, this, Globals.stateManager)), - factory.createIconButton(StandardActions.CLEANUP_ENTRIES, new OldDatabaseCommandWrapper(Actions.CLEANUP, this, Globals.stateManager)), factory.createIconButton(new PushToApplicationAction(this), new OldDatabaseCommandWrapper(Actions.PUSH_TO_APPLICATION, this, Globals.stateManager)), new Separator(Orientation.VERTICAL), factory.createIconButton(pushToExternal.getMenuAction(), pushToExternal), From 8b3dacf1997c8dedc881135a118850dc96cb4099 Mon Sep 17 00:00:00 2001 From: azhagparov Date: Sat, 30 Mar 2019 12:30:18 +0300 Subject: [PATCH 04/12] resolve merge conflicts --- src/main/java/org/jabref/gui/JabRefFrame.java | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/main/java/org/jabref/gui/JabRefFrame.java b/src/main/java/org/jabref/gui/JabRefFrame.java index cee1a9c4fc8..0b23fa6a865 100644 --- a/src/main/java/org/jabref/gui/JabRefFrame.java +++ b/src/main/java/org/jabref/gui/JabRefFrame.java @@ -831,7 +831,7 @@ private MenuBar createMenu() { new SeparatorMenuItem(), - factory.createMenuItem(openOffice.getToggleAction(), openOffice.getToggleCommand()), + factory.createMenuItem(new PushToApplicationAction(this), new OldDatabaseCommandWrapper(Actions.PUSH_TO_APPLICATION, this, Globals.stateManager)), factory.createMenuItem(StandardActions.DOWNLOAD_FULL_TEXT, new OldDatabaseCommandWrapper(Actions.DOWNLOAD_FULL_TEXT, this, Globals.stateManager)), new SeparatorMenuItem(), @@ -839,7 +839,6 @@ private MenuBar createMenu() { factory.createMenuItem(StandardActions.GENERATE_CITE_KEYS, new OldDatabaseCommandWrapper(Actions.MAKE_KEY, this, Globals.stateManager)), factory.createMenuItem(StandardActions.REPLACE_ALL, new OldDatabaseCommandWrapper(Actions.REPLACE_ALL, this, Globals.stateManager)), factory.createMenuItem(StandardActions.SEND_AS_EMAIL, new OldDatabaseCommandWrapper(Actions.SEND_AS_EMAIL, this, Globals.stateManager)), - factory.createMenuItem(new PushToApplicationAction(this), new OldDatabaseCommandWrapper(Actions.PUSH_TO_APPLICATION, this, Globals.stateManager)), factory.createSubMenu(StandardActions.ABBREVIATE, factory.createMenuItem(StandardActions.ABBREVIATE_ISO, new OldDatabaseCommandWrapper(Actions.ABBREVIATE_ISO, this, Globals.stateManager)), From 44b2faf86affbc4e23391ea229398138e9afa466 Mon Sep 17 00:00:00 2001 From: azhagparov Date: Sat, 30 Mar 2019 12:50:52 +0300 Subject: [PATCH 05/12] resolve check style --- src/main/java/org/jabref/gui/JabRefFrame.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/org/jabref/gui/JabRefFrame.java b/src/main/java/org/jabref/gui/JabRefFrame.java index 0b23fa6a865..84bb6c5c2f9 100644 --- a/src/main/java/org/jabref/gui/JabRefFrame.java +++ b/src/main/java/org/jabref/gui/JabRefFrame.java @@ -595,7 +595,7 @@ private Node createToolbar() { factory.createIconButton(StandardActions.PASTE, new OldDatabaseCommandWrapper(Actions.PASTE, this, Globals.stateManager)), factory.createIconButton(new PushToApplicationAction(this), new OldDatabaseCommandWrapper(Actions.PUSH_TO_APPLICATION, this, Globals.stateManager)), new Separator(Orientation.VERTICAL), - factory.createIconButton(pushToExternal.getMenuAction(), pushToExternal), + factory.createIconButton(new PushToApplicationAction(this), new OldDatabaseCommandWrapper(Actions.PUSH_TO_APPLICATION, this, Globals.stateManager)), factory.createIconButton(StandardActions.GENERATE_CITE_KEYS, new OldDatabaseCommandWrapper(Actions.MAKE_KEY, this, Globals.stateManager)), factory.createIconButton(StandardActions.CLEANUP_ENTRIES, new OldDatabaseCommandWrapper(Actions.CLEANUP, this, Globals.stateManager)), new Separator(Orientation.VERTICAL), From 662e33bc61d92d90fda52c9190e26296b9583cb2 Mon Sep 17 00:00:00 2001 From: azhagparov Date: Sat, 30 Mar 2019 13:20:07 +0300 Subject: [PATCH 06/12] fix import order --- src/main/java/org/jabref/gui/JabRefFrame.java | 2 +- src/main/java/org/jabref/gui/push/PushToApplicationAction.java | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/org/jabref/gui/JabRefFrame.java b/src/main/java/org/jabref/gui/JabRefFrame.java index 84bb6c5c2f9..4a6729504b7 100644 --- a/src/main/java/org/jabref/gui/JabRefFrame.java +++ b/src/main/java/org/jabref/gui/JabRefFrame.java @@ -98,10 +98,10 @@ import org.jabref.gui.keyboard.KeyBinding; import org.jabref.gui.menus.FileHistoryMenu; import org.jabref.gui.mergeentries.MergeEntriesAction; -import org.jabref.gui.push.PushToApplicationAction; import org.jabref.gui.metadata.BibtexStringEditorAction; import org.jabref.gui.metadata.PreambleEditor; import org.jabref.gui.protectedterms.ManageProtectedTermsAction; +import org.jabref.gui.push.PushToApplicationAction; import org.jabref.gui.push.PushToApplications; import org.jabref.gui.search.GlobalSearchBar; import org.jabref.gui.specialfields.SpecialFieldMenuItemFactory; diff --git a/src/main/java/org/jabref/gui/push/PushToApplicationAction.java b/src/main/java/org/jabref/gui/push/PushToApplicationAction.java index 76e1c927286..5606c48fb33 100644 --- a/src/main/java/org/jabref/gui/push/PushToApplicationAction.java +++ b/src/main/java/org/jabref/gui/push/PushToApplicationAction.java @@ -20,7 +20,7 @@ /** * An Action class representing the process of invoking a PushToApplication operation. */ -public class PushToApplicationAction implements Runnable, BaseAction, Action{ +public class PushToApplicationAction implements Runnable, BaseAction, Action { private final PushToApplication operation; private final JabRefFrame frame; From 96e986e3b75d62a9cd4698478a014f8a2fbedbbd Mon Sep 17 00:00:00 2001 From: azhagparov Date: Sat, 30 Mar 2019 13:23:06 +0300 Subject: [PATCH 07/12] resolve merge --- src/main/java/org/jabref/gui/JabRefFrame.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/main/java/org/jabref/gui/JabRefFrame.java b/src/main/java/org/jabref/gui/JabRefFrame.java index 4a6729504b7..3a75de3d18c 100644 --- a/src/main/java/org/jabref/gui/JabRefFrame.java +++ b/src/main/java/org/jabref/gui/JabRefFrame.java @@ -831,7 +831,7 @@ private MenuBar createMenu() { new SeparatorMenuItem(), - factory.createMenuItem(new PushToApplicationAction(this), new OldDatabaseCommandWrapper(Actions.PUSH_TO_APPLICATION, this, Globals.stateManager)), + lookupIdentifiers, factory.createMenuItem(StandardActions.DOWNLOAD_FULL_TEXT, new OldDatabaseCommandWrapper(Actions.DOWNLOAD_FULL_TEXT, this, Globals.stateManager)), new SeparatorMenuItem(), @@ -839,6 +839,7 @@ private MenuBar createMenu() { factory.createMenuItem(StandardActions.GENERATE_CITE_KEYS, new OldDatabaseCommandWrapper(Actions.MAKE_KEY, this, Globals.stateManager)), factory.createMenuItem(StandardActions.REPLACE_ALL, new OldDatabaseCommandWrapper(Actions.REPLACE_ALL, this, Globals.stateManager)), factory.createMenuItem(StandardActions.SEND_AS_EMAIL, new OldDatabaseCommandWrapper(Actions.SEND_AS_EMAIL, this, Globals.stateManager)), + factory.createMenuItem(new PushToApplicationAction(this), new OldDatabaseCommandWrapper(Actions.PUSH_TO_APPLICATION, this, Globals.stateManager)), factory.createSubMenu(StandardActions.ABBREVIATE, factory.createMenuItem(StandardActions.ABBREVIATE_ISO, new OldDatabaseCommandWrapper(Actions.ABBREVIATE_ISO, this, Globals.stateManager)), From 4164a79bcfbce2bb792ac920ffaf65afc77a3078 Mon Sep 17 00:00:00 2001 From: azhagparov Date: Sat, 30 Mar 2019 13:37:29 +0300 Subject: [PATCH 08/12] delete duplicate code --- src/main/java/org/jabref/gui/JabRefFrame.java | 1 - 1 file changed, 1 deletion(-) diff --git a/src/main/java/org/jabref/gui/JabRefFrame.java b/src/main/java/org/jabref/gui/JabRefFrame.java index 3a75de3d18c..b7d80c9bee6 100644 --- a/src/main/java/org/jabref/gui/JabRefFrame.java +++ b/src/main/java/org/jabref/gui/JabRefFrame.java @@ -593,7 +593,6 @@ private Node createToolbar() { factory.createIconButton(StandardActions.CUT, new OldDatabaseCommandWrapper(Actions.CUT, this, Globals.stateManager)), factory.createIconButton(StandardActions.COPY, new OldDatabaseCommandWrapper(Actions.COPY, this, Globals.stateManager)), factory.createIconButton(StandardActions.PASTE, new OldDatabaseCommandWrapper(Actions.PASTE, this, Globals.stateManager)), - factory.createIconButton(new PushToApplicationAction(this), new OldDatabaseCommandWrapper(Actions.PUSH_TO_APPLICATION, this, Globals.stateManager)), new Separator(Orientation.VERTICAL), factory.createIconButton(new PushToApplicationAction(this), new OldDatabaseCommandWrapper(Actions.PUSH_TO_APPLICATION, this, Globals.stateManager)), factory.createIconButton(StandardActions.GENERATE_CITE_KEYS, new OldDatabaseCommandWrapper(Actions.MAKE_KEY, this, Globals.stateManager)), From 6a320c46a133abfc8589e8fd3ae3a400760598f7 Mon Sep 17 00:00:00 2001 From: azhagparov Date: Sun, 7 Apr 2019 00:12:49 +0300 Subject: [PATCH 09/12] change push to application implementation --- src/main/java/org/jabref/gui/BasePanel.java | 1 - src/main/java/org/jabref/gui/JabRefFrame.java | 6 ++- .../gui/push/PushToApplicationAction.java | 48 +++++++++++-------- 3 files changed, 32 insertions(+), 23 deletions(-) diff --git a/src/main/java/org/jabref/gui/BasePanel.java b/src/main/java/org/jabref/gui/BasePanel.java index 33126b0f6d8..1761b1cbda5 100644 --- a/src/main/java/org/jabref/gui/BasePanel.java +++ b/src/main/java/org/jabref/gui/BasePanel.java @@ -390,7 +390,6 @@ private void setupActions() { actions.put(Actions.ABBREVIATE_MEDLINE, new AbbreviateAction(this, false)); actions.put(Actions.UNABBREVIATE, new UnabbreviateAction(this)); - actions.put(Actions.PUSH_TO_APPLICATION, new PushToApplicationAction(frame)); actions.put(Actions.DOWNLOAD_FULL_TEXT, new FindFullTextAction(this)::execute); } diff --git a/src/main/java/org/jabref/gui/JabRefFrame.java b/src/main/java/org/jabref/gui/JabRefFrame.java index b7d80c9bee6..111c73a6899 100644 --- a/src/main/java/org/jabref/gui/JabRefFrame.java +++ b/src/main/java/org/jabref/gui/JabRefFrame.java @@ -584,6 +584,7 @@ private Node createToolbar() { leftSide.prefWidthProperty().bind(sidePane.widthProperty()); leftSide.maxWidthProperty().bind(sidePane.widthProperty()); + PushToApplicationAction pushToApplicationAction = new PushToApplicationAction(this, Globals.stateManager); HBox rightSide = new HBox( factory.createIconButton(StandardActions.NEW_ARTICLE, new NewEntryAction(this, BiblatexEntryTypes.ARTICLE, dialogService, Globals.prefs)), factory.createIconButton(StandardActions.DELETE_ENTRY, new OldDatabaseCommandWrapper(Actions.DELETE, this, Globals.stateManager)), @@ -594,7 +595,7 @@ private Node createToolbar() { factory.createIconButton(StandardActions.COPY, new OldDatabaseCommandWrapper(Actions.COPY, this, Globals.stateManager)), factory.createIconButton(StandardActions.PASTE, new OldDatabaseCommandWrapper(Actions.PASTE, this, Globals.stateManager)), new Separator(Orientation.VERTICAL), - factory.createIconButton(new PushToApplicationAction(this), new OldDatabaseCommandWrapper(Actions.PUSH_TO_APPLICATION, this, Globals.stateManager)), + factory.createIconButton(pushToApplicationAction.getActionInformation(), pushToApplicationAction), factory.createIconButton(StandardActions.GENERATE_CITE_KEYS, new OldDatabaseCommandWrapper(Actions.MAKE_KEY, this, Globals.stateManager)), factory.createIconButton(StandardActions.CLEANUP_ENTRIES, new OldDatabaseCommandWrapper(Actions.CLEANUP, this, Globals.stateManager)), new Separator(Orientation.VERTICAL), @@ -822,6 +823,7 @@ private MenuBar createMenu() { factory.createMenuItem(StandardActions.SET_FILE_LINKS, new AutoLinkFilesAction()) ); + final PushToApplicationAction pushToApplicationAction = new PushToApplicationAction(this, Globals.stateManager); tools.getItems().addAll( factory.createMenuItem(StandardActions.NEW_SUB_LIBRARY_FROM_AUX, new NewSubLibraryAction(this)), factory.createMenuItem(StandardActions.FIND_UNLINKED_FILES, new FindUnlinkedFilesAction(this)), @@ -838,7 +840,7 @@ private MenuBar createMenu() { factory.createMenuItem(StandardActions.GENERATE_CITE_KEYS, new OldDatabaseCommandWrapper(Actions.MAKE_KEY, this, Globals.stateManager)), factory.createMenuItem(StandardActions.REPLACE_ALL, new OldDatabaseCommandWrapper(Actions.REPLACE_ALL, this, Globals.stateManager)), factory.createMenuItem(StandardActions.SEND_AS_EMAIL, new OldDatabaseCommandWrapper(Actions.SEND_AS_EMAIL, this, Globals.stateManager)), - factory.createMenuItem(new PushToApplicationAction(this), new OldDatabaseCommandWrapper(Actions.PUSH_TO_APPLICATION, this, Globals.stateManager)), + factory.createMenuItem(pushToApplicationAction.getActionInformation(), pushToApplicationAction), factory.createSubMenu(StandardActions.ABBREVIATE, factory.createMenuItem(StandardActions.ABBREVIATE_ISO, new OldDatabaseCommandWrapper(Actions.ABBREVIATE_ISO, this, Globals.stateManager)), diff --git a/src/main/java/org/jabref/gui/push/PushToApplicationAction.java b/src/main/java/org/jabref/gui/push/PushToApplicationAction.java index 5606c48fb33..e1e774cb316 100644 --- a/src/main/java/org/jabref/gui/push/PushToApplicationAction.java +++ b/src/main/java/org/jabref/gui/push/PushToApplicationAction.java @@ -5,12 +5,15 @@ import javax.swing.SwingUtilities; +import org.fxmisc.easybind.EasyBind; import org.jabref.Globals; import org.jabref.JabRefExecutorService; import org.jabref.gui.BasePanel; import org.jabref.gui.JabRefFrame; +import org.jabref.gui.StateManager; import org.jabref.gui.actions.Action; import org.jabref.gui.actions.BaseAction; +import org.jabref.gui.actions.SimpleCommand; import org.jabref.gui.icon.JabRefIcon; import org.jabref.gui.keyboard.KeyBinding; import org.jabref.logic.l10n.Localization; @@ -20,16 +23,17 @@ /** * An Action class representing the process of invoking a PushToApplication operation. */ -public class PushToApplicationAction implements Runnable, BaseAction, Action { +public class PushToApplicationAction extends SimpleCommand implements Runnable { - private final PushToApplication operation; - private final JabRefFrame frame; + private PushToApplication operation; + private JabRefFrame frame; private BasePanel panel; private List entries; - public PushToApplicationAction(JabRefFrame frame) { + public PushToApplicationAction(final JabRefFrame frame, final StateManager stateManager) { this.frame = frame; this.operation = getLastUsedApplication(frame.getPushApplications().getApplications()); + this.executable.bind(EasyBind.map(stateManager.activeDatabaseProperty(), Optional::isPresent)); } private PushToApplication getLastUsedApplication(List pushActions) { @@ -44,28 +48,32 @@ private PushToApplication getLastUsedApplication(List pushAct return pushActions.get(0); } - @Override - public Optional getIcon() { - return Optional.of(operation.getIcon()); - } + public Action getActionInformation(){ + return new Action() { + @Override + public Optional getIcon() { + return Optional.of(operation.getIcon()); + } - @Override - public Optional getKeyBinding() { - return Optional.of(KeyBinding.PUSH_TO_APPLICATION); - } + @Override + public Optional getKeyBinding() { + return Optional.of(KeyBinding.PUSH_TO_APPLICATION); + } - @Override - public String getText() { - return Localization.lang("Push entries to external application (%0)", operation.getApplicationName()); - } + @Override + public String getText() { + return Localization.lang("Push entries to external application (%0)", operation.getApplicationName()); + } - @Override - public String getDescription() { - return ""; + @Override + public String getDescription() { + return ""; + } + }; } @Override - public void action() { + public void execute() { panel = frame.getCurrentBasePanel(); // Check if a BasePanel exists: From f4d76965f41671ef5169906b2a428c9f2c6d8fdd Mon Sep 17 00:00:00 2001 From: azhagparov Date: Sun, 7 Apr 2019 00:44:57 +0300 Subject: [PATCH 10/12] fix check style --- src/main/java/org/jabref/gui/BasePanel.java | 1 - .../java/org/jabref/gui/push/PushToApplicationAction.java | 6 +++--- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/src/main/java/org/jabref/gui/BasePanel.java b/src/main/java/org/jabref/gui/BasePanel.java index 1761b1cbda5..2ccfcdcc927 100644 --- a/src/main/java/org/jabref/gui/BasePanel.java +++ b/src/main/java/org/jabref/gui/BasePanel.java @@ -58,7 +58,6 @@ import org.jabref.gui.maintable.MainTableDataModel; import org.jabref.gui.mergeentries.MergeEntriesAction; import org.jabref.gui.mergeentries.MergeWithFetchedEntryAction; -import org.jabref.gui.push.PushToApplicationAction; import org.jabref.gui.specialfields.SpecialFieldDatabaseChangeListener; import org.jabref.gui.specialfields.SpecialFieldValueViewModel; import org.jabref.gui.specialfields.SpecialFieldViewModel; diff --git a/src/main/java/org/jabref/gui/push/PushToApplicationAction.java b/src/main/java/org/jabref/gui/push/PushToApplicationAction.java index e1e774cb316..e514a8fec55 100644 --- a/src/main/java/org/jabref/gui/push/PushToApplicationAction.java +++ b/src/main/java/org/jabref/gui/push/PushToApplicationAction.java @@ -5,14 +5,12 @@ import javax.swing.SwingUtilities; -import org.fxmisc.easybind.EasyBind; import org.jabref.Globals; import org.jabref.JabRefExecutorService; import org.jabref.gui.BasePanel; import org.jabref.gui.JabRefFrame; import org.jabref.gui.StateManager; import org.jabref.gui.actions.Action; -import org.jabref.gui.actions.BaseAction; import org.jabref.gui.actions.SimpleCommand; import org.jabref.gui.icon.JabRefIcon; import org.jabref.gui.keyboard.KeyBinding; @@ -20,6 +18,8 @@ import org.jabref.model.entry.BibEntry; import org.jabref.preferences.JabRefPreferences; +import org.fxmisc.easybind.EasyBind; + /** * An Action class representing the process of invoking a PushToApplication operation. */ @@ -48,7 +48,7 @@ private PushToApplication getLastUsedApplication(List pushAct return pushActions.get(0); } - public Action getActionInformation(){ + public Action getActionInformation() { return new Action() { @Override public Optional getIcon() { From 192eea87a00237085d1172cdf46bed978449552f Mon Sep 17 00:00:00 2001 From: azhagparov Date: Sun, 7 Apr 2019 00:51:32 +0300 Subject: [PATCH 11/12] delete action --- src/main/java/org/jabref/gui/actions/Actions.java | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/main/java/org/jabref/gui/actions/Actions.java b/src/main/java/org/jabref/gui/actions/Actions.java index e89ffca411e..f115eda059c 100644 --- a/src/main/java/org/jabref/gui/actions/Actions.java +++ b/src/main/java/org/jabref/gui/actions/Actions.java @@ -68,6 +68,5 @@ public enum Actions { CLEAR_READ_STATUS, SET_READ_STATUS_TO_READ, SET_READ_STATUS_TO_SKIMMED, - TOGGLE_RELEVANCE, - PUSH_TO_APPLICATION + TOGGLE_RELEVANCE } From 8c622cfbd5a5d3e4bd718fb54d112438ea43a973 Mon Sep 17 00:00:00 2001 From: azhagparov Date: Mon, 8 Apr 2019 21:34:37 +0300 Subject: [PATCH 12/12] put deprecated annotation on OldDatabaseCommandWrapper --- .../java/org/jabref/gui/actions/OldDatabaseCommandWrapper.java | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/main/java/org/jabref/gui/actions/OldDatabaseCommandWrapper.java b/src/main/java/org/jabref/gui/actions/OldDatabaseCommandWrapper.java index a752da3ce9c..58a702e4190 100644 --- a/src/main/java/org/jabref/gui/actions/OldDatabaseCommandWrapper.java +++ b/src/main/java/org/jabref/gui/actions/OldDatabaseCommandWrapper.java @@ -14,7 +14,10 @@ /** * A command that is only executable if a database is open. + * Deprecated use instead + * @see org.jabref.gui.actions.SimpleCommand */ +@Deprecated public class OldDatabaseCommandWrapper extends CommandBase { private static final Logger LOGGER = LoggerFactory.getLogger(OldDatabaseCommandWrapper.class);