19package org.sleuthkit.autopsy.timeline;
21import java.awt.Component;
22import java.util.logging.Level;
23import javafx.application.Platform;
24import javax.swing.ImageIcon;
25import javax.swing.JButton;
26import javax.swing.JMenuItem;
27import org.joda.time.Interval;
28import org.openide.awt.ActionID;
29import org.openide.awt.ActionReference;
30import org.openide.awt.ActionReferences;
31import org.openide.awt.ActionRegistration;
32import org.openide.util.HelpCtx;
33import org.openide.util.NbBundle;
34import org.openide.util.actions.CallableSystemAction;
35import org.sleuthkit.autopsy.casemodule.Case;
36import org.sleuthkit.autopsy.casemodule.NoCurrentCaseException;
37import org.sleuthkit.autopsy.core.Installer;
38import org.sleuthkit.autopsy.coreutils.Logger;
39import org.sleuthkit.autopsy.coreutils.MessageNotifyUtil;
40import org.sleuthkit.autopsy.coreutils.ModuleSettings;
41import org.sleuthkit.autopsy.coreutils.ThreadConfined;
42import org.sleuthkit.datamodel.AbstractFile;
43import org.sleuthkit.datamodel.BlackboardArtifact;
44import org.sleuthkit.datamodel.TskCoreException;
50@ActionID(category =
"Tools",
id =
"org.sleuthkit.autopsy.timeline.Timeline")
51@ActionRegistration(displayName =
"#CTL_MakeTimeline", lazy =
false)
52@ActionReferences(value = {
53 @ActionReference(path =
"Menu/Tools", position = 104),
54 @ActionReference(path =
"Toolbars/Case", position = 104)})
63 new ImageIcon(getClass().getResource(
"images/btn_icon_timeline_colorized_26.png")));
86 Platform.runLater(PromptDialogManager::showTooManyFiles);
89 Platform.runLater(PromptDialogManager::showTimeLineDisabledMessage);
94 } catch (TskCoreException ex) {
96 logger.log(Level.SEVERE,
"Error showingtimeline.", ex);
102 "OpenTimelineAction.settingsErrorMessage=Failed to initialize timeline settings.",
103 "OpenTimeLineAction.msgdlg.text=Could not create timeline, there are no data sources."})
104 synchronized private void showTimeline(AbstractFile file, BlackboardArtifact artifact, Interval timeSpan)
throws TskCoreException {
109 logger.log(Level.INFO,
"Could not create timeline, there are no data sources.");
115 if (file ==
null && artifact ==
null) {
116 if (timeSpan ==
null) {
117 controller.showFullRange();
122 controller.showTimeLine(file, artifact);
171 @NbBundle.Messages(
"OpenTimelineAction.displayName=Timeline")
173 return Bundle.OpenTimelineAction_displayName();
178 return HelpCtx.DEFAULT_HELP;
193 super.setEnabled(enable);
217 logger.log(Level.SEVERE,
"Can not open timeline with no case open.", ex);
218 }
catch (TskCoreException ex) {
219 logger.log(Level.SEVERE,
"Error counting files in the DB.", ex);
volatile boolean hasDataSource
SleuthkitCase getSleuthkitCase()
static Case getCurrentCaseThrows()
static boolean isCaseOpen()
static boolean isJavaFxInited()
synchronized static Logger getLogger(String name)
static void error(String message)
static void info(String message)
static synchronized String getConfigSetting(String moduleName, String settingName)
static final int FILE_LIMIT
static final Logger logger
static final long serialVersionUID
final JButton toolbarButton
JMenuItem getMenuPresenter()
void setEnabled(boolean enable)
synchronized void showTimeline(AbstractFile file, BlackboardArtifact artifact, Interval timeSpan)
void showFileInTimeline(AbstractFile file)
Component getToolbarPresenter()
void showArtifactInTimeline(BlackboardArtifact artifact)
synchronized boolean pushTimeRange(Interval timeRange)
static TimeLineController getController()