diff --git a/Core/src/org/sleuthkit/autopsy/timeline/TimeLineController.java b/Core/src/org/sleuthkit/autopsy/timeline/TimeLineController.java index 6780af841a..50fae61d4b 100644 --- a/Core/src/org/sleuthkit/autopsy/timeline/TimeLineController.java +++ b/Core/src/org/sleuthkit/autopsy/timeline/TimeLineController.java @@ -670,7 +670,7 @@ public class TimeLineController { } @Immutable - class AutopsyCaseListener implements PropertyChangeListener { + private class AutopsyCaseListener implements PropertyChangeListener { @Override public void propertyChange(PropertyChangeEvent evt) { diff --git a/Core/src/org/sleuthkit/autopsy/timeline/ui/AbstractVisualization.java b/Core/src/org/sleuthkit/autopsy/timeline/ui/AbstractVisualization.java index aabac6e1bb..fad4f78949 100644 --- a/Core/src/org/sleuthkit/autopsy/timeline/ui/AbstractVisualization.java +++ b/Core/src/org/sleuthkit/autopsy/timeline/ui/AbstractVisualization.java @@ -18,6 +18,7 @@ */ package org.sleuthkit.autopsy.timeline.ui; +import java.util.Collections; import java.util.List; import java.util.concurrent.ExecutionException; import javafx.beans.InvalidationListener; @@ -102,7 +103,7 @@ public abstract class AbstractVisualization getSettingsNodes() { - return settingsNodes; + return Collections.unmodifiableList(settingsNodes); } /** @param value a value along this visualization's x axis diff --git a/Core/src/org/sleuthkit/autopsy/timeline/ui/VisualizationPanel.fxml b/Core/src/org/sleuthkit/autopsy/timeline/ui/VisualizationPanel.fxml index 7aa00b91b4..d80a29ad7d 100644 --- a/Core/src/org/sleuthkit/autopsy/timeline/ui/VisualizationPanel.fxml +++ b/Core/src/org/sleuthkit/autopsy/timeline/ui/VisualizationPanel.fxml @@ -1,5 +1,6 @@ + @@ -14,10 +15,13 @@ - + + + + + + + + + + + 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 e781608910..c6e68a1ec4 100644 --- a/Core/src/org/sleuthkit/autopsy/timeline/ui/detailview/DetailViewPane.java +++ b/Core/src/org/sleuthkit/autopsy/timeline/ui/detailview/DetailViewPane.java @@ -38,6 +38,7 @@ import javafx.scene.chart.Axis; import javafx.scene.chart.BarChart; import javafx.scene.chart.XYChart; import javafx.scene.control.CheckBox; +import javafx.scene.control.Label; import javafx.scene.control.MultipleSelectionModel; import javafx.scene.control.RadioButton; import javafx.scene.control.ScrollBar; @@ -60,9 +61,9 @@ import javafx.scene.layout.Priority; import javafx.scene.layout.Region; import javafx.scene.layout.VBox; import org.joda.time.DateTime; -import org.sleuthkit.autopsy.timeline.FXMLConstructor; import org.sleuthkit.autopsy.coreutils.LoggedTask; import org.sleuthkit.autopsy.coreutils.Logger; +import org.sleuthkit.autopsy.timeline.FXMLConstructor; import org.sleuthkit.autopsy.timeline.TimeLineController; import org.sleuthkit.autopsy.timeline.events.AggregateEvent; import org.sleuthkit.autopsy.timeline.events.FilteredEventsModel; @@ -391,6 +392,9 @@ public class DetailViewPane extends AbstractVisualization { if (truncateWidthSlider.isValueChanging() == false) { chart.getTruncateWidth().set(truncateWidthSlider.getValue()); diff --git a/Core/src/org/sleuthkit/autopsy/timeline/ui/detailview/DetailViewSettingsPane.fxml b/Core/src/org/sleuthkit/autopsy/timeline/ui/detailview/DetailViewSettingsPane.fxml index 47b444c4e5..60de1944fe 100644 --- a/Core/src/org/sleuthkit/autopsy/timeline/ui/detailview/DetailViewSettingsPane.fxml +++ b/Core/src/org/sleuthkit/autopsy/timeline/ui/detailview/DetailViewSettingsPane.fxml @@ -7,48 +7,73 @@ - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Core/src/org/sleuthkit/autopsy/timeline/zooming/ZoomSettingsPane.java b/Core/src/org/sleuthkit/autopsy/timeline/zooming/ZoomSettingsPane.java index f07e113461..8c7defaa03 100644 --- a/Core/src/org/sleuthkit/autopsy/timeline/zooming/ZoomSettingsPane.java +++ b/Core/src/org/sleuthkit/autopsy/timeline/zooming/ZoomSettingsPane.java @@ -111,40 +111,40 @@ public class ZoomSettingsPane extends TitledPane implements TimeLineView { this.filteredEvents = filteredEvents; initializeSlider(timeUnitSlider, - () -> { - TimeUnits requestedUnit = TimeUnits.values()[new Double(timeUnitSlider.getValue()).intValue()]; - if (requestedUnit == TimeUnits.FOREVER) { - controller.showFullRange(); - } else { - controller.pushTimeRange(IntervalUtils.getIntervalAround(IntervalUtils.middleOf(ZoomSettingsPane.this.filteredEvents.timeRange().get()), requestedUnit.getPeriod())); - } - }, - this.filteredEvents.timeRange(), - () -> { - RangeDivisionInfo rangeInfo = RangeDivisionInfo.getRangeDivisionInfo(this.filteredEvents.timeRange().get()); - ChronoUnit chronoUnit = rangeInfo.getPeriodSize().getChronoUnit(); + () -> { + TimeUnits requestedUnit = TimeUnits.values()[new Double(timeUnitSlider.getValue()).intValue()]; + if (requestedUnit == TimeUnits.FOREVER) { + controller.showFullRange(); + } else { + controller.pushTimeRange(IntervalUtils.getIntervalAround(IntervalUtils.middleOf(ZoomSettingsPane.this.filteredEvents.timeRange().get()), requestedUnit.getPeriod())); + } + }, + this.filteredEvents.timeRange(), + () -> { + RangeDivisionInfo rangeInfo = RangeDivisionInfo.getRangeDivisionInfo(this.filteredEvents.timeRange().get()); + ChronoUnit chronoUnit = rangeInfo.getPeriodSize().getChronoUnit(); - timeUnitSlider.setValue(TimeUnits.fromChronoUnit(chronoUnit).ordinal() - 1); - }); + timeUnitSlider.setValue(TimeUnits.fromChronoUnit(chronoUnit).ordinal() - 1); + }); initializeSlider(descrLODSlider, - () -> { - DescriptionLOD newLOD = DescriptionLOD.values()[Math.round(descrLODSlider.valueProperty().floatValue())]; - controller.pushDescrLOD(newLOD); - }, this.filteredEvents.descriptionLOD(), - () -> { - descrLODSlider.setValue(this.filteredEvents.descriptionLOD().get().ordinal()); - }); + () -> { + DescriptionLOD newLOD = DescriptionLOD.values()[Math.round(descrLODSlider.valueProperty().floatValue())]; + controller.pushDescrLOD(newLOD); + }, this.filteredEvents.descriptionLOD(), + () -> { + descrLODSlider.setValue(this.filteredEvents.descriptionLOD().get().ordinal()); + }); initializeSlider(typeZoomSlider, - () -> { - EventTypeZoomLevel newZoomLevel = EventTypeZoomLevel.values()[Math.round(typeZoomSlider.valueProperty().floatValue())]; - controller.pushEventTypeZoom(newZoomLevel); - }, - this.filteredEvents.eventTypeZoom(), - () -> { - typeZoomSlider.setValue(this.filteredEvents.eventTypeZoom().get().ordinal()); - }); + () -> { + EventTypeZoomLevel newZoomLevel = EventTypeZoomLevel.values()[Math.round(typeZoomSlider.valueProperty().floatValue())]; + controller.pushEventTypeZoom(newZoomLevel); + }, + this.filteredEvents.eventTypeZoom(), + () -> { + typeZoomSlider.setValue(this.filteredEvents.eventTypeZoom().get().ordinal()); + }); } /** @@ -178,7 +178,7 @@ public class ZoomSettingsPane extends TitledPane implements TimeLineView { slider.valueProperty().removeListener(sliderListener); slider.valueChangingProperty().removeListener(sliderListener); - driverChangHandler.run(); + Platform.runLater(driverChangHandler); slider.valueProperty().addListener(sliderListener); slider.valueChangingProperty().addListener(sliderListener);