Skip to content

Commit cb4b011

Browse files
authored
Merge pull request #5218 from JabRef/preview-in-entryeditor
2 parents 8f463e4 + 66fcbb1 commit cb4b011

File tree

11 files changed

+59
-146
lines changed

11 files changed

+59
-146
lines changed

src/main/java/org/jabref/gui/BasePanel.java

Lines changed: 14 additions & 89 deletions
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,6 @@
5353
import org.jabref.gui.mergeentries.MergeEntriesAction;
5454
import org.jabref.gui.mergeentries.MergeWithFetchedEntryAction;
5555
import org.jabref.gui.preview.CitationStyleToClipboardWorker;
56-
import org.jabref.gui.preview.PreviewPanel;
5756
import org.jabref.gui.specialfields.SpecialFieldDatabaseChangeListener;
5857
import org.jabref.gui.specialfields.SpecialFieldValueViewModel;
5958
import org.jabref.gui.specialfields.SpecialFieldViewModel;
@@ -122,7 +121,6 @@ public class BasePanel extends StackPane {
122121
// Keeps track of the string dialog if it is open.
123122
private final Map<Actions, BaseAction> actions = new HashMap<>();
124123
private final SidePaneManager sidePaneManager;
125-
private final PreviewPanel preview;
126124
private final BasePanelPreferences preferences;
127125
private final ExternalFileTypes externalFileTypes;
128126

@@ -179,8 +177,6 @@ public BasePanel(JabRefFrame frame, BasePanelPreferences preferences, BibDatabas
179177
this.getDatabase().registerListener(new UpdateTimestampListener(Globals.prefs));
180178

181179
this.entryEditor = new EntryEditor(this, externalFileTypes);
182-
183-
this.preview = new PreviewPanel(getBibDatabaseContext(), this, dialogService, externalFileTypes, Globals.getKeyPrefs(), preferences.getPreviewPreferences());
184180
}
185181

186182
@Subscribe
@@ -263,8 +259,6 @@ private void setupActions() {
263259
// The action for copying selected entries.
264260
actions.put(Actions.COPY, this::copy);
265261

266-
actions.put(Actions.PRINT_PREVIEW, new PrintPreviewAction());
267-
268262
actions.put(Actions.CUT, this::cut);
269263

270264
actions.put(Actions.DELETE, () -> delete(false));
@@ -358,19 +352,6 @@ private void setupActions() {
358352
new SpecialFieldViewModel(SpecialField.READ_STATUS, undoManager).getSpecialFieldAction(status, this.frame));
359353
}
360354

361-
actions.put(Actions.TOGGLE_PREVIEW, () -> {
362-
PreviewPreferences previewPreferences = Globals.prefs.getPreviewPreferences();
363-
boolean enabled = !previewPreferences.isPreviewPanelEnabled();
364-
PreviewPreferences newPreviewPreferences = previewPreferences.getBuilder()
365-
.withPreviewPanelEnabled(enabled)
366-
.build();
367-
Globals.prefs.storePreviewPreferences(newPreviewPreferences);
368-
setPreviewActive(enabled);
369-
});
370-
371-
actions.put(Actions.NEXT_PREVIEW_STYLE, this::nextPreviewStyle);
372-
actions.put(Actions.PREVIOUS_PREVIEW_STYLE, this::previousPreviewStyle);
373-
374355
actions.put(Actions.SEND_AS_EMAIL, new SendAsEMailAction(frame));
375356

376357
actions.put(Actions.WRITE_XMP, new WriteXMPAction(this)::execute);
@@ -679,7 +660,6 @@ private void createMainTable() {
679660
.stream()
680661
.findFirst()
681662
.ifPresent(entry -> {
682-
preview.setEntry(entry);
683663
entryEditor.setEntry(entry);
684664
}));
685665

@@ -816,9 +796,7 @@ private void instantiateSearchAutoCompleter() {
816796
}
817797

818798
private void adjustSplitter() {
819-
if (mode == BasePanelMode.SHOWING_PREVIEW) {
820-
splitPane.setDividerPositions(Globals.prefs.getPreviewPreferences().getPreviewPanelDividerPosition().doubleValue());
821-
} else if (mode == BasePanelMode.SHOWING_EDITOR) {
799+
if (mode == BasePanelMode.SHOWING_EDITOR) {
822800
splitPane.setDividerPositions(preferences.getEntryEditorDividerPosition());
823801
}
824802
}
@@ -844,17 +822,11 @@ public void showAndEdit(BibEntry entry) {
844822
}
845823

846824
private void showBottomPane(BasePanelMode newMode) {
847-
Node pane;
848-
switch (newMode) {
849-
case SHOWING_PREVIEW:
850-
pane = preview;
851-
break;
852-
case SHOWING_EDITOR:
853-
pane = entryEditor;
854-
break;
855-
default:
856-
throw new UnsupportedOperationException("new mode not recognized: " + newMode.name());
825+
if (newMode != BasePanelMode.SHOWING_EDITOR) {
826+
throw new UnsupportedOperationException("new mode not recognized: " + newMode.name());
857827
}
828+
Node pane = entryEditor;
829+
858830
if (splitPane.getItems().size() == 2) {
859831
splitPane.getItems().set(1, pane);
860832
} else {
@@ -870,23 +842,6 @@ private void showAndEdit() {
870842
}
871843
}
872844

873-
/**
874-
* Sets the given preview panel as the bottom component in the split panel. Updates the mode to SHOWING_PREVIEW.
875-
*
876-
* @param entry The entry to show in the preview.
877-
*/
878-
private void showPreview(BibEntry entry) {
879-
showBottomPane(BasePanelMode.SHOWING_PREVIEW);
880-
881-
preview.setEntry(entry);
882-
}
883-
884-
private void showPreview() {
885-
if (!mainTable.getSelectedEntries().isEmpty()) {
886-
showPreview(mainTable.getSelectedEntries().get(0));
887-
}
888-
}
889-
890845
public void nextPreviewStyle() {
891846
cyclePreview(Globals.prefs.getPreviewPreferences().getPreviewCyclePosition() + 1);
892847
}
@@ -901,16 +856,15 @@ private void cyclePreview(int newPosition) {
901856
.withPreviewCyclePosition(newPosition)
902857
.build();
903858
Globals.prefs.storePreviewPreferences(previewPreferences);
904-
905-
preview.updateLayout(previewPreferences);
859+
entryEditor.updatePreviewInTabs(previewPreferences);
906860
}
907861

908862
/**
909863
* Removes the bottom component.
910864
*/
911865
public void closeBottomPane() {
912866
mode = BasePanelMode.SHOWING_NOTHING;
913-
splitPane.getItems().removeAll(entryEditor, preview);
867+
splitPane.getItems().remove(entryEditor);
914868
}
915869

916870
/**
@@ -932,23 +886,17 @@ public void selectNextEntry() {
932886
/**
933887
* This method is called from an EntryEditor when it should be closed. We relay to the selection listener, which
934888
* takes care of the rest.
935-
*
936-
* @param editor The entry editor to close.
937889
*/
938-
public void entryEditorClosing(EntryEditor editor) {
939-
if (Globals.prefs.getPreviewPreferences().isPreviewPanelEnabled()) {
940-
showPreview(editor.getEntry());
941-
} else {
942-
closeBottomPane();
943-
}
890+
public void entryEditorClosing() {
891+
closeBottomPane();
944892
mainTable.requestFocus();
945893
}
946894

947895
/**
948-
* Closes the entry editor or preview panel if it is showing the given entry.
896+
* Closes the entry editor if it is showing the given entry.
949897
*/
950-
public void ensureNotShowingBottomPanel(BibEntry entry) {
951-
if (((mode == BasePanelMode.SHOWING_EDITOR) && (entryEditor.getEntry() == entry)) || ((mode == BasePanelMode.SHOWING_PREVIEW))) {
898+
private void ensureNotShowingBottomPanel(BibEntry entry) {
899+
if (((mode == BasePanelMode.SHOWING_EDITOR) && (entryEditor.getEntry() == entry))) {
952900
closeBottomPane();
953901
}
954902
}
@@ -996,7 +944,7 @@ public BibDatabase getDatabase() {
996944
return bibDatabaseContext.getDatabase();
997945
}
998946

999-
public boolean showDeleteConfirmationDialog(int numberOfEntries) {
947+
private boolean showDeleteConfirmationDialog(int numberOfEntries) {
1000948
if (Globals.prefs.getBoolean(JabRefPreferences.CONFIRM_DELETE)) {
1001949
String title = Localization.lang("Delete entry");
1002950
String message = Localization.lang("Really delete the selected entry?");
@@ -1029,13 +977,7 @@ private void saveDividerLocation(Number position) {
1029977
return;
1030978
}
1031979

1032-
if (mode == BasePanelMode.SHOWING_PREVIEW) {
1033-
PreviewPreferences previewPreferences = Globals.prefs.getPreviewPreferences()
1034-
.getBuilder()
1035-
.withPreviewPanelDividerPosition(position)
1036-
.build();
1037-
Globals.prefs.storePreviewPreferences(previewPreferences);
1038-
} else if (mode == BasePanelMode.SHOWING_EDITOR) {
980+
if (mode == BasePanelMode.SHOWING_EDITOR) {
1039981
preferences.setEntryEditorDividerPosition(position.doubleValue());
1040982
}
1041983
}
@@ -1093,14 +1035,6 @@ public String formatOutputMessage(String start, int count) {
10931035
return String.format("%s %d %s.", start, count, (count > 1 ? Localization.lang("entries") : Localization.lang("entry")));
10941036
}
10951037

1096-
private void setPreviewActive(boolean enabled) {
1097-
if (enabled) {
1098-
showPreview();
1099-
} else {
1100-
preview.close();
1101-
}
1102-
}
1103-
11041038
public CountingUndoManager getUndoManager() {
11051039
return undoManager;
11061040
}
@@ -1353,13 +1287,4 @@ public void action() {
13531287
markChangedOrUnChanged();
13541288
}
13551289
}
1356-
1357-
private class PrintPreviewAction implements BaseAction {
1358-
1359-
@Override
1360-
public void action() {
1361-
showPreview();
1362-
preview.print();
1363-
}
1364-
}
13651290
}

src/main/java/org/jabref/gui/BasePanelMode.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@
66

77
public enum BasePanelMode {
88
SHOWING_NOTHING,
9-
SHOWING_PREVIEW,
109
SHOWING_EDITOR,
1110
WILL_SHOW_EDITOR
1211
}

src/main/java/org/jabref/gui/JabRefFrame.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -808,7 +808,6 @@ private MenuBar createMenu() {
808808

809809
new SeparatorMenuItem(),
810810

811-
factory.createCheckMenuItem(StandardActions.TOGGLE_PREVIEW, new OldDatabaseCommandWrapper(Actions.TOGGLE_PREVIEW, this, stateManager), Globals.prefs.getPreviewPreferences().isPreviewPanelEnabled()),
812811
factory.createMenuItem(StandardActions.NEXT_PREVIEW_STYLE, new OldDatabaseCommandWrapper(Actions.NEXT_PREVIEW_STYLE, this, stateManager)),
813812
factory.createMenuItem(StandardActions.PREVIOUS_PREVIEW_STYLE, new OldDatabaseCommandWrapper(Actions.PREVIOUS_PREVIEW_STYLE, this, stateManager)),
814813

src/main/java/org/jabref/gui/actions/Actions.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,6 @@ public enum Actions {
4949
SELECT_ALL,
5050
SEND_AS_EMAIL,
5151
TOGGLE_GROUPS,
52-
TOGGLE_PREVIEW,
5352
UNABBREVIATE,
5453
UNDO,
5554
WRITE_XMP,

src/main/java/org/jabref/gui/actions/StandardActions.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -113,7 +113,6 @@ public enum StandardActions implements Action {
113113

114114
EDIT_ENTRY(Localization.lang("Open entry editor"), IconTheme.JabRefIcons.EDIT_ENTRY, KeyBinding.EDIT_ENTRY),
115115
SHOW_PDF_VIEWER(Localization.lang("Open document viewer"), IconTheme.JabRefIcons.PDF_FILE),
116-
TOGGLE_PREVIEW(Localization.lang("Entry preview"), IconTheme.JabRefIcons.TOGGLE_ENTRY_PREVIEW, KeyBinding.TOGGLE_ENTRY_PREVIEW),
117116
NEXT_PREVIEW_STYLE(Localization.lang("Next citation style"), KeyBinding.NEXT_PREVIEW_LAYOUT),
118117
PREVIOUS_PREVIEW_STYLE(Localization.lang("Previous citation style"), KeyBinding.PREVIOUS_PREVIEW_LAYOUT),
119118
SELECT_ALL(Localization.lang("Select all"), KeyBinding.SELECT_ALL),

src/main/java/org/jabref/gui/entryeditor/EntryEditor.java

Lines changed: 23 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,7 @@
5050
import org.jabref.model.entry.field.Field;
5151
import org.jabref.model.util.FileUpdateMonitor;
5252
import org.jabref.preferences.PreferencesService;
53+
import org.jabref.preferences.PreviewPreferences;
5354

5455
import com.airhacks.afterburner.views.ViewLoader;
5556
import org.fxmisc.easybind.EasyBind;
@@ -88,6 +89,7 @@ public class EntryEditor extends BorderPane {
8889
@Inject private StateManager stateManager;
8990
@Inject private FileUpdateMonitor fileMonitor;
9091
@Inject private CountingUndoManager undoManager;
92+
private final List<EntryEditorTab> entryEditorTabs = new LinkedList<>();
9193

9294
public EntryEditor(BasePanel panel, ExternalFileTypes externalFileTypes) {
9395
this.panel = panel;
@@ -235,7 +237,7 @@ private void setupKeyBindings() {
235237

236238
@FXML
237239
public void close() {
238-
panel.entryEditorClosing(EntryEditor.this);
240+
panel.entryEditorClosing();
239241
}
240242

241243
@FXML
@@ -261,40 +263,39 @@ private void navigateToNextEntry() {
261263
}
262264

263265
private List<EntryEditorTab> createTabs() {
264-
List<EntryEditorTab> tabs = new LinkedList<>();
265266

266267
// Required fields
267-
tabs.add(new RequiredFieldsTab(databaseContext, panel.getSuggestionProviders(), undoManager, dialogService));
268+
entryEditorTabs.add(new RequiredFieldsTab(databaseContext, panel.getSuggestionProviders(), undoManager, dialogService));
268269

269270
// Optional fields
270-
tabs.add(new OptionalFieldsTab(databaseContext, panel.getSuggestionProviders(), undoManager, dialogService));
271-
tabs.add(new OptionalFields2Tab(databaseContext, panel.getSuggestionProviders(), undoManager, dialogService));
272-
tabs.add(new DeprecatedFieldsTab(databaseContext, panel.getSuggestionProviders(), undoManager, dialogService));
271+
entryEditorTabs.add(new OptionalFieldsTab(databaseContext, panel.getSuggestionProviders(), undoManager, dialogService));
272+
entryEditorTabs.add(new OptionalFields2Tab(databaseContext, panel.getSuggestionProviders(), undoManager, dialogService));
273+
entryEditorTabs.add(new DeprecatedFieldsTab(databaseContext, panel.getSuggestionProviders(), undoManager, dialogService));
273274

274275
// Other fields
275-
tabs.add(new OtherFieldsTab(databaseContext, panel.getSuggestionProviders(), undoManager,
276+
entryEditorTabs.add(new OtherFieldsTab(databaseContext, panel.getSuggestionProviders(), undoManager,
276277
entryEditorPreferences.getCustomTabFieldNames(), dialogService));
277278

278279
// General fields from preferences
279280
for (Map.Entry<String, Set<Field>> tab : entryEditorPreferences.getEntryEditorTabList().entrySet()) {
280-
tabs.add(new UserDefinedFieldsTab(tab.getKey(), tab.getValue(), databaseContext, panel.getSuggestionProviders(), undoManager, dialogService));
281+
entryEditorTabs.add(new UserDefinedFieldsTab(tab.getKey(), tab.getValue(), databaseContext, panel.getSuggestionProviders(), undoManager, dialogService));
281282
}
282283

283284
// Special tabs
284-
tabs.add(new MathSciNetTab());
285-
tabs.add(new FileAnnotationTab(panel.getAnnotationCache()));
286-
tabs.add(new RelatedArticlesTab(this, entryEditorPreferences, dialogService));
285+
entryEditorTabs.add(new MathSciNetTab());
286+
entryEditorTabs.add(new FileAnnotationTab(panel.getAnnotationCache()));
287+
entryEditorTabs.add(new RelatedArticlesTab(this, entryEditorPreferences, dialogService));
287288

288289
// Source tab
289290
sourceTab = new SourceTab(databaseContext, undoManager,
290291
entryEditorPreferences.getLatexFieldFormatterPreferences(),
291292
entryEditorPreferences.getImportFormatPreferences(), fileMonitor, dialogService, stateManager);
292-
tabs.add(sourceTab);
293+
entryEditorTabs.add(sourceTab);
293294

294295
// LaTeX citations tab
295-
tabs.add(new LatexCitationsTab(databaseContext, preferencesService, taskExecutor, dialogService));
296+
entryEditorTabs.add(new LatexCitationsTab(databaseContext, preferencesService, taskExecutor, dialogService));
296297

297-
return tabs;
298+
return entryEditorTabs;
298299
}
299300

300301
private void recalculateVisibleTabs() {
@@ -402,4 +403,12 @@ public void setFocusToField(Field field) {
402403
}
403404
});
404405
}
406+
407+
public void updatePreviewInTabs(PreviewPreferences previewPreferences) {
408+
for (Tab tab : this.entryEditorTabs) {
409+
if (tab instanceof FieldsEditorTab) {
410+
((FieldsEditorTab) tab).previewPanel.updateLayout(previewPreferences);
411+
}
412+
}
413+
}
405414
}

0 commit comments

Comments
 (0)