19 package org.sleuthkit.autopsy.timeline;
 
   21 import java.awt.Component;
 
   22 import java.io.IOException;
 
   23 import java.util.logging.Level;
 
   24 import javafx.application.Platform;
 
   25 import javax.swing.ImageIcon;
 
   26 import javax.swing.JButton;
 
   27 import javax.swing.JMenuItem;
 
   28 import org.openide.awt.ActionID;
 
   29 import org.openide.awt.ActionReference;
 
   30 import org.openide.awt.ActionReferences;
 
   31 import org.openide.awt.ActionRegistration;
 
   32 import org.openide.util.HelpCtx;
 
   33 import org.openide.util.NbBundle;
 
   34 import org.openide.util.actions.CallableSystemAction;
 
   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 = 102),
 
   54     @ActionReference(path = 
"Toolbars/Case", position = 102)})
 
   57     private static final long serialVersionUID = 1L;
 
   59     private static final int FILE_LIMIT = 6_000_000;
 
   64     private final JButton toolbarButton = 
new JButton(getName(),
 
   65             new ImageIcon(getClass().getResource(
"images/btn_icon_timeline_colorized_26.png"))); 
 
   71     synchronized static void invalidateController() {
 
   72         timeLineController = null;
 
   76         toolbarButton.addActionListener(actionEvent -> performAction());
 
   77         menuItem = super.getMenuPresenter();
 
   78         this.setEnabled(
false);
 
   93     public 
void performAction() {
 
   95             Platform.runLater(PromptDialogManager::showTooManyFiles);
 
   97                 if (timeLineController != null) {
 
  103             Platform.runLater(PromptDialogManager::showTimeLineDisabledMessage);
 
  111         "OpenTimelineAction.settingsErrorMessage=Failed to initialize timeline settings.",
 
  112         "OpenTimeLineAction.msgdlg.text=Could not create timeline, there are no data sources."})
 
  113     synchronized private void showTimeline(AbstractFile file, BlackboardArtifact artifact) {
 
  116             if (currentCase.
hasData() == 
false) {
 
  118                 logger.log(Level.INFO, 
"Could not create timeline, there are no data sources.");
 
  122                 if (timeLineController == null) {
 
  129                 timeLineController.showTimeLine(file, artifact);
 
  131             } 
catch (IOException iOException) {
 
  133                 logger.log(Level.SEVERE, 
"Failed to initialize per case timeline settings.", iOException);
 
  144     public 
void showTimeline() {
 
  145         showTimeline(null, null);
 
  156     public 
void showFileInTimeline(AbstractFile file) {
 
  157         showTimeline(file, null);
 
  167     public 
void showArtifactInTimeline(BlackboardArtifact artifact) {
 
  168         showTimeline(null, artifact);
 
  172     @NbBundle.Messages(
"OpenTimelineAction.displayName=Timeline")
 
  174         return Bundle.OpenTimelineAction_displayName();
 
  179         return HelpCtx.DEFAULT_HELP;
 
  194         super.setEnabled(enable);
 
  195         menuItem.setEnabled(enable);
 
  196         toolbarButton.setEnabled(enable);
 
  206         return toolbarButton;
 
  218             logger.log(Level.SEVERE, 
"Can not open timeline with no case open.", ex);
 
  219         } 
catch (TskCoreException ex) {
 
  220             logger.log(Level.SEVERE, 
"Error counting files in the DB.", ex);
 
Component getToolbarPresenter()
static boolean isJavaFxInited()
void setEnabled(boolean enable)
JMenuItem getMenuPresenter()
SleuthkitCase getSleuthkitCase()
synchronized void showTimeline(AbstractFile file, BlackboardArtifact artifact)
static String getConfigSetting(String moduleName, String settingName)
synchronized static Logger getLogger(String name)
static Case getCurrentCaseThrows()
static void info(String message)
static boolean isCaseOpen()
static void error(String message)