Autopsy  4.4
Graphical digital forensics platform for The Sleuth Kit and other tools.
Classes | Public Member Functions | Private Member Functions | Static Private Member Functions | Private Attributes | Static Private Attributes | List of all members
org.sleuthkit.autopsy.timeline.ui.ViewFrame Class Reference

Inherits BorderPane.

Classes

class  LocalDateDisabler
 
class  LocalDateTimeValidator
 
class  NoEventsDialog
 
class  PickerListener
 
class  Refresh
 

Public Member Functions

 ViewFrame (@Nonnull TimeLineController controller,@Nonnull EventsTree eventsTree)
 
void handlDataSourceAdded (DataSourceAddedEvent event)
 
void handleAnalysisCompleted (DataSourceAnalysisCompletedEvent event)
 
void handleDBUpdated (DBUpdatedEvent event)
 
void handleRefreshRequested (RefreshRequestedEvent event)
 
void handleTimeLineTagUpdate (TagsUpdatedEvent event)
 

Private Member Functions

synchronized void refreshHistorgram ()
 
void refreshTimeUI ()
 
void setTimeNavigationControls (List< Node > timeNavigationNodes)
 
void setViewSettingsControls (List< Node > newSettingsNodes)
 
void syncViewMode ()
 

Static Private Member Functions

static LocalDateTime epochMillisToLocalDateTime (long millis)
 
static long localDateTimeToEpochMilli (LocalDateTime localDateTime)
 

Private Attributes

final TimeLineController controller
 
ToggleButton countsToggle
 
ImmutableList< Node > defaultTimeNavigationNodes
 
ToggleButton detailsToggle
 
Label endLabel
 
final InvalidationListener endListener = new PickerListener(() -> endPicker, Interval::withEndMillis)
 
LocalDateTimeTextField endPicker
 
final EventsTree eventsTree
 
final FilteredEventsModel filteredEvents
 
HBox histogramBox
 
LoggedTask< Void > histogramTask
 
AbstractTimeLineView hostedView
 
ToggleButton listToggle
 
SegmentedButton modeSegButton
 
final NotificationPane notificationPane = new NotificationPane()
 
StackPane rangeHistogramStack
 
final RangeSlider rangeSlider = new RangeSlider(0, 1.0, .25, .75)
 
final InvalidationListener rangeSliderListener
 
Button refreshButton
 
final ObservableList< Node > settingsNodes = FXCollections.observableArrayList()
 
Button snapShotButton
 
Label startLabel
 
final InvalidationListener startListener = new PickerListener(() -> startPicker, Interval::withStartMillis)
 
LocalDateTimeTextField startPicker
 
final ObservableList< Node > timeNavigationNodes = FXCollections.observableArrayList()
 
ToolBar timeRangeToolBar
 
ToolBar toolBar
 
Button updateDBButton
 
Label viewModeLabel
 
ToggleGroupValue< ViewModeviewModeToggleGroup
 
Button zoomInButton
 
HBox zoomInOutHBox
 
final InvalidationListener zoomListener = any -> handleRefreshRequested(null)
 
MenuButton zoomMenuButton
 
Button zoomOutButton
 

Static Private Attributes

static final Background GRAY_BACKGROUND = new Background(new BackgroundFill(Color.GREY, CornerRadii.EMPTY, Insets.EMPTY))
 
static final Image INFORMATION = new Image("org/sleuthkit/autopsy/timeline/images/information.png", 16, 16, true, true)
 
static final Logger LOGGER = Logger.getLogger(ViewFrame.class.getName())
 
static final Region NO_EVENTS_BACKGROUND
 
static final Image REFRESH = new Image("org/sleuthkit/autopsy/timeline/images/arrow-circle-double-135.png")
 
static final int SETTINGS_TOOLBAR_INSERTION_INDEX = 2
 
static final int TIME_TOOLBAR_INSERTION_INDEX = 2
 
static final Image WARNING = new Image("org/sleuthkit/autopsy/timeline/images/warning_triangle.png", 16, 16, true, true)
 

Detailed Description

A container for an AbstractTimelineView. Has a Toolbar on top to hold settings widgets supplied by contained AbstractTimelineView, and the histogram / time selection on bottom. The time selection Toolbar has default controls that can be replaced by ones supplied by the current view.

TODO: Refactor common code out of histogram and CountsView? -jm

Definition at line 108 of file ViewFrame.java.

