Skip to content

Commit

Permalink
Closes issue #1, opens issues #3, #4
Browse files Browse the repository at this point in the history
  • Loading branch information
Gpax971 committed Oct 22, 2022
1 parent 76bd95b commit edf940a
Show file tree
Hide file tree
Showing 2 changed files with 46 additions and 4 deletions.
16 changes: 12 additions & 4 deletions src/main/java/org/jabref/gui/groups/GroupTreeView.java
Original file line number Diff line number Diff line change
Expand Up @@ -403,7 +403,11 @@ private Optional<TreeItem<GroupNodeViewModel>> getTreeItemByValue(TreeItem<Group

private ContextMenu createContextMenuForGroup(GroupNodeViewModel group) {
ContextMenu menu = new ContextMenu();
Menu removeGroup = new Menu(Localization.lang("Remove group"));

Menu removeGroupWithSubgroups = new Menu(Localization.lang("Remove group"));

MenuItem removeGroupNoSubgroups = new MenuItem(Localization.lang("Remove group"));
removeGroupNoSubgroups.setOnAction(event -> viewModel.removeGroupNoSubgroups(group));

MenuItem editGroup = new MenuItem(Localization.lang("Edit group"));
editGroup.setOnAction(event -> {
Expand Down Expand Up @@ -439,9 +443,13 @@ private ContextMenu createContextMenuForGroup(GroupNodeViewModel group) {
removeEntries.setOnAction(event -> viewModel.removeSelectedEntries(group));

menu.getItems().add(editGroup);
removeGroup.getItems().add(removeGroupKeepSubgroups);
removeGroup.getItems().add(removeGroupAndSubgroups);
menu.getItems().add(removeGroup);
if (group.getChildren().size() > 0) {
removeGroupWithSubgroups.getItems().add(removeGroupKeepSubgroups);
removeGroupWithSubgroups.getItems().add(removeGroupAndSubgroups);
menu.getItems().add(removeGroupWithSubgroups);
} else {
menu.getItems().add(removeGroupNoSubgroups);
}
menu.getItems().add(new SeparatorMenuItem());
menu.getItems().add(addSubgroup);
menu.getItems().add(removeSubgroups);
Expand Down
34 changes: 34 additions & 0 deletions src/main/java/org/jabref/gui/groups/GroupTreeViewModel.java
Original file line number Diff line number Diff line change
Expand Up @@ -471,6 +471,40 @@ public void removeGroupAndSubgroups(GroupNodeViewModel group) {
}
}

/**
* Removes the specified group and its subgroups (after asking for confirmation).
*/
public void removeGroupNoSubgroups(GroupNodeViewModel group) {
boolean confirmed;
if (selectedGroups.size() <= 1) {
confirmed = dialogService.showConfirmationDialogAndWait(
Localization.lang("Remove group"),
Localization.lang("Remove group \"%0\"?", group.getDisplayName()),
Localization.lang("Remove"));
} else {
confirmed = dialogService.showConfirmationDialogAndWait(
Localization.lang("Remove groups and subgroups"),
Localization.lang("Remove all selected groups and their subgroups?"),
Localization.lang("Remove all"));
}

if (confirmed) {
// TODO: Add undo
// final UndoableAddOrRemoveGroup undo = new UndoableAddOrRemoveGroup(groupsRoot, node, UndoableAddOrRemoveGroup.REMOVE_NODE_WITHOUT_CHILDREN);
// panel.getUndoManager().addEdit(undo);

removeGroupsAndSubGroupsFromEntries(group);
group.getGroupNode().removeFromParent();

if (selectedGroups.size() > 1) {
dialogService.notify(Localization.lang("Removed all selected groups and their subgroups."));
} else {
dialogService.notify(Localization.lang("Removed group \"%0\" and its subgroups.", group.getDisplayName()));
}
writeGroupChangesToMetaData();
}
}

void removeGroupsAndSubGroupsFromEntries(GroupNodeViewModel group) {
for (GroupNodeViewModel child : group.getChildren()) {
removeGroupsAndSubGroupsFromEntries(child);
Expand Down

0 comments on commit edf940a

Please sign in to comment.