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

Inherits XYChart< DateTime, EventStripe >, and org.sleuthkit.autopsy.timeline.ui.TimeLineChart< X >.

Classes

class  DetailIntervalSelector
 
class  HideDescriptionAction
 
class  PlaceMarkerAction
 
class  SelectionChangeHandler
 
class  UnhideDescriptionAction
 

Public Member Functions

synchronized SimpleBooleanProperty bandByTypeProperty ()
 
void clearIntervalSelector ()
 
ContextMenu getChartContextMenu ()
 
ContextMenu getChartContextMenu (MouseEvent clickEvent) throws MissingResourceException
 
TimeLineController getController ()
 
DateTime getDateTimeForPosition (double x)
 
FilteredEventsModel getFilteredEvents ()
 
IntervalSelector<?extends DateTime > getIntervalSelector ()
 
Axis< X > getXAxis ()
 
IntervalSelector< DateTime > newIntervalSelector ()
 
void setIntervalSelector (IntervalSelector<?extends X > newIntervalSelector)
 
void setIntervalSelector (IntervalSelector<?extends DateTime > newIntervalSelector)
 

Static Public Member Functions

static ActionGroup newZoomHistoyActionGroup (TimeLineController controller)
 

Protected Member Functions

void dataItemAdded (Series< DateTime, EventStripe > series, int itemIndex, Data< DateTime, EventStripe > item)
 
void dataItemChanged (Data< DateTime, EventStripe > item)
 
void dataItemRemoved (Data< DateTime, EventStripe > item, Series< DateTime, EventStripe > series)
 
void layoutPlotChildren ()
 
void requestChartLayout ()
 
void seriesAdded (Series< DateTime, EventStripe > series, int i)
 
void seriesRemoved (Series< DateTime, EventStripe > series)
 

Private Member Functions

double computeYTop (double yMin, double h, TreeRangeMap< Double, Double > maxXatY, double xLeft, double xRight)
 
double getParentXForEpochMillis (Long epochMillis)
 
double getXForEpochMillis (Long millis)
 
void layoutBundleHelper (final EventBundleNodeBase<?,?,?> bundleNode)
 
void layoutProjectionMap ()
 

Private Attributes

Set< String > activeQuickHidefilters
 
final SimpleBooleanProperty bandByType = new SimpleBooleanProperty(false)
 
ContextMenu chartContextMenu
 
final TimeLineController controller
 
double descriptionWidth
 
final SimpleObjectProperty< DescriptionVisibilitydescrVisibility
 
final ObservableList< EventStripeeventStripes = FXCollections.observableArrayList()
 
final FilteredEventsModel filteredEvents
 
Line guideLine
 
IntervalSelector<?extends DateTime > intervalSelector
 
final InvalidationListener layoutInvalidationListener
 
final ReadOnlyDoubleWrapper maxY = new ReadOnlyDoubleWrapper(0.0)
 
final Group nodeGroup = new Group()
 
final SimpleBooleanProperty oneEventPerRow = new SimpleBooleanProperty(false)
 
final Map< EventCluster, Line > projectionMap = new ConcurrentHashMap<>()
 
final ObservableList< EventStripeNodesortedStripeNodes = stripeNodes.sorted(Comparator.comparing(EventStripeNode::getStartMillis))
 
final ObservableList< EventStripeNodestripeNodes = FXCollections.observableArrayList()
 

Static Private Attributes

static final Image HIDE = new Image("/org/sleuthkit/autopsy/timeline/images/eye--minus.png")
 
static final Image MARKER = new Image("/org/sleuthkit/autopsy/timeline/images/marker.png", 16, 16, true, true, true)
 
static final int MINIMUM_EVENT_NODE_GAP = 4
 
static final int MINIMUM_ROW_HEIGHT = 24
 
static final int PROJECTED_LINE_STROKE_WIDTH = 5
 
static final int PROJECTED_LINE_Y_OFFSET = 5
 
static final Image SHOW = new Image("/org/sleuthkit/autopsy/timeline/images/eye--plus.png")
 
static final String styleSheet = GuideLine.class.getResource("EventsDetailsChart.css").toExternalForm()
 

Detailed Description

Custom implementation of XYChart to graph events on a horizontal timeline.

The horizontal DateAxis controls the tick-marks and the horizontal layout of the nodes representing events. The vertical NumberAxis does nothing (although a custom implementation could help with the vertical layout?)

Series help organize events for the banding by event type, we could add a node to contain each band if we need a place for per band controls.

