19 package org.sleuthkit.autopsy.timeline.ui.detailview.tree;
21 import java.util.Comparator;
22 import java.util.HashMap;
23 import java.util.List;
25 import java.util.function.Supplier;
26 import javafx.scene.control.TreeItem;
34 class CategoryTypeTreeItem
extends EventTypeTreeItem {
40 private final Map<Object, EventsTreeItem> childMap =
new HashMap<>();
49 CategoryTypeTreeItem(
DetailViewEvent event, Comparator<TreeItem<DetailViewEvent>> comparator) {
55 public void insert(List<DetailViewEvent> path) {
58 Supplier< EventsTreeItem> treeItemConstructor;
59 String descriptionKey;
64 if (head.
getEventType().getTypeHierarchyLevel() == TimelineEventType.HierarchyLevel.CATEGORY) {
66 treeItemConstructor = () -> configureNewTreeItem(
new SubTypeTreeItem(head, getComparator()));
70 treeItemConstructor = () -> configureNewTreeItem(
new DescriptionTreeItem(stripe, getComparator()));
73 EventsTreeItem treeItem = childMap.computeIfAbsent(descriptionKey, key -> treeItemConstructor.get());
76 if (path.isEmpty() ==
false) {
77 treeItem.insert(path);
82 void remove(List<DetailViewEvent> path) {
85 EventsTreeItem descTreeItem;
90 if (head.
getEventType().getTypeHierarchyLevel()== TimelineEventType.HierarchyLevel.CATEGORY) {
91 descTreeItem = childMap.get(head.
getEventType().getDisplayName());
98 if (descTreeItem != null) {
99 if (path.isEmpty() ==
false) {
100 descTreeItem.remove(path);
103 if (descTreeItem.getChildren().isEmpty()) {
105 getChildren().remove(descTreeItem);
TimelineEventType getEventType()