Constructor & Destructor Documentation

org.sleuthkit.autopsy.timeline.ui.ViewFrame.ViewFrame ( @Nonnull TimeLineController  controller,
@Nonnull EventsTree  eventsTree 
)

Member Function Documentation

static LocalDateTime org.sleuthkit.autopsy.timeline.ui.ViewFrame.epochMillisToLocalDateTime ( long  millis)
staticprivate

Convert the given "millis from the Unix Epoch" to a LocalDateTime USING THE CURRENT TIMEZONE FROM THE TIMELINECONTROLLER

Parameters
millisThe milliseconds to convert.
Returns
The given epoch millis as a LocalDateTime

Definition at line 298 of file ViewFrame.java.

References org.sleuthkit.autopsy.timeline.TimeLineController.getTimeZoneID().

Referenced by org.sleuthkit.autopsy.timeline.ui.ViewFrame.refreshTimeUI().

void org.sleuthkit.autopsy.timeline.ui.ViewFrame.handlDataSourceAdded ( DataSourceAddedEvent  event)

Handle a DataSourceAddedEvent from the events model by showing a notification.

NOTE: This ViewFrame must be registered with the filteredEventsModel's EventBus in order for this handler to be invoked.

Parameters
eventThe DataSourceAddedEvent to handle.

Definition at line 482 of file ViewFrame.java.

References org.sleuthkit.autopsy.timeline.ui.ViewFrame.controller, org.sleuthkit.autopsy.casemodule.events.DataSourceAddedEvent.getDataSource(), and org.sleuthkit.autopsy.timeline.ui.ViewFrame.notificationPane.

void org.sleuthkit.autopsy.timeline.ui.ViewFrame.handleAnalysisCompleted ( DataSourceAnalysisCompletedEvent  event)

Handle a DataSourceAnalysisCompletedEvent from the events modelby showing a notification.

NOTE: This ViewFrame must be registered with the filteredEventsModel's EventBus in order for this handler to be invoked.

Parameters
eventThe DataSourceAnalysisCompletedEvent to handle.

Definition at line 502 of file ViewFrame.java.

References org.sleuthkit.autopsy.timeline.ui.ViewFrame.controller, org.sleuthkit.autopsy.ingest.events.DataSourceAnalysisEvent.getDataSource(), and org.sleuthkit.autopsy.timeline.ui.ViewFrame.notificationPane.

void org.sleuthkit.autopsy.timeline.ui.ViewFrame.handleDBUpdated ( DBUpdatedEvent  event)

Handle a DBUpdatedEvent from the events model by refreshing the view.

NOTE: This ViewFrame must be registered with the filteredEventsModel's EventBus in order for this handler to be invoked.

Parameters
eventThe DBUpdatedEvent to handle.

Definition at line 463 of file ViewFrame.java.

References org.sleuthkit.autopsy.timeline.ui.ViewFrame.hostedView, org.sleuthkit.autopsy.timeline.ui.AbstractTimeLineView.refresh(), and org.sleuthkit.autopsy.timeline.ui.ViewFrame.refreshHistorgram().

void org.sleuthkit.autopsy.timeline.ui.ViewFrame.handleRefreshRequested ( RefreshRequestedEvent  event)

Handle a RefreshRequestedEvent from the events model by clearing the refresh notification.

NOTE: This ViewFrame must be registered with the filteredEventsModel's EventBus in order for this handler to be invoked.

Parameters
eventThe RefreshRequestedEvent to handle.

Definition at line 446 of file ViewFrame.java.

References org.sleuthkit.autopsy.timeline.ui.ViewFrame.notificationPane.

void org.sleuthkit.autopsy.timeline.ui.ViewFrame.handleTimeLineTagUpdate ( TagsUpdatedEvent  event)

Handle TagsUpdatedEvents by marking that the view needs to be refreshed.

NOTE: This ViewFrame must be registered with the filteredEventsModel's EventBus in order for this handler to be invoked.

Parameters
eventThe TagsUpdatedEvent to handle.

Definition at line 426 of file ViewFrame.java.

References org.sleuthkit.autopsy.timeline.ui.ViewFrame.hostedView, and org.sleuthkit.autopsy.timeline.ui.ViewFrame.notificationPane.

static long org.sleuthkit.autopsy.timeline.ui.ViewFrame.localDateTimeToEpochMilli ( LocalDateTime  localDateTime)
staticprivate

