Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add source to changes dialog #9533

Merged
merged 37 commits into from
Feb 7, 2023
Merged
Show file tree
Hide file tree
Changes from 3 commits
Commits
Show all changes
37 commits
Select commit Hold shift + click to select a range
633ac6e
Show source and preview for entry changes/deleted/added
Siedlerchr Jan 5, 2023
8b3d26d
remove preview from EntryChanged, better to use the diff dialog
Siedlerchr Jan 5, 2023
f00bbe1
add changelog entry and make readonly
Siedlerchr Jan 5, 2023
6d04e51
add padding, show previe and source also for entry change
Siedlerchr Jan 5, 2023
a194e2b
spaces...
Siedlerchr Jan 5, 2023
a4abb6d
remove from permit
Siedlerchr Jan 5, 2023
3168b78
Hide and show rows
Siedlerchr Jan 6, 2023
3511420
fix checkstlye
Siedlerchr Jan 6, 2023
a2649c8
Show/hide indifferent field rows
HoussemNasri Jan 7, 2023
15b1eff
Merge branch 'main' into addSourceToChangesDialog
calixtus Jan 9, 2023
c4de530
Update FieldRowView.java
HoussemNasri Jan 16, 2023
d49b3ae
Merge remote-tracking branch 'upstream/main' into addSourceToChangesD…
Siedlerchr Jan 16, 2023
fe2385e
checkstyle
Siedlerchr Jan 16, 2023
d2b1f63
Add SplitPane to show both entries with preview together
Siedlerchr Jan 17, 2023
1312241
Merge remote-tracking branch 'upstream/main' into addSourceToChangesD…
Siedlerchr Jan 17, 2023
fab0023
checkstyle
Siedlerchr Jan 17, 2023
f9400a3
Merge remote-tracking branch 'upstream/main' into addSourceToChangesD…
Siedlerchr Jan 21, 2023
c35de7b
Change boolean logic, default show all fields
Siedlerchr Jan 21, 2023
ce792af
remove virtualized scrollpane breaks mouse scrolling
Siedlerchr Jan 21, 2023
ae715ed
checkstyle
Siedlerchr Jan 21, 2023
1d899b6
Add TODO for optimization
HoussemNasri Jan 21, 2023
175e2ff
Fix typo
HoussemNasri Jan 21, 2023
cfa9e40
row.show() reads better than row.showRow()
HoussemNasri Jan 21, 2023
4dd0b0b
Refactor code
HoussemNasri Jan 21, 2023
ef10a66
Merge remote-tracking branch 'upstream/main' into addSourceToChangesD…
Siedlerchr Jan 28, 2023
e970e88
Create PreviewView in advance at least for added and removed
Siedlerchr Jan 28, 2023
cc418bf
checkstyle
Siedlerchr Jan 28, 2023
49f8b38
Merge remote-tracking branch 'upstream/main' into addSourceToChangesD…
Siedlerchr Feb 2, 2023
4e2336a
Add label header for tab pane
Siedlerchr Feb 3, 2023
2efa489
add css class
Siedlerchr Feb 4, 2023
2a3a341
Store value of chekcbox in prefs
Siedlerchr Feb 4, 2023
22899e7
remove tab chars
Siedlerchr Feb 4, 2023
ef6cfc3
make prefs inject private
Siedlerchr Feb 4, 2023
74a653c
Update src/main/java/org/jabref/gui/collab/entrychange/PreviewWithSou…
Siedlerchr Feb 5, 2023
771b032
remove empty line
Siedlerchr Feb 7, 2023
0291ed3
Merge remote-tracking branch 'upstream/addSourceToChangesDialog' into…
Siedlerchr Feb 7, 2023
93dd7cf
empty line
Siedlerchr Feb 7, 2023
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ Note that this project **does not** adhere to [Semantic Versioning](http://semve
- We added a dropdown menu to let users change the library they want to import into during import. [#6177](https://github.com/JabRef/jabref/issues/6177)
- We added the possibility to add/remove a preview style from the selected list using a double click. [#9490](https://github.com/JabRef/jabref/issues/9490)
- We added the option to define fields as "multine" directly in the custom entry types dialog. [#6448](https://github.com/JabRef/jabref/issues/6448)

- We added a field showing the BibTeX/biblatex source for added and deleted entries in the "External Changes Resolver" dialog. [#9509](https://github.com/JabRef/jabref/issues/9509)

### Changed

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,8 @@

import javafx.scene.layout.AnchorPane;

import org.jabref.gui.collab.entryadd.EntryAddDetailsView;
import org.jabref.gui.collab.entrychange.EntryChangeDetailsView;
import org.jabref.gui.collab.entrydelete.EntryDeleteDetailsView;
import org.jabref.gui.collab.entrychange.EntryWithPreviewAndSourceDetailsView;
import org.jabref.gui.collab.groupchange.GroupChangeDetailsView;
import org.jabref.gui.collab.metedatachange.MetadataChangeDetailsView;
import org.jabref.gui.collab.preamblechange.PreambleChangeDetailsView;
Expand All @@ -13,5 +12,5 @@
import org.jabref.gui.collab.stringdelete.BibTexStringDeleteDetailsView;
import org.jabref.gui.collab.stringrename.BibTexStringRenameDetailsView;

public sealed abstract class DatabaseChangeDetailsView extends AnchorPane permits EntryAddDetailsView, EntryChangeDetailsView, EntryDeleteDetailsView, GroupChangeDetailsView, MetadataChangeDetailsView, PreambleChangeDetailsView, BibTexStringAddDetailsView, BibTexStringChangeDetailsView, BibTexStringDeleteDetailsView, BibTexStringRenameDetailsView {
public sealed abstract class DatabaseChangeDetailsView extends AnchorPane permits EntryWithPreviewAndSourceDetailsView, EntryChangeDetailsView, GroupChangeDetailsView, MetadataChangeDetailsView, PreambleChangeDetailsView, BibTexStringAddDetailsView, BibTexStringChangeDetailsView, BibTexStringDeleteDetailsView, BibTexStringRenameDetailsView {
}
Original file line number Diff line number Diff line change
Expand Up @@ -3,11 +3,10 @@
import org.jabref.gui.DialogService;
import org.jabref.gui.StateManager;
import org.jabref.gui.collab.entryadd.EntryAdd;
import org.jabref.gui.collab.entryadd.EntryAddDetailsView;
import org.jabref.gui.collab.entrychange.EntryChange;
import org.jabref.gui.collab.entrychange.EntryChangeDetailsView;
import org.jabref.gui.collab.entrychange.EntryWithPreviewAndSourceDetailsView;
import org.jabref.gui.collab.entrydelete.EntryDelete;
import org.jabref.gui.collab.entrydelete.EntryDeleteDetailsView;
import org.jabref.gui.collab.groupchange.GroupChange;
import org.jabref.gui.collab.groupchange.GroupChangeDetailsView;
import org.jabref.gui.collab.metedatachange.MetadataChange;
Expand Down Expand Up @@ -46,9 +45,9 @@ public DatabaseChangeDetailsView create(DatabaseChange databaseChange) {
if (databaseChange instanceof EntryChange entryChange) {
return new EntryChangeDetailsView(entryChange, databaseContext, dialogService, stateManager, themeManager, preferencesService);
} else if (databaseChange instanceof EntryAdd entryAdd) {
return new EntryAddDetailsView(entryAdd, databaseContext, dialogService, stateManager, themeManager, preferencesService);
return new EntryWithPreviewAndSourceDetailsView(entryAdd.getAddedEntry(), databaseContext, dialogService, stateManager, themeManager, preferencesService);
} else if (databaseChange instanceof EntryDelete entryDelete) {
return new EntryDeleteDetailsView(entryDelete, databaseContext, dialogService, stateManager, themeManager, preferencesService);
return new EntryWithPreviewAndSourceDetailsView(entryDelete.getDeletedEntry(), databaseContext, dialogService, stateManager, themeManager, preferencesService);
} else if (databaseChange instanceof BibTexStringAdd stringAdd) {
return new BibTexStringAddDetailsView(stringAdd);
} else if (databaseChange instanceof BibTexStringDelete stringDelete) {
Expand Down

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -3,22 +3,12 @@
import org.jabref.gui.DialogService;
import org.jabref.gui.StateManager;
import org.jabref.gui.collab.DatabaseChangeDetailsView;
import org.jabref.gui.preview.PreviewViewer;
import org.jabref.gui.theme.ThemeManager;
import org.jabref.model.database.BibDatabaseContext;
import org.jabref.preferences.PreferencesService;

public final class EntryChangeDetailsView extends DatabaseChangeDetailsView {
public EntryChangeDetailsView(EntryChange entryChange, BibDatabaseContext bibDatabaseContext, DialogService dialogService, StateManager stateManager, ThemeManager themeManager, PreferencesService preferencesService) {
PreviewViewer previewViewer = new PreviewViewer(bibDatabaseContext, dialogService, stateManager, themeManager);
previewViewer.setLayout(preferencesService.getPreviewPreferences().getSelectedPreviewLayout());
previewViewer.setEntry(entryChange.getNewEntry());

setLeftAnchor(previewViewer, 8d);
setTopAnchor(previewViewer, 8d);
setRightAnchor(previewViewer, 8d);
setBottomAnchor(previewViewer, 8d);

getChildren().setAll(previewViewer);
// TOOD: Show maybe diff of preview and source?
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why is the Preview removed in the change details view? Looks like a regression to me

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

For entry change I thought about showing the diff in the preview or the source. No idea how this would work.

On the other hand the current status with the Preview was confusing because it was not clear to the user which entry is shown in the preview

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

And for entry change, the merge dialog is basically showing all relevant info

}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,73 @@
package org.jabref.gui.collab.entrychange;

import java.io.IOException;
import java.io.StringWriter;

import javafx.scene.control.Tab;
import javafx.scene.control.TabPane;

import org.jabref.gui.DialogService;
import org.jabref.gui.Globals;
import org.jabref.gui.StateManager;
import org.jabref.gui.collab.DatabaseChangeDetailsView;
import org.jabref.gui.preview.PreviewViewer;
import org.jabref.gui.theme.ThemeManager;
import org.jabref.logic.bibtex.BibEntryWriter;
import org.jabref.logic.bibtex.FieldWriter;
import org.jabref.logic.bibtex.FieldWriterPreferences;
import org.jabref.logic.exporter.BibWriter;
import org.jabref.logic.l10n.Localization;
import org.jabref.logic.util.OS;
import org.jabref.model.database.BibDatabaseContext;
import org.jabref.model.database.BibDatabaseMode;
import org.jabref.model.entry.BibEntry;
import org.jabref.preferences.PreferencesService;

import org.fxmisc.flowless.VirtualizedScrollPane;
import org.fxmisc.richtext.CodeArea;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public final class EntryWithPreviewAndSourceDetailsView extends DatabaseChangeDetailsView {

private static final Logger LOGGER = LoggerFactory.getLogger(EntryWithPreviewAndSourceDetailsView.class);

public EntryWithPreviewAndSourceDetailsView(BibEntry entry, BibDatabaseContext bibDatabaseContext, DialogService dialogService, StateManager stateManager, ThemeManager themeManager, PreferencesService preferencesService) {
PreviewViewer previewViewer = new PreviewViewer(bibDatabaseContext, dialogService, stateManager, themeManager);
previewViewer.setLayout(preferencesService.getPreviewPreferences().getSelectedPreviewLayout());
previewViewer.setEntry(entry);

CodeArea codeArea = new CodeArea();
codeArea.setWrapText(true);
codeArea.setDisable(true);

TabPane tabPanePreviewCode = new TabPane();
Tab previewTab = new Tab(Localization.lang("Entry preview"), previewViewer);

try {
codeArea.appendText(getSourceString(entry, bibDatabaseContext.getMode(), preferencesService.getFieldWriterPreferences()));
} catch (IOException e) {
LOGGER.error("Error getting Bibtex", entry);
}
codeArea.setEditable(true);
VirtualizedScrollPane<CodeArea> scrollableCodeArea = new VirtualizedScrollPane<>(codeArea);
Tab codeTab = new Tab(Localization.lang("%0 source", bibDatabaseContext.getMode().getFormattedName()), scrollableCodeArea);

tabPanePreviewCode.getTabs().addAll(previewTab, codeTab);

setLeftAnchor(tabPanePreviewCode, 8d);
setTopAnchor(tabPanePreviewCode, 8d);
setRightAnchor(tabPanePreviewCode, 8d);
setBottomAnchor(tabPanePreviewCode, 8d);

getChildren().setAll(tabPanePreviewCode);
}

private String getSourceString(BibEntry entry, BibDatabaseMode type, FieldWriterPreferences fieldWriterPreferences) throws IOException {
StringWriter writer = new StringWriter();
BibWriter bibWriter = new BibWriter(writer, OS.NEWLINE);
FieldWriter fieldWriter = FieldWriter.buildIgnoreHashes(fieldWriterPreferences);
new BibEntryWriter(fieldWriter, Globals.entryTypesManager).write(entry, bibWriter, type);
return writer.toString();
}
}

This file was deleted.