6 package org.sleuthkit.autopsy.timeline.ui.filtering;
8 import java.util.Arrays;
9 import java.util.function.BiPredicate;
10 import javafx.scene.control.TreeItem;
11 import javafx.scene.control.TreeTableRow;
12 import org.controlsfx.control.action.Action;
13 import org.controlsfx.control.action.ActionGroup;
14 import org.controlsfx.control.action.ActionUtils;
15 import org.openide.util.NbBundle;
21 class FilterTreeTableRow
extends TreeTableRow<Filter> {
24 protected void updateItem(Filter item,
boolean empty) {
25 super.updateItem(item, empty);
26 if (item == null || empty) {
29 setContextMenu(ActionUtils.createContextMenu(Arrays.asList(
new SelectActionsGroup(
this))));
33 @NbBundle.Messages(value = {
34 "Timeline.ui.filtering.menuItem.select=select",
35 "Timeline.ui.filtering.menuItem.all=all",
36 "Timeline.ui.filtering.menuItem.none=none",
37 "Timeline.ui.filtering.menuItem.only=only",
38 "Timeline.ui.filtering.menuItem.others=others"})
40 ALL(Bundle.Timeline_ui_filtering_menuItem_all(),
41 (treeItem, row) ->
true),
43 NONE(Bundle.Timeline_ui_filtering_menuItem_none(),
44 (treeItem, row) ->
false),
46 ONLY(Bundle.Timeline_ui_filtering_menuItem_only(),
47 (treeItem, row) -> treeItem == row.getTreeItem()),
49 OTHER(Bundle.Timeline_ui_filtering_menuItem_others(),
50 (treeItem, row) -> treeItem != row.getTreeItem()),
52 SELECT(Bundle.Timeline_ui_filtering_menuItem_select(),
53 (treeItem, row) ->
false == row.getItem().isSelected());
59 private SelectionAction(String displayName, BiPredicate<TreeItem<Filter>, TreeTableRow<Filter>> predicate) {
60 this.selectionPredicate = predicate;
61 this.displayName = displayName;
64 public void doSelection(TreeItem<Filter> treeItem, TreeTableRow<Filter> row) {
65 treeItem.getValue().setSelected(selectionPredicate.test(treeItem, row));
76 super(Bundle.Timeline_ui_filtering_menuItem_select(),
85 private static final class Select extends Action {
87 public TreeTableRow<Filter>
getRow() {
90 private final TreeTableRow<Filter>
row;
96 this.selectionAction = strategy;
97 setEventHandler(actionEvent -> row.getTreeItem().getParent().getChildren().forEach(this::doSelection));
final TreeTableRow< Filter > row
SelectionAction(String displayName, BiPredicate< TreeItem< Filter >, TreeTableRow< Filter >> predicate)
final SelectionAction selectionAction
void doSelection(TreeItem< Filter > treeItem)
final BiPredicate< TreeItem< Filter >, TreeTableRow< Filter > > selectionPredicate
TreeTableRow< Filter > getRow()
void doSelection(TreeItem< Filter > treeItem, TreeTableRow< Filter > row)