Autopsy  3.1
Graphical digital forensics platform for The Sleuth Kit and other tools.
ReportWizardAction.java
Go to the documentation of this file.
1  /*
2  *
3  * Autopsy Forensic Browser
4  *
5  * Copyright 2013 Basis Technology Corp.
6  *
7  * Copyright 2012 42six Solutions.
8  * Contact: aebadirad <at> 42six <dot> com
9  * Project Contact/Architect: carrier <at> sleuthkit <dot> org
10  *
11  * Licensed under the Apache License, Version 2.0 (the "License");
12  * you may not use this file except in compliance with the License.
13  * You may obtain a copy of the License at
14  *
15  * http://www.apache.org/licenses/LICENSE-2.0
16  *
17  * Unless required by applicable law or agreed to in writing, software
18  * distributed under the License is distributed on an "AS IS" BASIS,
19  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
20  * See the License for the specific language governing permissions and
21  * limitations under the License.
22  */
23 package org.sleuthkit.autopsy.report;
24 
25 import java.awt.Component;
26 import java.awt.event.ActionEvent;
27 import java.awt.event.ActionListener;
28 import java.beans.PropertyChangeEvent;
29 import java.beans.PropertyChangeListener;
30 import java.io.File;
31 import java.text.MessageFormat;
32 import java.util.Map;
33 import java.util.logging.Level;
34 import javax.swing.ImageIcon;
35 import javax.swing.JButton;
36 import org.openide.DialogDisplayer;
37 import org.openide.WizardDescriptor;
38 import org.openide.awt.ActionID;
39 import org.openide.awt.ActionReference;
40 import org.openide.awt.ActionReferences;
41 import org.openide.awt.ActionRegistration;
42 import org.openide.util.HelpCtx;
43 import org.openide.util.NbBundle;
44 import org.openide.util.actions.CallableSystemAction;
45 import org.openide.util.actions.Presenter;
49 
50 @ActionID(category = "Tools", id = "org.sleuthkit.autopsy.report.ReportWizardAction")
51 @ActionRegistration(displayName = "#CTL_ReportWizardAction", lazy = false)
52 @ActionReferences(value = {
53  @ActionReference(path = "Menu/Tools", position = 80)})
54 // moved into Bundle
55 //@NbBundle.Messages(value = "CTL_ReportWizardAction=Run Report")
56 public final class ReportWizardAction extends CallableSystemAction implements Presenter.Toolbar, ActionListener {
57  private static final Logger logger = Logger.getLogger(ReportWizardAction.class.getName());
58 
59  private JButton toolbarButton = new JButton();
60  private static final String ACTION_NAME = NbBundle.getMessage(ReportWizardAction.class, "ReportWizardAction.actionName.text");
61 
67  @SuppressWarnings("unchecked")
68  public static void doReportWizard() {
69  WizardDescriptor wiz = new WizardDescriptor(new ReportWizardIterator());
70  wiz.setTitleFormat(new MessageFormat("{0} {1}"));
71  wiz.setTitle(NbBundle.getMessage(ReportWizardAction.class, "ReportWizardAction.reportWiz.title"));
72  if (DialogDisplayer.getDefault().notify(wiz) == WizardDescriptor.FINISH_OPTION) {
73  @SuppressWarnings("unchecked")
74  ReportGenerator generator = new ReportGenerator((Map<TableReportModule, Boolean>)wiz.getProperty("tableModuleStates"), //NON-NLS
75  (Map<GeneralReportModule, Boolean>)wiz.getProperty("generalModuleStates"), //NON-NLS
76  (Map<FileReportModule, Boolean>)wiz.getProperty("fileModuleStates")); //NON-NLS
77  generator.generateTableReports((Map<ARTIFACT_TYPE, Boolean>)wiz.getProperty("artifactStates"), (Map<String, Boolean>)wiz.getProperty("tagStates")); //NON-NLS
78  generator.generateFileListReports((Map<FileReportDataTypes, Boolean>)wiz.getProperty("fileReportOptions")); //NON-NLS
79  generator.generateGeneralReports();
80  generator.displayProgressPanels();
81  }
82  }
83 
84  public ReportWizardAction() {
85  setEnabled(false);
86  Case.addPropertyChangeListener(new PropertyChangeListener() {
87  @Override
88  public void propertyChange(PropertyChangeEvent evt) {
89  if (evt.getPropertyName().equals(Case.Events.CURRENT_CASE.toString())) {
90  Case newCase = (Case) evt.getNewValue();
91  setEnabled(newCase != null);
92 
93  // Make the cases' Reoports folder, if it doesn't exist
94  if (newCase != null) {
95  boolean exists = (new File(newCase.getCaseDirectory() + File.separator + "Reports")).exists();
96  if (!exists) {
97  boolean reportCreate = (new File(newCase.getCaseDirectory() + File.separator + "Reports")).mkdirs();
98  if (!reportCreate) {
99  logger.log(Level.WARNING, "Could not create Reports directory for case. It does not exist."); //NON-NLS
100  }
101  }
102  }
103  }
104  }
105  });
106 
107  // Initialize the Generate Report button
108  toolbarButton.addActionListener(new ActionListener() {
109  @Override
110  public void actionPerformed(ActionEvent e) {
112  }
113  });
114  }
115 
116  @Override
117  @SuppressWarnings("unchecked")
118  public void actionPerformed(ActionEvent e) {
119  doReportWizard();
120  }
121 
122  @Override
123  public void performAction() {
124  }
125 
126  @Override
127  public String getName() {
128  return ACTION_NAME;
129  }
130 
131  @Override
132  public HelpCtx getHelpCtx() {
133  return HelpCtx.DEFAULT_HELP;
134  }
135 
141  @Override
142  public Component getToolbarPresenter() {
143  ImageIcon icon = new ImageIcon(getClass().getResource("images/btn_icon_generate_report.png")); //NON-NLS
144  toolbarButton.setIcon(icon);
145  toolbarButton.setText(NbBundle.getMessage(this.getClass(), "ReportWizardAction.toolBarButton.text"));
146  return toolbarButton;
147  }
148 
154  @Override
155  public void setEnabled(boolean value) {
156  super.setEnabled(value);
157  toolbarButton.setEnabled(value);
158  }
159 }
static synchronized void addPropertyChangeListener(PropertyChangeListener listener)
Definition: Case.java:833
static Logger getLogger(String name)
Definition: Logger.java:131

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.