Autopsy  3.1
Graphical digital forensics platform for The Sleuth Kit and other tools.
TimeLineResultView.java
Go to the documentation of this file.
1 /*
2  * Autopsy Forensic Browser
3  *
4  * Copyright 2013 Basis Technology Corp.
5  * Contact: carrier <at> sleuthkit <dot> org
6  *
7  * Licensed under the Apache License, Version 2.0 (the "License");
8  * you may not use this file except in compliance with the License.
9  * You may obtain a copy of the License at
10  *
11  * http://www.apache.org/licenses/LICENSE-2.0
12  *
13  * Unless required by applicable law or agreed to in writing, software
14  * distributed under the License is distributed on an "AS IS" BASIS,
15  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16  * See the License for the specific language governing permissions and
17  * limitations under the License.
18  */
19 package org.sleuthkit.autopsy.timeline.ui;
20 
21 import java.util.HashSet;
22 import java.util.Set;
23 import javafx.beans.Observable;
24 import javax.swing.SwingUtilities;
25 import org.joda.time.format.DateTimeFormatter;
26 import org.openide.nodes.Node;
27 import org.openide.util.NbBundle;
34 
43 public class TimeLineResultView implements TimeLineView {
44 
48 
50 
52 
53  private Set<Long> selectedEventIDs = new HashSet<>();
54 
56  return dataResultPanel;
57  }
58 
59  public TimeLineResultView(DataContent dataContent) {
60  dataResultPanel = DataResultPanel.createInstanceUninitialized("", "", Node.EMPTY, 0, dataContent);
61  }
62 
68  @Override
69  public void setController(TimeLineController controller) {
70  this.controller = controller;
71 
72  //set up listeners on relevant properties
73  TimeLineController.getTimeZone().addListener((Observable observable) -> {
74  dataResultPanel.setPath(getSummaryString());
75  });
76 
77  controller.getSelectedEventIDs().addListener((Observable o) -> {
78  refresh();
79  });
80 
81  setModel(controller.getEventsModel());
82  }
83 
87  @Override
88  synchronized public void setModel(final FilteredEventsModel filteredEvents) {
89  this.filteredEvents = filteredEvents;
90  }
91 
93  private String getSummaryString() {
94  if (controller.getSelectedTimeRange().get() != null) {
95  final DateTimeFormatter zonedFormatter = TimeLineController.getZonedFormatter();
96  return NbBundle.getMessage(this.getClass(), "TimeLineResultView.startDateToEndDate.text",
97  controller.getSelectedTimeRange().get().getStart()
99  .toString(zonedFormatter),
100  controller.getSelectedTimeRange().get().getEnd()
102  .toString(zonedFormatter));
103  }
104  return "";
105  }
106 
108  public final void refresh() {
109 
110  Set<Long> newSelectedEventIDs = new HashSet<>(controller.getSelectedEventIDs());
111  if (selectedEventIDs.equals(newSelectedEventIDs) == false) {
112  selectedEventIDs = newSelectedEventIDs;
113  final EventRootNode root = new EventRootNode(
114  NbBundle.getMessage(this.getClass(), "Timeline.node.root"), selectedEventIDs,
115  filteredEvents);
116 
117  //this must be in edt or exception is thrown
118  SwingUtilities.invokeLater(() -> {
119  dataResultPanel.setPath(getSummaryString());
120  dataResultPanel.setNode(root);
121  });
122  }
123  }
124 }
static ReadOnlyObjectProperty< TimeZone > getTimeZone()
static DataResultPanel createInstanceUninitialized(String title, String pathText, Node givenNode, int totalMatches, DataContent dataContent)
synchronized ReadOnlyObjectProperty< Interval > getSelectedTimeRange()
synchronized void setModel(final FilteredEventsModel filteredEvents)
synchronized ObservableList< Long > getSelectedEventIDs()

Copyright © 2012-2015 Basis Technology. Generated on: Mon Oct 19 2015
This work is licensed under a Creative Commons Attribution-Share Alike 3.0 United States License.