Convert the given LocalDateTime to epoch millis USING THE CURRENT TIMEZONE FROM THE TIMELINECONTROLLER

Parameters
localDateTimeThe LocalDateTime to convert to millis since the Unix epoch.
Returns
the given LocalDateTime as epoch millis

Definition at line 286 of file ViewFrame.java.

References org.sleuthkit.autopsy.timeline.TimeLineController.getTimeZoneID().

Referenced by org.sleuthkit.autopsy.timeline.ui.ViewFrame.LocalDateTimeValidator.call(), and org.sleuthkit.autopsy.timeline.ui.ViewFrame.PickerListener.invalidated().

synchronized void org.sleuthkit.autopsy.timeline.ui.ViewFrame.refreshHistorgram ( )
private
void org.sleuthkit.autopsy.timeline.ui.ViewFrame.refreshTimeUI ( )
private
void org.sleuthkit.autopsy.timeline.ui.ViewFrame.setTimeNavigationControls ( List< Node >  timeNavigationNodes)
private

Show the given List of Nodes in the time range ToolBar. Replaces any Nodes that may have previously been set with the given List of Nodes.

Parameters
timeNavigationNodesThe Nodes to show in the time range ToolBar.

Definition at line 712 of file ViewFrame.java.

References org.sleuthkit.autopsy.timeline.ui.ViewFrame.timeRangeToolBar.

Referenced by org.sleuthkit.autopsy.timeline.ui.ViewFrame.syncViewMode().

void org.sleuthkit.autopsy.timeline.ui.ViewFrame.setViewSettingsControls ( List< Node >  newSettingsNodes)
private

Show the given List of Nodes in the top ToolBar. Replaces any settings Nodes that may have previously been set with the given List of Nodes.

Parameters
newSettingsNodesThe Nodes to show in the ToolBar.

Definition at line 699 of file ViewFrame.java.

References org.sleuthkit.autopsy.timeline.ui.ViewFrame.settingsNodes, and org.sleuthkit.autopsy.timeline.ui.ViewFrame.toolBar.

Referenced by org.sleuthkit.autopsy.timeline.ui.ViewFrame.syncViewMode().

void org.sleuthkit.autopsy.timeline.ui.ViewFrame.syncViewMode ( )
private

Sync up the view shown in the UI to the one currently active according to the controller. Swaps out the hosted AbstractTimelineView for a new one of the correct type.

Definition at line 638 of file ViewFrame.java.

References org.sleuthkit.autopsy.timeline.ui.ViewFrame.controller, org.sleuthkit.autopsy.timeline.ui.ViewFrame.defaultTimeNavigationNodes, org.sleuthkit.autopsy.timeline.ui.ViewFrame.eventsTree, org.sleuthkit.autopsy.timeline.ui.detailview.tree.EventsTree.getSelectedEvents(), org.sleuthkit.autopsy.timeline.ui.AbstractTimeLineView.getSettingsControls(), org.sleuthkit.autopsy.timeline.ui.AbstractTimeLineView.getTimeNavigationControls(), org.sleuthkit.autopsy.timeline.TimeLineController.getViewMode(), org.sleuthkit.autopsy.timeline.ui.AbstractTimeLineView.hasCustomTimeNavigationControls(), org.sleuthkit.autopsy.timeline.ui.AbstractTimeLineView.hasVisibleEvents, org.sleuthkit.autopsy.timeline.ui.ViewFrame.hostedView, org.sleuthkit.autopsy.timeline.ui.ViewFrame.notificationPane, org.sleuthkit.autopsy.timeline.ui.AbstractTimeLineView.refresh(), org.sleuthkit.autopsy.timeline.ui.ViewFrame.refreshButton, org.sleuthkit.autopsy.timeline.TimeLineController.registerForEvents(), org.sleuthkit.autopsy.timeline.ui.detailview.tree.EventsTree.setDetailViewPane(), org.sleuthkit.autopsy.timeline.ui.detailview.DetailViewPane.setHighLightedEvents(), org.sleuthkit.autopsy.timeline.ui.ViewFrame.setTimeNavigationControls(), org.sleuthkit.autopsy.timeline.ui.ViewFrame.setViewSettingsControls(), and org.sleuthkit.autopsy.timeline.ui.ViewFrame.viewModeToggleGroup.

Member Data Documentation