NOTE: It was too hard to control the threading of this chart via the complicated default listeners. Instead clients should use null addDataItem(javafx.scene.chart.XYChart.Data) and removeDataItem(javafx.scene.chart.XYChart.Data) to add and remove data.

//TODO: refactor the projected lines to a separate class. -jm

Definition at line 97 of file EventDetailsChart.java.

Member Function Documentation

synchronized SimpleBooleanProperty org.sleuthkit.autopsy.timeline.ui.detailview.EventDetailsChart.bandByTypeProperty ( )
void org.sleuthkit.autopsy.timeline.ui.detailview.EventDetailsChart.clearIntervalSelector ( )

clear any references to previous interval selectors , including removing the interval selector from the ui / scene-graph

Implements org.sleuthkit.autopsy.timeline.ui.TimeLineChart< X >.

Definition at line 274 of file EventDetailsChart.java.

References org.sleuthkit.autopsy.timeline.ui.detailview.EventDetailsChart.intervalSelector.

double org.sleuthkit.autopsy.timeline.ui.detailview.EventDetailsChart.computeYTop ( double  yMin,
double  h,
TreeRangeMap< Double, Double >  maxXatY,
double  xLeft,
double  xRight 
)
private

Given information about the current layout pass so far and about a particular node, compute the y position of that node.

Parameters
yMinthe smallest (towards the top of the screen) y position to consider
hthe height of the node we are trying to position
maxXatYa map from y ranges to the max x within that range. NOTE: This map will be updated to include the node in question.
xLeftthe left x-cord of the node to position
xRightthe left x-cord of the node to position
Returns
the y position for the node in question.

Definition at line 566 of file EventDetailsChart.java.

References org.sleuthkit.autopsy.timeline.ui.detailview.EventDetailsChart.MINIMUM_EVENT_NODE_GAP, and org.sleuthkit.autopsy.timeline.ui.detailview.EventDetailsChart.MINIMUM_ROW_HEIGHT.

void org.sleuthkit.autopsy.timeline.ui.detailview.EventDetailsChart.dataItemAdded ( Series< DateTime, EventStripe series,
int  itemIndex,
Data< DateTime, EventStripe item 
)
protected
See also
note in main section of class JavaDoc
Parameters
series
itemIndex
item

Definition at line 361 of file EventDetailsChart.java.

void org.sleuthkit.autopsy.timeline.ui.detailview.EventDetailsChart.dataItemChanged ( Data< DateTime, EventStripe item)
protected
See also
note in main section of class JavaDoc
Parameters
item

Definition at line 381 of file EventDetailsChart.java.

void org.sleuthkit.autopsy.timeline.ui.detailview.EventDetailsChart.dataItemRemoved ( Data< DateTime, EventStripe item,
Series< DateTime, EventStripe series 
)
protected
See also
note in main section of class JavaDoc
Parameters
item
series

Definition at line 372 of file EventDetailsChart.java.

ContextMenu org.sleuthkit.autopsy.timeline.ui.detailview.EventDetailsChart.getChartContextMenu ( )
ContextMenu org.sleuthkit.autopsy.timeline.ui.detailview.EventDetailsChart.getChartContextMenu ( MouseEvent  clickEvent) throws MissingResourceException
TimeLineController org.sleuthkit.autopsy.timeline.ui.detailview.EventDetailsChart.getController ( )
DateTime org.sleuthkit.autopsy.timeline.ui.detailview.EventDetailsChart.getDateTimeForPosition ( double  x)

get the DateTime along the x-axis that corresponds to the given x-coordinate in the coordinate system of this EventDetailsChart

