From 989e770cc862396e69661a11c0d7fde5d420d2e8 Mon Sep 17 00:00:00 2001 From: jmillman Date: Wed, 11 May 2016 16:22:05 -0400 Subject: [PATCH 1/4] don't refresh the timeline when the user backs out of dangerous zoom parameters --- .../ui/detailview/DetailViewPane.java | 30 +++++++++++++++---- 1 file changed, 25 insertions(+), 5 deletions(-) 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 5b9dc12837..87a37d8f3e 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 * @@ -353,13 +361,17 @@ public class DetailViewPane extends AbstractVisualizationPane Date: Wed, 11 May 2016 16:30:02 -0400 Subject: [PATCH 2/4] improve warning when showing many events in details view --- .../autopsy/timeline/ui/detailview/DetailViewPane.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 87a37d8f3e..9477e3d73d 100644 --- a/Core/src/org/sleuthkit/autopsy/timeline/ui/detailview/DetailViewPane.java +++ b/Core/src/org/sleuthkit/autopsy/timeline/ui/detailview/DetailViewPane.java @@ -351,7 +351,7 @@ public class DetailViewPane extends AbstractVisualizationPane { DetailsUpdateTask() { From 8399b03050943be25a3a9f50ad1f201577d49066 Mon Sep 17 00:00:00 2001 From: jmillman Date: Thu, 12 May 2016 16:17:47 -0400 Subject: [PATCH 3/4] cleanup --- .../autopsy/timeline/TimeLineController.java | 3 --- .../autopsy/timeline/ui/VisualizationPanel.java | 13 ++----------- 2 files changed, 2 insertions(+), 14 deletions(-) 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/VisualizationPanel.java b/Core/src/org/sleuthkit/autopsy/timeline/ui/VisualizationPanel.java index e0f5171407..a93e52947e 100644 --- a/Core/src/org/sleuthkit/autopsy/timeline/ui/VisualizationPanel.java +++ b/Core/src/org/sleuthkit/autopsy/timeline/ui/VisualizationPanel.java @@ -544,21 +544,12 @@ final public class VisualizationPanel extends BorderPane { } 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); From 259fc185c2665b7cfc93de76e43a6ac8ae98b89d Mon Sep 17 00:00:00 2001 From: jmillman Date: Thu, 12 May 2016 16:37:34 -0400 Subject: [PATCH 4/4] revert eventing change that mysteriously broke the zoom sliders --- .../timeline/ui/AbstractVisualizationPane.java | 13 +++++++++++++ .../autopsy/timeline/ui/VisualizationPanel.java | 10 +++++++--- 2 files changed, 20 insertions(+), 3 deletions(-) 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,12 +542,17 @@ final public class VisualizationPanel extends BorderPane { controller.monitorTask(histogramTask); } + /** + * Refresh the time selection UI to match the current zoome paramaters. + */ private void refreshTimeUI() { RangeDivisionInfo rangeDivisionInfo = RangeDivisionInfo.getRangeDivisionInfo(filteredEvents.getSpanningInterval()); final long minTime = rangeDivisionInfo.getLowerBound(); final long maxTime = rangeDivisionInfo.getUpperBound(); + long startMillis = filteredEvents.getTimeRange().getStartMillis(); long endMillis = filteredEvents.getTimeRange().getEndMillis(); + if (minTime > 0 && maxTime > minTime) { Platform.runLater(() -> { startPicker.localDateTimeProperty().removeListener(startListener);