final TimeLineController org.sleuthkit.autopsy.timeline.ui.ViewFrame.controller
private
ToggleButton org.sleuthkit.autopsy.timeline.ui.ViewFrame.countsToggle
private

Definition at line 202 of file ViewFrame.java.

ImmutableList<Node> org.sleuthkit.autopsy.timeline.ui.ViewFrame.defaultTimeNavigationNodes
private
ToggleButton org.sleuthkit.autopsy.timeline.ui.ViewFrame.detailsToggle
private

Definition at line 204 of file ViewFrame.java.

Label org.sleuthkit.autopsy.timeline.ui.ViewFrame.endLabel
private

Definition at line 190 of file ViewFrame.java.

final InvalidationListener org.sleuthkit.autopsy.timeline.ui.ViewFrame.endListener = new PickerListener(() -> endPicker, Interval::withEndMillis)
private

listen to change in end time picker and push to controller

Definition at line 270 of file ViewFrame.java.

LocalDateTimeTextField org.sleuthkit.autopsy.timeline.ui.ViewFrame.endPicker
private
final EventsTree org.sleuthkit.autopsy.timeline.ui.ViewFrame.eventsTree
private
final FilteredEventsModel org.sleuthkit.autopsy.timeline.ui.ViewFrame.filteredEvents
private
final Background org.sleuthkit.autopsy.timeline.ui.ViewFrame.GRAY_BACKGROUND = new Background(new BackgroundFill(Color.GREY, CornerRadii.EMPTY, Insets.EMPTY))
staticprivate

Definition at line 115 of file ViewFrame.java.

HBox org.sleuthkit.autopsy.timeline.ui.ViewFrame.histogramBox
private
LoggedTask<Void> org.sleuthkit.autopsy.timeline.ui.ViewFrame.histogramTask
private
AbstractTimeLineView org.sleuthkit.autopsy.timeline.ui.ViewFrame.hostedView
private
final Image org.sleuthkit.autopsy.timeline.ui.ViewFrame.INFORMATION = new Image("org/sleuthkit/autopsy/timeline/images/information.png", 16, 16, true, true)
staticprivate

Definition at line 112 of file ViewFrame.java.

ToggleButton org.sleuthkit.autopsy.timeline.ui.ViewFrame.listToggle
private

Definition at line 206 of file ViewFrame.java.

final Logger org.sleuthkit.autopsy.timeline.ui.ViewFrame.LOGGER = Logger.getLogger(ViewFrame.class.getName())
staticprivate

Definition at line 110 of file ViewFrame.java.

SegmentedButton org.sleuthkit.autopsy.timeline.ui.ViewFrame.modeSegButton
private

Definition at line 200 of file ViewFrame.java.

final Region org.sleuthkit.autopsy.timeline.ui.ViewFrame.NO_EVENTS_BACKGROUND
staticprivate
Initial value:
= new Region() {
{
setBackground(GRAY_BACKGROUND);
setOpacity(.3);
}
}

Region that will be stacked in between the no-events "dialog" and the hosted AbstractTimelineView in order to gray out the AbstractTimelineView.

Definition at line 122 of file ViewFrame.java.

final NotificationPane org.sleuthkit.autopsy.timeline.ui.ViewFrame.notificationPane = new NotificationPane()
private
StackPane org.sleuthkit.autopsy.timeline.ui.ViewFrame.rangeHistogramStack
private

Definition at line 159 of file ViewFrame.java.

final RangeSlider org.sleuthkit.autopsy.timeline.ui.ViewFrame.rangeSlider = new RangeSlider(0, 1.0, .25, .75)
private
final InvalidationListener org.sleuthkit.autopsy.timeline.ui.ViewFrame.rangeSliderListener
private
Initial value:
= new InvalidationListener() {
@Override
public void invalidated(Observable observable) {
if (rangeSlider.isHighValueChanging() == false
&& rangeSlider.isLowValueChanging() == false) {
Long minTime = RangeDivisionInfo.getRangeDivisionInfo(filteredEvents.getSpanningInterval()).getLowerBound();
if (false == controller.pushTimeRange(new Interval(
(long) (rangeSlider.getLowValue() + minTime),
(long) (rangeSlider.getHighValue() + minTime + 1000)))) {
}
}
}
}

Listen to changes in the range slider selection and forward to the controller. Waits until the user releases thumb to send to controller.

Definition at line 247 of file ViewFrame.java.

