diff --git a/Core/src/org/sleuthkit/autopsy/timeline/TimeLineController.java b/Core/src/org/sleuthkit/autopsy/timeline/TimeLineController.java index a02917d75f..bbc213de10 100644 --- a/Core/src/org/sleuthkit/autopsy/timeline/TimeLineController.java +++ b/Core/src/org/sleuthkit/autopsy/timeline/TimeLineController.java @@ -676,9 +676,6 @@ public class TimeLineController { } } - @NbBundle.Messages({"# {0} - the number of events", - "Timeline.pushDescrLOD.confdlg.msg=You are about to show details for {0} events. This might be very slow or even crash Autopsy.\n\nDo you want to continue?", - "Timeline.pushDescrLOD.confdlg.title=Change description level of detail?"}) synchronized public void pushDescrLOD(DescriptionLoD newLOD) { ZoomParams currentZoom = filteredEvents.zoomParametersProperty().get(); if (currentZoom == null) { diff --git a/Core/src/org/sleuthkit/autopsy/timeline/ui/AbstractVisualizationPane.java b/Core/src/org/sleuthkit/autopsy/timeline/ui/AbstractVisualizationPane.java index edf74385f6..4aa137c94f 100644 --- a/Core/src/org/sleuthkit/autopsy/timeline/ui/AbstractVisualizationPane.java +++ b/Core/src/org/sleuthkit/autopsy/timeline/ui/AbstractVisualizationPane.java @@ -18,6 +18,7 @@ */ package org.sleuthkit.autopsy.timeline.ui; +import com.google.common.eventbus.Subscribe; import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; @@ -71,6 +72,7 @@ import org.sleuthkit.autopsy.coreutils.ThreadConfined; import org.sleuthkit.autopsy.timeline.TimeLineController; import org.sleuthkit.autopsy.timeline.datamodel.FilteredEventsModel; import org.sleuthkit.autopsy.timeline.datamodel.eventtype.EventType; +import org.sleuthkit.autopsy.timeline.events.RefreshRequestedEvent; /** * Abstract base class for TimeLineChart based visualizations. @@ -401,6 +403,17 @@ public abstract class AbstractVisualizationPane { if (Bundle.VisualizationPanel_tagsAddedOrDeleted().equals(notificationPane.getText())) { notificationPane.hide(); @@ -543,22 +542,18 @@ final public class VisualizationPanel extends BorderPane { controller.monitorTask(histogramTask); } + /** + * Refresh the time selection UI to match the current zoome paramaters. + */ private void refreshTimeUI() { - refreshTimeUI(filteredEvents.timeRangeProperty().get()); - } - - private void refreshTimeUI(Interval interval) { - RangeDivisionInfo rangeDivisionInfo = RangeDivisionInfo.getRangeDivisionInfo(filteredEvents.getSpanningInterval()); - final long minTime = rangeDivisionInfo.getLowerBound(); final long maxTime = rangeDivisionInfo.getUpperBound(); - long startMillis = interval.getStartMillis(); - long endMillis = interval.getEndMillis(); + long startMillis = filteredEvents.getTimeRange().getStartMillis(); + long endMillis = filteredEvents.getTimeRange().getEndMillis(); if (minTime > 0 && maxTime > minTime) { - Platform.runLater(() -> { startPicker.localDateTimeProperty().removeListener(startListener); endPicker.localDateTimeProperty().removeListener(endListener); diff --git a/Core/src/org/sleuthkit/autopsy/timeline/ui/detailview/DetailViewPane.java b/Core/src/org/sleuthkit/autopsy/timeline/ui/detailview/DetailViewPane.java index 05e9165598..a91358e5a7 100644 --- a/Core/src/org/sleuthkit/autopsy/timeline/ui/detailview/DetailViewPane.java +++ b/Core/src/org/sleuthkit/autopsy/timeline/ui/detailview/DetailViewPane.java @@ -19,6 +19,7 @@ package org.sleuthkit.autopsy.timeline.ui.detailview; import java.util.List; +import java.util.Objects; import java.util.function.Function; import java.util.function.Predicate; import java.util.stream.Collectors; @@ -56,6 +57,7 @@ import org.sleuthkit.autopsy.timeline.datamodel.TimeLineEvent; import org.sleuthkit.autopsy.timeline.ui.AbstractVisualizationPane; import org.sleuthkit.autopsy.timeline.utils.MappedList; import org.sleuthkit.autopsy.timeline.zooming.DescriptionLoD; +import org.sleuthkit.autopsy.timeline.zooming.ZoomParams; /** * Controller class for a DetailsChart based implementation of a timeline view. @@ -87,6 +89,12 @@ public class DetailViewPane extends AbstractVisualizationPane> selectedEvents; + /** + * Local copy of the zoomParams. Used to backout of a zoomParam change + * without needing to requery/redraw the vis. + */ + private ZoomParams currentZoomParams; + /** * Constructor for a DetailViewPane * @@ -343,7 +351,8 @@ public class DetailViewPane extends AbstractVisualizationPane { DetailsUpdateTask() { @@ -353,13 +362,17 @@ public class DetailViewPane extends AbstractVisualizationPane