19 package org.sleuthkit.autopsy.timeline.ui.detailview.tree;
21 import java.util.Comparator;
22 import java.util.Deque;
23 import java.util.HashMap;
25 import javafx.collections.FXCollections;
26 import javafx.scene.control.TreeItem;
30 class EventTypeTreeItem
extends NavTreeItem {
35 private final Map<String, EventDescriptionTreeItem> childMap =
new HashMap<>();
37 private Comparator<TreeItem<EventBundle<?>>> comparator = TreeComparator.Description;
45 public long getCount() {
46 return getValue().getCount();
49 @ThreadConfined(type = ThreadConfined.ThreadType.JFX)
50 public
void insert(Deque<EventBundle<?>> path) {
52 EventDescriptionTreeItem treeItem = childMap.computeIfAbsent(head.
getDescription(), description -> {
53 EventDescriptionTreeItem newTreeItem =
new EventDescriptionTreeItem(head, comparator);
54 newTreeItem.setExpanded(
true);
56 getChildren().add(newTreeItem);
57 resort(comparator,
false);
61 if (path.isEmpty() ==
false) {
62 treeItem.insert(path);
66 void remove(Deque<EventBundle<?>> path) {
68 EventDescriptionTreeItem descTreeItem = childMap.get(head.
getDescription());
69 if (descTreeItem != null) {
70 if (path.isEmpty() ==
false) {
71 descTreeItem.remove(path);
73 if (descTreeItem.getChildren().isEmpty()) {
75 getChildren().remove(descTreeItem);
84 for (EventDescriptionTreeItem child : childMap.values()) {
85 final NavTreeItem findTreeItemForEvent = child.findTreeItemForEvent(t);
86 if (findTreeItemForEvent != null) {
87 return findTreeItemForEvent;
95 void resort(Comparator<TreeItem<
EventBundle<?>>> comp, Boolean recursive) {
96 this.comparator = comp;
97 FXCollections.sort(getChildren(), comp);
99 childMap.values().forEach(ti -> ti.resort(comp,
true));
default BaseTypes getBaseType()