From 0d2efc46c9a595786f46ce170e1bdd239b7827d8 Mon Sep 17 00:00:00 2001 From: Carl Christian Snethlage Date: Mon, 17 Feb 2020 20:45:10 +0100 Subject: [PATCH] Preview and XMPWriter --- src/main/java/org/jabref/gui/BasePanel.java | 7 ++-- src/main/java/org/jabref/gui/JabRefFrame.java | 8 +++-- .../EntryEditorPreviewChangeAction.java | 31 +++++++++++++++++ .../jabref/gui/exporter/WriteXMPAction.java | 33 +++++++++++-------- 4 files changed, 59 insertions(+), 20 deletions(-) create mode 100644 src/main/java/org/jabref/gui/entryeditor/EntryEditorPreviewChangeAction.java diff --git a/src/main/java/org/jabref/gui/BasePanel.java b/src/main/java/org/jabref/gui/BasePanel.java index efec6542ab0..767e6199dfa 100644 --- a/src/main/java/org/jabref/gui/BasePanel.java +++ b/src/main/java/org/jabref/gui/BasePanel.java @@ -40,7 +40,6 @@ import org.jabref.gui.edit.ReplaceStringAction; import org.jabref.gui.entryeditor.EntryEditor; import org.jabref.gui.exporter.SaveDatabaseAction; -import org.jabref.gui.exporter.WriteXMPAction; import org.jabref.gui.externalfiles.DownloadFullTextAction; import org.jabref.gui.externalfiletype.ExternalFileType; import org.jabref.gui.externalfiletype.ExternalFileTypes; @@ -355,16 +354,16 @@ private void setupActions() { new SpecialFieldViewModel(SpecialField.READ_STATUS, undoManager).getSpecialFieldAction(status, this.frame)); } - actions.put(Actions.NEXT_PREVIEW_STYLE, () -> { + /* actions.put(Actions.NEXT_PREVIEW_STYLE, () -> { entryEditor.nextPreviewStyle(); }); actions.put(Actions.PREVIOUS_PREVIEW_STYLE, () -> { entryEditor.previousPreviewStyle(); - }); + }); */ actions.put(Actions.SEND_AS_EMAIL, new SendAsEMailAction(frame)); - actions.put(Actions.WRITE_XMP, new WriteXMPAction(this)::execute); + // actions.put(Actions.WRITE_XMP, new WriteXMPAction(this)::execute); actions.put(Actions.ABBREVIATE_DEFAULT, new AbbreviateAction(this, AbbreviationType.DEFAULT)); actions.put(Actions.ABBREVIATE_MEDLINE, new AbbreviateAction(this, AbbreviationType.MEDLINE)); diff --git a/src/main/java/org/jabref/gui/JabRefFrame.java b/src/main/java/org/jabref/gui/JabRefFrame.java index 7fd1df234f9..6712bfd9777 100644 --- a/src/main/java/org/jabref/gui/JabRefFrame.java +++ b/src/main/java/org/jabref/gui/JabRefFrame.java @@ -62,11 +62,13 @@ import org.jabref.gui.edit.ManageKeywordsAction; import org.jabref.gui.edit.MassSetFieldsAction; import org.jabref.gui.edit.OpenBrowserAction; +import org.jabref.gui.entryeditor.EntryEditorPreviewChangeAction; import org.jabref.gui.exporter.ExportCommand; import org.jabref.gui.exporter.ExportToClipboardAction; import org.jabref.gui.exporter.ManageCustomExportsAction; import org.jabref.gui.exporter.SaveAllAction; import org.jabref.gui.exporter.SaveDatabaseAction; +import org.jabref.gui.exporter.WriteXMPAction; import org.jabref.gui.externalfiles.AutoLinkFilesAction; import org.jabref.gui.externalfiles.FindUnlinkedFilesAction; import org.jabref.gui.externalfiletype.EditExternalFileTypesAction; @@ -765,7 +767,7 @@ private MenuBar createMenu() { factory.createMenuItem(StandardActions.PARSE_TEX, new ParseTexAction(stateManager)), factory.createMenuItem(StandardActions.NEW_SUB_LIBRARY_FROM_AUX, new NewSubLibraryAction(this, stateManager)), factory.createMenuItem(StandardActions.FIND_UNLINKED_FILES, new FindUnlinkedFilesAction(this, stateManager)), - factory.createMenuItem(StandardActions.WRITE_XMP, new OldDatabaseCommandWrapper(Actions.WRITE_XMP, this, stateManager)), + factory.createMenuItem(StandardActions.WRITE_XMP, new WriteXMPAction(stateManager, dialogService)), factory.createMenuItem(StandardActions.COPY_LINKED_FILES, new CopyFilesAction(stateManager, this.getDialogService())), factory.createMenuItem(StandardActions.EXTRACT_BIBTEX, new ExtractBibtexAction(stateManager)), @@ -803,8 +805,8 @@ private MenuBar createMenu() { new SeparatorMenuItem(), - factory.createMenuItem(StandardActions.NEXT_PREVIEW_STYLE, new OldDatabaseCommandWrapper(Actions.NEXT_PREVIEW_STYLE, this, stateManager)), - factory.createMenuItem(StandardActions.PREVIOUS_PREVIEW_STYLE, new OldDatabaseCommandWrapper(Actions.PREVIOUS_PREVIEW_STYLE, this, stateManager)), + factory.createMenuItem(StandardActions.NEXT_PREVIEW_STYLE, new EntryEditorPreviewChangeAction(EntryEditorPreviewChangeAction.Direction.NEXT, this, stateManager)), + factory.createMenuItem(StandardActions.PREVIOUS_PREVIEW_STYLE, new EntryEditorPreviewChangeAction(EntryEditorPreviewChangeAction.Direction.PREVIOUS, this, stateManager)), new SeparatorMenuItem(), diff --git a/src/main/java/org/jabref/gui/entryeditor/EntryEditorPreviewChangeAction.java b/src/main/java/org/jabref/gui/entryeditor/EntryEditorPreviewChangeAction.java new file mode 100644 index 00000000000..d6f0ce47ea7 --- /dev/null +++ b/src/main/java/org/jabref/gui/entryeditor/EntryEditorPreviewChangeAction.java @@ -0,0 +1,31 @@ +package org.jabref.gui.entryeditor; + +import org.jabref.gui.JabRefFrame; +import org.jabref.gui.StateManager; +import org.jabref.gui.actions.SimpleCommand; + +import static org.jabref.gui.actions.ActionHelper.needsDatabase; + +public class EntryEditorPreviewChangeAction extends SimpleCommand { + + public enum Direction { PREVIOUS, NEXT } + + private final JabRefFrame frame; + private final Direction direction; + + public EntryEditorPreviewChangeAction(Direction direction, JabRefFrame frame, StateManager stateManager) { + this.frame = frame; + this.direction = direction; + + this.executable.bind(needsDatabase(stateManager)); + } + + @Override + public void execute() { + if (direction == Direction.NEXT) { + frame.getCurrentBasePanel().getEntryEditor().nextPreviewStyle(); + } else { + frame.getCurrentBasePanel().getEntryEditor().previousPreviewStyle(); + } + } +} diff --git a/src/main/java/org/jabref/gui/exporter/WriteXMPAction.java b/src/main/java/org/jabref/gui/exporter/WriteXMPAction.java index 043ceac725d..f275740f5a1 100644 --- a/src/main/java/org/jabref/gui/exporter/WriteXMPAction.java +++ b/src/main/java/org/jabref/gui/exporter/WriteXMPAction.java @@ -21,9 +21,9 @@ import javafx.stage.Stage; import org.jabref.Globals; -import org.jabref.gui.BasePanel; import org.jabref.gui.DialogService; import org.jabref.gui.FXDialog; +import org.jabref.gui.StateManager; import org.jabref.gui.actions.SimpleCommand; import org.jabref.gui.util.BackgroundTask; import org.jabref.logic.l10n.Localization; @@ -31,25 +31,28 @@ import org.jabref.model.database.BibDatabase; import org.jabref.model.entry.BibEntry; +import static org.jabref.gui.actions.ActionHelper.needsDatabase; + public class WriteXMPAction extends SimpleCommand { - private final BasePanel basePanel; - private OptionsDialog optionsDialog; + private final StateManager stateManager; + private final DialogService dialogService; - private Collection entries; + private OptionsDialog optionsDialog; private BibDatabase database; + private Collection entries; private boolean shouldContinue = true; - private int skipped; private int entriesChanged; private int errors; - private final DialogService dialogService; - public WriteXMPAction(BasePanel basePanel) { - this.basePanel = basePanel; - dialogService = basePanel.frame().getDialogService(); + public WriteXMPAction(StateManager stateManager, DialogService dialogService) { + this.stateManager = stateManager; + this.dialogService = dialogService; + + this.executable.bind(needsDatabase(stateManager)); } @Override @@ -60,9 +63,13 @@ public void execute() { } public void init() { - database = basePanel.getDatabase(); + if (stateManager.getActiveDatabase().isEmpty()) { + return; + } + + database = stateManager.getActiveDatabase().get().getDatabase(); // Get entries and check if it makes sense to perform this operation - entries = basePanel.getSelectedEntries(); + entries = stateManager.getSelectedEntries(); if (entries.isEmpty()) { @@ -97,7 +104,7 @@ public void init() { } private void writeXMP() { - if (!shouldContinue) { + if (!shouldContinue || stateManager.getActiveDatabase().isEmpty()) { return; } @@ -105,7 +112,7 @@ private void writeXMP() { // Make a list of all PDFs linked from this entry: List files = entry.getFiles().stream() .filter(file -> file.getFileType().equalsIgnoreCase("pdf")) - .map(file -> file.findIn(basePanel.getBibDatabaseContext(), Globals.prefs.getFilePreferences())) + .map(file -> file.findIn(stateManager.getActiveDatabase().get(), Globals.prefs.getFilePreferences())) .filter(Optional::isPresent) .map(Optional::get) .collect(Collectors.toList());