Parameters
xa x-coordinate in the space of this EventDetailsChart
Returns
the DateTime along the x-axis corresponding to the given x value (in the space of this EventDetailsChart

Definition at line 301 of file EventDetailsChart.java.

References org.sleuthkit.autopsy.timeline.ui.TimeLineChart< X >.getXAxis().

FilteredEventsModel org.sleuthkit.autopsy.timeline.ui.detailview.EventDetailsChart.getFilteredEvents ( )
Returns
the filteredEvents

Definition at line 642 of file EventDetailsChart.java.

References org.sleuthkit.autopsy.timeline.ui.detailview.EventDetailsChart.filteredEvents.

IntervalSelector<? extends DateTime> org.sleuthkit.autopsy.timeline.ui.detailview.EventDetailsChart.getIntervalSelector ( )
double org.sleuthkit.autopsy.timeline.ui.detailview.EventDetailsChart.getParentXForEpochMillis ( Long  epochMillis)
private
Axis<X> org.sleuthkit.autopsy.timeline.ui.TimeLineChart< X >.getXAxis ( )
inherited
double org.sleuthkit.autopsy.timeline.ui.detailview.EventDetailsChart.getXForEpochMillis ( Long  millis)
private
void org.sleuthkit.autopsy.timeline.ui.detailview.EventDetailsChart.layoutBundleHelper ( final EventBundleNodeBase<?,?,?>  bundleNode)
private

Set layout paramaters on the given node and layout its children

Parameters
bundleNodethe Node to layout
descriptionWdiththe maximum width for the description text

Definition at line 597 of file EventDetailsChart.java.

References org.sleuthkit.autopsy.timeline.ui.detailview.EventDetailsChart.descriptionWidth, org.sleuthkit.autopsy.timeline.ui.detailview.EventDetailsChart.descrVisibility, and org.sleuthkit.autopsy.timeline.ui.detailview.EventBundleNodeBase<,, >.layoutChildren().

void org.sleuthkit.autopsy.timeline.ui.detailview.EventDetailsChart.layoutPlotChildren ( )
protected
void org.sleuthkit.autopsy.timeline.ui.detailview.EventDetailsChart.layoutProjectionMap ( )
private
IntervalSelector<DateTime> org.sleuthkit.autopsy.timeline.ui.detailview.EventDetailsChart.newIntervalSelector ( )

derived classes should implement this so as to supply an appropriate subclass of IntervalSelector

Returns
a new interval selector

Implements org.sleuthkit.autopsy.timeline.ui.TimeLineChart< X >.

Definition at line 284 of file EventDetailsChart.java.

Referenced by org.sleuthkit.autopsy.timeline.ui.detailview.EventDetailsChart.setIntervalSelector().

static ActionGroup org.sleuthkit.autopsy.timeline.ui.TimeLineChart< X >.newZoomHistoyActionGroup ( TimeLineController  controller)
staticinherited
void org.sleuthkit.autopsy.timeline.ui.detailview.EventDetailsChart.requestChartLayout ( )
protected
void org.sleuthkit.autopsy.timeline.ui.detailview.EventDetailsChart.seriesAdded ( Series< DateTime, EventStripe series,
int  i 
)
protected
See also
note in main section of class JavaDoc
Parameters
series
i

Definition at line 339 of file EventDetailsChart.java.

void org.sleuthkit.autopsy.timeline.ui.detailview.EventDetailsChart.seriesRemoved ( Series< DateTime, EventStripe series)
protected
See also
note in main section of class JavaDoc
Parameters
series

Definition at line 349 of file EventDetailsChart.java.

void org.sleuthkit.autopsy.timeline.ui.TimeLineChart< X >.setIntervalSelector ( IntervalSelector<?extends X >  newIntervalSelector)
inherited
void org.sleuthkit.autopsy.timeline.ui.detailview.EventDetailsChart.setIntervalSelector ( IntervalSelector<?extends DateTime >  newIntervalSelector)

Member Data Documentation

Set<String> org.sleuthkit.autopsy.timeline.ui.detailview.EventDetailsChart.activeQuickHidefilters
private
final SimpleBooleanProperty org.sleuthkit.autopsy.timeline.ui.detailview.EventDetailsChart.bandByType = new SimpleBooleanProperty(false)
private

true == layout each event type in its own band, false == mix all the events together during layout

Definition at line 165 of file EventDetailsChart.java.

Referenced by org.sleuthkit.autopsy.timeline.ui.detailview.EventDetailsChart.bandByTypeProperty(), and org.sleuthkit.autopsy.timeline.ui.detailview.EventDetailsChart.layoutPlotChildren().

ContextMenu org.sleuthkit.autopsy.timeline.ui.detailview.EventDetailsChart.chartContextMenu
private
final TimeLineController org.sleuthkit.autopsy.timeline.ui.detailview.EventDetailsChart.controller
private
double org.sleuthkit.autopsy.timeline.ui.detailview.EventDetailsChart.descriptionWidth
private
final SimpleObjectProperty<DescriptionVisibility> org.sleuthkit.autopsy.timeline.ui.detailview.EventDetailsChart.descrVisibility
private
Initial value:
=
new SimpleObjectProperty<>(DescriptionVisibility.SHOWN)

how much detail of the description to show in the ui

Definition at line 176 of file EventDetailsChart.java.

Referenced by org.sleuthkit.autopsy.timeline.ui.detailview.EventDetailsChart.layoutBundleHelper().

final ObservableList<EventStripe> org.sleuthkit.autopsy.timeline.ui.detailview.EventDetailsChart.eventStripes = FXCollections.observableArrayList()
private

Definition at line 156 of file EventDetailsChart.java.

final FilteredEventsModel org.sleuthkit.autopsy.timeline.ui.detailview.EventDetailsChart.filteredEvents
private
Line org.sleuthkit.autopsy.timeline.ui.detailview.EventDetailsChart.guideLine
private

a user positionable vertical line to help compare events

Definition at line 127 of file EventDetailsChart.java.

final Image org.sleuthkit.autopsy.timeline.ui.detailview.EventDetailsChart.HIDE = new Image("/org/sleuthkit/autopsy/timeline/images/eye--minus.png")
staticprivate

Definition at line 100 of file EventDetailsChart.java.

IntervalSelector<? extends DateTime> org.sleuthkit.autopsy.timeline.ui.detailview.EventDetailsChart.intervalSelector
private
final InvalidationListener org.sleuthkit.autopsy.timeline.ui.detailview.EventDetailsChart.layoutInvalidationListener
private
Initial value:
= (Observable o) -> {
}

listener that triggers chart layout pass

Definition at line 139 of file EventDetailsChart.java.

final Image org.sleuthkit.autopsy.timeline.ui.detailview.EventDetailsChart.MARKER = new Image("/org/sleuthkit/autopsy/timeline/images/marker.png", 16, 16, true, true, true)
staticprivate

Definition at line 102 of file EventDetailsChart.java.

final ReadOnlyDoubleWrapper org.sleuthkit.autopsy.timeline.ui.detailview.EventDetailsChart.maxY = new ReadOnlyDoubleWrapper(0.0)
private

the maximum y value used so far during the most recent layout pass

Definition at line 146 of file EventDetailsChart.java.

final int org.sleuthkit.autopsy.timeline.ui.detailview.EventDetailsChart.MINIMUM_EVENT_NODE_GAP = 4
staticprivate
final int org.sleuthkit.autopsy.timeline.ui.detailview.EventDetailsChart.MINIMUM_ROW_HEIGHT = 24
staticprivate
final Group org.sleuthkit.autopsy.timeline.ui.detailview.EventDetailsChart.nodeGroup = new Group()
private

the group that all event nodes are added to. This facilitates scrolling by allowing a single translation of this group.

Definition at line 153 of file EventDetailsChart.java.

final SimpleBooleanProperty org.sleuthkit.autopsy.timeline.ui.detailview.EventDetailsChart.oneEventPerRow = new SimpleBooleanProperty(false)
private

true == enforce that no two events can share the same 'row', leading to sparser but possibly clearer layout. false == put unrelated events in the same 'row', creating a denser more compact layout

Definition at line 171 of file EventDetailsChart.java.

final int org.sleuthkit.autopsy.timeline.ui.detailview.EventDetailsChart.PROJECTED_LINE_STROKE_WIDTH = 5
staticprivate

Definition at line 104 of file EventDetailsChart.java.

final int org.sleuthkit.autopsy.timeline.ui.detailview.EventDetailsChart.PROJECTED_LINE_Y_OFFSET = 5
staticprivate
final Map<EventCluster, Line> org.sleuthkit.autopsy.timeline.ui.detailview.EventDetailsChart.projectionMap = new ConcurrentHashMap<>()
private
final Image org.sleuthkit.autopsy.timeline.ui.detailview.EventDetailsChart.SHOW = new Image("/org/sleuthkit/autopsy/timeline/images/eye--plus.png")
staticprivate

Definition at line 101 of file EventDetailsChart.java.

final ObservableList< EventStripeNode> org.sleuthkit.autopsy.timeline.ui.detailview.EventDetailsChart.sortedStripeNodes = stripeNodes.sorted(Comparator.comparing(EventStripeNode::getStartMillis))
private
final ObservableList< EventStripeNode> org.sleuthkit.autopsy.timeline.ui.detailview.EventDetailsChart.stripeNodes = FXCollections.observableArrayList()
private

Definition at line 157 of file EventDetailsChart.java.

final String org.sleuthkit.autopsy.timeline.ui.detailview.EventDetailsChart.styleSheet = GuideLine.class.getResource("EventsDetailsChart.css").toExternalForm()
staticprivate

Definition at line 99 of file EventDetailsChart.java.


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

Copyright © 2012-2015 Basis Technology. Generated on: Wed Apr 6 2016
This work is licensed under a Creative Commons Attribution-Share Alike 3.0 United States License.