diff --git a/Core/src/org/sleuthkit/autopsy/timeline/events/db/EventsRepository.java b/Core/src/org/sleuthkit/autopsy/timeline/events/db/EventsRepository.java index 5e99b21d8c..7bfa9dd439 100644 --- a/Core/src/org/sleuthkit/autopsy/timeline/events/db/EventsRepository.java +++ b/Core/src/org/sleuthkit/autopsy/timeline/events/db/EventsRepository.java @@ -98,7 +98,7 @@ public class EventsRepository { private final ObservableMap datasourcesMap = FXCollections.observableHashMap(); private final Case autoCase; - public ObservableMap getDatasourcesMap() { + synchronized public ObservableMap getDatasourcesMap() { return datasourcesMap; } @@ -405,7 +405,7 @@ public class EventsRepository { * * @param skCase */ - private void populateDataSourceMap(SleuthkitCase skCase) { + synchronized private void populateDataSourceMap(SleuthkitCase skCase) { //because there is no way to remove a datasource we only add to this map. for (Long id : eventDB.getDataSourceIDs()) { try { diff --git a/Core/src/org/sleuthkit/autopsy/timeline/ui/filtering/FilterSetPanel.java b/Core/src/org/sleuthkit/autopsy/timeline/ui/filtering/FilterSetPanel.java index 2adbb1c82a..57de2f556d 100644 --- a/Core/src/org/sleuthkit/autopsy/timeline/ui/filtering/FilterSetPanel.java +++ b/Core/src/org/sleuthkit/autopsy/timeline/ui/filtering/FilterSetPanel.java @@ -18,6 +18,7 @@ */ package org.sleuthkit.autopsy.timeline.ui.filtering; +import javafx.application.Platform; import javafx.beans.Observable; import javafx.collections.FXCollections; import javafx.collections.ObservableMap; @@ -177,7 +178,8 @@ public class FilterSetPanel extends BorderPane implements TimeLineView { } private void refresh() { - filterTreeTable.setRoot(new FilterTreeItem(this.filteredEvents.filter().get().copyOf(), expansionMap)); + Platform.runLater(() -> { + filterTreeTable.setRoot(new FilterTreeItem(filteredEvents.filter().get().copyOf(), expansionMap)); + }); } - } diff --git a/Core/src/org/sleuthkit/autopsy/timeline/ui/filtering/FilterTreeItem.java b/Core/src/org/sleuthkit/autopsy/timeline/ui/filtering/FilterTreeItem.java index 6160c8f622..55822870b4 100644 --- a/Core/src/org/sleuthkit/autopsy/timeline/ui/filtering/FilterTreeItem.java +++ b/Core/src/org/sleuthkit/autopsy/timeline/ui/filtering/FilterTreeItem.java @@ -1,6 +1,7 @@ package org.sleuthkit.autopsy.timeline.ui.filtering; import javafx.beans.Observable; +import javafx.collections.ListChangeListener; import javafx.collections.MapChangeListener; import javafx.collections.ObservableMap; import javafx.scene.control.TreeItem; @@ -42,6 +43,14 @@ public class FilterTreeItem extends TreeItem { for (Filter af : cf.getSubFilters()) { getChildren().add(new FilterTreeItem(af, expansionMap)); } + + cf.getSubFilters().addListener((ListChangeListener.Change c) -> { + while (c.next()) { + for (Filter af : c.getAddedSubList()) { + getChildren().add(new FilterTreeItem(af, expansionMap)); + } + } + }); } } }