Skip to content

Commit

Permalink
Fix missing external changes resolver dialog scrollbar (#11415)
Browse files Browse the repository at this point in the history
* Make external changes resolver dialog scrollable for metadata

ref: #11220

* Wrap group change details text to fit view

ref: #11220

* Replace if construct by pattern matching for DatabaseChangeView creation in DatabaseChangeDetailsViewFactory

ref: #11220

* Define common parameter for node anchoring in DatabaseChangeDetailsView

ref: #11220
  • Loading branch information
alexandre-cremieux authored Jun 23, 2024
1 parent 7e4e7d3 commit 3401b71
Show file tree
Hide file tree
Showing 11 changed files with 79 additions and 66 deletions.
3 changes: 3 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@ Note that this project **does not** adhere to [Semantic Versioning](https://semv
- We slightly improved the duplicate check if ISBNs are present. [#8885](https://github.com/JabRef/jabref/issues/8885)
- JabRef no longer downloads HTML files of websites when a PDF was not found. [#10149](https://github.com/JabRef/jabref/issues/10149)
- We added the HTTP message (in addition to the response code) if an error is encountered. [#11341](https://github.com/JabRef/jabref/pull/11341)
- We made label wrap text to fit view size when reviewing external group changes. [#11220](https://github.com/JabRef/jabref/issues/11220)

### Fixed

Expand All @@ -49,6 +50,8 @@ Note that this project **does not** adhere to [Semantic Versioning](https://semv
- We fixed an issue where the entry editor context menu was not shown correctly when JabRef is opened on a second, extended screen [#11323](https://github.com/JabRef/jabref/issues/11323), [#11174](https://github.com/JabRef/jabref/issues/11174)
- We fixed an issue where the value of "Override default font settings" was not applied on startup [#11344](https://github.com/JabRef/jabref/issues/11344)
- We fixed an issue when "Library changed on disk" appeared after a save by JabRef. [#4877](https://github.com/JabRef/jabref/issues/4877)
- We fixed an issue where the value of "Override default font settings" was not applied on startup [#11344](https://github.com/JabRef/jabref/issues/11344)
- We fixed an issue where DatabaseChangeDetailsView was not scrollable when reviewing external metadata changes [#11220](https://github.com/JabRef/jabref/issues/11220)

### Removed

Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package org.jabref.gui.collab;

import javafx.scene.Node;
import javafx.scene.layout.AnchorPane;

import org.jabref.gui.collab.entrychange.EntryChangeDetailsView;
Expand All @@ -12,5 +13,32 @@
import org.jabref.gui.collab.stringdelete.BibTexStringDeleteDetailsView;
import org.jabref.gui.collab.stringrename.BibTexStringRenameDetailsView;

public sealed abstract class DatabaseChangeDetailsView extends AnchorPane permits EntryWithPreviewAndSourceDetailsView, GroupChangeDetailsView, MetadataChangeDetailsView, PreambleChangeDetailsView, BibTexStringAddDetailsView, BibTexStringChangeDetailsView, BibTexStringDeleteDetailsView, BibTexStringRenameDetailsView, EntryChangeDetailsView {
public sealed abstract class DatabaseChangeDetailsView extends AnchorPane permits
EntryWithPreviewAndSourceDetailsView,
GroupChangeDetailsView,
MetadataChangeDetailsView,
PreambleChangeDetailsView,
BibTexStringAddDetailsView,
BibTexStringChangeDetailsView,
BibTexStringDeleteDetailsView,
BibTexStringRenameDetailsView,
EntryChangeDetailsView {

private static Double ANCHOR_PANE_OFFSET = 8D;

/**
* Set left, top, right, bottom anchors based on common offset parameter for the given child
* and attach it to children.
*
* @param child the child node of the implementation
* @see AnchorPane#getChildren()
* @see javafx.collections.ObservableList#setAll(Object[])
*/
protected void setAllAnchorsAndAttachChild(Node child) {
setLeftAnchor(child, ANCHOR_PANE_OFFSET);
setTopAnchor(child, ANCHOR_PANE_OFFSET);
setRightAnchor(child, ANCHOR_PANE_OFFSET);
setBottomAnchor(child, ANCHOR_PANE_OFFSET);
this.getChildren().setAll(child);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -57,28 +57,43 @@ public DatabaseChangeDetailsViewFactory(BibDatabaseContext databaseContext,
}

public DatabaseChangeDetailsView create(DatabaseChange databaseChange) {
// TODO: Use Pattern Matching for switch once it's out of preview
if (databaseChange instanceof EntryChange entryChange) {
return new EntryChangeDetailsView(entryChange.getOldEntry(), entryChange.getNewEntry(), databaseContext, dialogService, stateManager, themeManager, preferencesService, entryTypesManager, previewViewer, taskExecutor);
} else if (databaseChange instanceof EntryAdd entryAdd) {
return new EntryWithPreviewAndSourceDetailsView(entryAdd.getAddedEntry(), databaseContext, preferencesService, entryTypesManager, previewViewer);
} else if (databaseChange instanceof EntryDelete entryDelete) {
return new EntryWithPreviewAndSourceDetailsView(entryDelete.getDeletedEntry(), databaseContext, preferencesService, entryTypesManager, previewViewer);
} else if (databaseChange instanceof BibTexStringAdd stringAdd) {
return new BibTexStringAddDetailsView(stringAdd);
} else if (databaseChange instanceof BibTexStringDelete stringDelete) {
return new BibTexStringDeleteDetailsView(stringDelete);
} else if (databaseChange instanceof BibTexStringChange stringChange) {
return new BibTexStringChangeDetailsView(stringChange);
} else if (databaseChange instanceof BibTexStringRename stringRename) {
return new BibTexStringRenameDetailsView(stringRename);
} else if (databaseChange instanceof MetadataChange metadataChange) {
return new MetadataChangeDetailsView(metadataChange, preferencesService.getCitationKeyPatternPreferences().getKeyPatterns());
} else if (databaseChange instanceof GroupChange groupChange) {
return new GroupChangeDetailsView(groupChange);
} else if (databaseChange instanceof PreambleChange preambleChange) {
return new PreambleChangeDetailsView(preambleChange);
}
throw new UnsupportedOperationException("Cannot preview the given change: " + databaseChange.getName());
return switch (databaseChange) {
case EntryChange entryChange -> new EntryChangeDetailsView(
entryChange.getOldEntry(),
entryChange.getNewEntry(),
databaseContext,
dialogService,
stateManager,
themeManager,
preferencesService,
entryTypesManager,
previewViewer,
taskExecutor
);
case EntryAdd entryAdd -> new EntryWithPreviewAndSourceDetailsView(
entryAdd.getAddedEntry(),
databaseContext,
preferencesService,
entryTypesManager,
previewViewer
);
case EntryDelete entryDelete -> new EntryWithPreviewAndSourceDetailsView(
entryDelete.getDeletedEntry(),
databaseContext,
preferencesService,
entryTypesManager,
previewViewer
);
case BibTexStringAdd stringAdd -> new BibTexStringAddDetailsView(stringAdd);
case BibTexStringDelete stringDelete -> new BibTexStringDeleteDetailsView(stringDelete);
case BibTexStringChange stringChange -> new BibTexStringChangeDetailsView(stringChange);
case BibTexStringRename stringRename -> new BibTexStringRenameDetailsView(stringRename);
case MetadataChange metadataChange -> new MetadataChangeDetailsView(
metadataChange,
preferencesService.getCitationKeyPatternPreferences().getKeyPatterns()
);
case GroupChange groupChange -> new GroupChangeDetailsView(groupChange);
case PreambleChange preambleChange -> new PreambleChangeDetailsView(preambleChange);
};
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -72,12 +72,7 @@ public EntryChangeDetailsView(BibEntry oldEntry,
SplitPane split = new SplitPane(containerOld, containerNew);
split.setOrientation(Orientation.HORIZONTAL);

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

this.getChildren().add(split);
this.setAllAnchorsAndAttachChild(split);
}

// Method adapted from:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,11 +15,8 @@ public GroupChangeDetailsView(GroupChange groupChange) {
labelValue = Localization.lang("%0. Accepting the change replaces the complete groups tree with the externally modified groups tree.", groupChange.getName());
}
Label label = new Label(labelValue);
setLeftAnchor(label, 8d);
setTopAnchor(label, 8d);
setRightAnchor(label, 8d);
setBottomAnchor(label, 8d);
label.setWrapText(true);

getChildren().setAll(label);
this.setAllAnchorsAndAttachChild(label);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -25,13 +25,8 @@ public MetadataChangeDetailsView(MetadataChange metadataChange, GlobalCitationKe
}

ScrollPane scrollPane = new ScrollPane(container);
scrollPane.setFitToWidth(true);
getChildren().setAll(scrollPane);

setLeftAnchor(scrollPane, 8d);
setTopAnchor(scrollPane, 8d);
setRightAnchor(scrollPane, 8d);
setBottomAnchor(scrollPane, 8d);
this.setAllAnchorsAndAttachChild(scrollPane);
}

private String getDifferenceString(MetaDataDiff.DifferenceType changeType) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,11 +27,7 @@ public PreambleChangeDetailsView(PreambleChange preambleChange) {
} else {
container.getChildren().add(new Label(Localization.lang("Value cleared externally")));
}
setLeftAnchor(container, 8d);
setTopAnchor(container, 8d);
setRightAnchor(container, 8d);
setBottomAnchor(container, 8d);

getChildren().setAll(container);
this.setAllAnchorsAndAttachChild(container);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -17,11 +17,7 @@ public BibTexStringAddDetailsView(BibTexStringAdd stringAdd) {
new Label(Localization.lang("Label: %0", stringAdd.getAddedString().getName())),
new Label(Localization.lang("Content: %0", stringAdd.getAddedString().getContent()))
);
setLeftAnchor(container, 8d);
setTopAnchor(container, 8d);
setRightAnchor(container, 8d);
setBottomAnchor(container, 8d);

getChildren().setAll(container);
this.setAllAnchorsAndAttachChild(container);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -19,11 +19,7 @@ public BibTexStringChangeDetailsView(BibTexStringChange stringChange) {
);

container.getChildren().add(new Label(Localization.lang("Current content: %0", stringChange.getOldString().getContent())));
setLeftAnchor(container, 8d);
setTopAnchor(container, 8d);
setRightAnchor(container, 8d);
setBottomAnchor(container, 8d);

getChildren().setAll(container);
this.setAllAnchorsAndAttachChild(container);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -17,11 +17,7 @@ public BibTexStringDeleteDetailsView(BibTexStringDelete stringDelete) {
new Label(Localization.lang("Label: %0", stringDelete.getDeletedString().getName())),
new Label(Localization.lang("Content: %0", stringDelete.getDeletedString().getContent()))
);
setLeftAnchor(container, 8d);
setTopAnchor(container, 8d);
setRightAnchor(container, 8d);
setBottomAnchor(container, 8d);

getChildren().setAll(container);
this.setAllAnchorsAndAttachChild(container);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -8,11 +8,7 @@ public final class BibTexStringRenameDetailsView extends DatabaseChangeDetailsVi

public BibTexStringRenameDetailsView(BibTexStringRename stringRename) {
Label label = new Label(stringRename.getNewString().getName() + " : " + stringRename.getOldString().getContent());
setLeftAnchor(label, 8d);
setTopAnchor(label, 8d);
setRightAnchor(label, 8d);
setBottomAnchor(label, 8d);

getChildren().setAll(label);
this.setAllAnchorsAndAttachChild(label);
}
}

0 comments on commit 3401b71

Please sign in to comment.