19 package org.sleuthkit.autopsy.timeline.ui.filtering;
21 import javafx.collections.ListChangeListener;
22 import javafx.collections.ObservableMap;
23 import javafx.scene.control.TreeItem;
31 class FilterTreeItem
extends TreeItem<FilterState<?>> {
43 FilterTreeItem(FilterState<?> filterState, ObservableMap<Object, Boolean> expansionMap) {
47 expandedProperty().addListener(expandedProperty -> expansionMap.put(filterState.getFilter(), isExpanded()));
48 setExpanded(expansionMap.getOrDefault(filterState.getFilter(),
false));
51 if (filterState instanceof CompoundFilterState<?, ?>) {
52 CompoundFilterState<?, ?> compoundFilter = (CompoundFilterState<?, ?>) filterState;
55 compoundFilter.getSubFilterStates().forEach(subFilterState -> {
61 if (subFilterState.getFilter() instanceof TimelineFilter.HideKnownFilter ==
false) {
62 getChildren().add(
new FilterTreeItem(subFilterState, expansionMap));
66 compoundFilter.getSubFilterStates().addListener((ListChangeListener.Change<? extends FilterState<?>> change) -> {
67 while (change.next()) {
68 for (FilterState<?> subFilterState : change.getAddedSubList()) {
70 getChildren().add(new FilterTreeItem(subFilterState, expansionMap));
75 compoundFilter.selectedProperty().addListener(observable -> {
76 if (compoundFilter.isSelected()) {