Referenced by org.sleuthkit.autopsy.timeline.ui.ViewFrame.refreshTimeUI().

final Image org.sleuthkit.autopsy.timeline.ui.ViewFrame.REFRESH = new Image("org/sleuthkit/autopsy/timeline/images/arrow-circle-double-135.png")
staticprivate

Definition at line 114 of file ViewFrame.java.

Button org.sleuthkit.autopsy.timeline.ui.ViewFrame.refreshButton
private
final int org.sleuthkit.autopsy.timeline.ui.ViewFrame.SETTINGS_TOOLBAR_INSERTION_INDEX = 2
staticprivate

The scene graph Nodes for the current view's settings will be inserted into the toolbar at this index.

Definition at line 133 of file ViewFrame.java.

final ObservableList<Node> org.sleuthkit.autopsy.timeline.ui.ViewFrame.settingsNodes = FXCollections.observableArrayList()
private
Button org.sleuthkit.autopsy.timeline.ui.ViewFrame.snapShotButton
private

Definition at line 209 of file ViewFrame.java.

Label org.sleuthkit.autopsy.timeline.ui.ViewFrame.startLabel
private

Definition at line 188 of file ViewFrame.java.

final InvalidationListener org.sleuthkit.autopsy.timeline.ui.ViewFrame.startListener = new PickerListener(() -> startPicker, Interval::withStartMillis)
private

listen to change in start time picker and push to controller

Definition at line 275 of file ViewFrame.java.

LocalDateTimeTextField org.sleuthkit.autopsy.timeline.ui.ViewFrame.startPicker
private
final int org.sleuthkit.autopsy.timeline.ui.ViewFrame.TIME_TOOLBAR_INSERTION_INDEX = 2
staticprivate

The scene graph Nodes for the current view's time navigation controls will be inserted into the toolbar at this index.

Definition at line 139 of file ViewFrame.java.

final ObservableList<Node> org.sleuthkit.autopsy.timeline.ui.ViewFrame.timeNavigationNodes = FXCollections.observableArrayList()
private

Definition at line 232 of file ViewFrame.java.

ToolBar org.sleuthkit.autopsy.timeline.ui.ViewFrame.timeRangeToolBar
private

The lower tool bar that has controls to adjust the viewed timerange.

Definition at line 167 of file ViewFrame.java.

Referenced by org.sleuthkit.autopsy.timeline.ui.ViewFrame.setTimeNavigationControls().

ToolBar org.sleuthkit.autopsy.timeline.ui.ViewFrame.toolBar
private
Button org.sleuthkit.autopsy.timeline.ui.ViewFrame.updateDBButton
private

Definition at line 213 of file ViewFrame.java.

Label org.sleuthkit.autopsy.timeline.ui.ViewFrame.viewModeLabel
private

Definition at line 198 of file ViewFrame.java.

ToggleGroupValue<ViewMode> org.sleuthkit.autopsy.timeline.ui.ViewFrame.viewModeToggleGroup
private
final Image org.sleuthkit.autopsy.timeline.ui.ViewFrame.WARNING = new Image("org/sleuthkit/autopsy/timeline/images/warning_triangle.png", 16, 16, true, true)
staticprivate

Definition at line 113 of file ViewFrame.java.

Button org.sleuthkit.autopsy.timeline.ui.ViewFrame.zoomInButton
private

Definition at line 182 of file ViewFrame.java.

HBox org.sleuthkit.autopsy.timeline.ui.ViewFrame.zoomInOutHBox
private

Parent for the default zoom in/out buttons that can be replaced in some views(eg List View)

Definition at line 174 of file ViewFrame.java.

final InvalidationListener org.sleuthkit.autopsy.timeline.ui.ViewFrame.zoomListener = any -> handleRefreshRequested(null)
private

hides the notification pane on any event

Definition at line 265 of file ViewFrame.java.

MenuButton org.sleuthkit.autopsy.timeline.ui.ViewFrame.zoomMenuButton
private

Definition at line 178 of file ViewFrame.java.

Button org.sleuthkit.autopsy.timeline.ui.ViewFrame.zoomOutButton
private

Definition at line 180 of file ViewFrame.java.


The documentation for this class was generated from the following file:

Copyright © 2012-2016 Basis Technology. Generated on: Tue Jun 13 2017
This work is licensed under a Creative Commons Attribution-Share Alike 3.0 United States License.