@ -56,7 +56,7 @@ import org.sleuthkit.datamodel.SleuthkitJNI.CaseDbHandle.AddImageProcess;
|
||||
* open at a time. Use getCurrentCase() to retrieve the object for the current
|
||||
* case.
|
||||
*/
|
||||
public class Case {
|
||||
public class Case implements SleuthkitCase.ErrorObserver {
|
||||
|
||||
private static final String autopsyVer = Version.getVersion(); // current version of autopsy. Change it when the version is changed
|
||||
private static final String appName = Version.getName() + " " + autopsyVer;
|
||||
@ -130,6 +130,7 @@ public class Case {
|
||||
this.xmlcm = xmlcm;
|
||||
this.db = db;
|
||||
this.services = new Services(db);
|
||||
db.addErrorObserver(this);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -983,4 +984,9 @@ public class Case {
|
||||
CoreComponentControl.closeCoreWindows();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void receiveError(String context, String errorMessage) {
|
||||
MessageNotifyUtil.Notify.error(context, errorMessage);
|
||||
}
|
||||
}
|
||||
|
@ -30,8 +30,8 @@ import org.sleuthkit.autopsy.coreutils.Logger;
|
||||
*
|
||||
* @author jantonius
|
||||
*/
|
||||
@ServiceProvider(service = CaseNewAction.class)
|
||||
public final class CaseNewAction implements ActionListener {
|
||||
@ServiceProvider(service = CaseNewActionInterface.class)
|
||||
public final class CaseNewAction implements CaseNewActionInterface {
|
||||
|
||||
private NewCaseWizardAction wizard = SystemAction.get(NewCaseWizardAction.class);
|
||||
|
||||
|
@ -0,0 +1,30 @@
|
||||
/*
|
||||
* Autopsy Forensic Browser
|
||||
*
|
||||
* Copyright 2013 Basis Technology Corp.
|
||||
* Contact: carrier <at> sleuthkit <dot> org
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
|
||||
package org.sleuthkit.autopsy.casemodule;
|
||||
|
||||
import java.awt.event.ActionListener;
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
public interface CaseNewActionInterface extends ActionListener {
|
||||
|
||||
}
|
@ -1,4 +1,4 @@
|
||||
<?xml version="1.1" encoding="UTF-8" ?>
|
||||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
|
||||
<Form version="1.5" maxVersion="1.7" type="org.netbeans.modules.form.forminfo.JPanelFormInfo">
|
||||
<AuxValues>
|
||||
@ -36,7 +36,7 @@
|
||||
<Component id="autopsyLogo" alignment="0" min="-2" pref="257" max="-2" attributes="0"/>
|
||||
<Group type="102" alignment="0" attributes="0">
|
||||
<Component id="editorPanel" min="-2" max="-2" attributes="1"/>
|
||||
<EmptySpace max="-2" attributes="0"/>
|
||||
<EmptySpace type="separate" max="-2" attributes="0"/>
|
||||
<Component id="closeButton" min="-2" max="-2" attributes="0"/>
|
||||
</Group>
|
||||
</Group>
|
||||
@ -65,16 +65,16 @@
|
||||
<EmptySpace max="-2" attributes="0"/>
|
||||
<Component id="createNewLabel" min="-2" max="-2" attributes="0"/>
|
||||
</Group>
|
||||
<Group type="102" alignment="0" attributes="0">
|
||||
<Component id="openCaseButton" min="-2" max="-2" attributes="1"/>
|
||||
<EmptySpace max="-2" attributes="0"/>
|
||||
<Component id="openLabel" min="-2" max="-2" attributes="0"/>
|
||||
</Group>
|
||||
<Group type="102" alignment="0" attributes="0">
|
||||
<Component id="openRecentButton" min="-2" pref="70" max="-2" attributes="1"/>
|
||||
<EmptySpace max="-2" attributes="0"/>
|
||||
<Component id="openRecentLabel" min="-2" max="-2" attributes="0"/>
|
||||
</Group>
|
||||
<Group type="102" attributes="0">
|
||||
<Component id="openCaseButton" min="-2" max="-2" attributes="1"/>
|
||||
<EmptySpace max="-2" attributes="0"/>
|
||||
<Component id="openLabel" min="-2" max="-2" attributes="0"/>
|
||||
</Group>
|
||||
</Group>
|
||||
<EmptySpace pref="60" max="32767" attributes="0"/>
|
||||
</Group>
|
||||
@ -83,37 +83,22 @@
|
||||
<DimensionLayout dim="1">
|
||||
<Group type="103" groupAlignment="0" attributes="0">
|
||||
<Group type="102" attributes="0">
|
||||
<Group type="103" groupAlignment="0" attributes="0">
|
||||
<Group type="102" attributes="0">
|
||||
<EmptySpace min="-2" pref="32" max="-2" attributes="0"/>
|
||||
<Component id="newCaseButton" min="-2" pref="56" max="-2" attributes="0"/>
|
||||
</Group>
|
||||
<Group type="102" alignment="0" attributes="0">
|
||||
<EmptySpace min="-2" pref="50" max="-2" attributes="0"/>
|
||||
<Component id="createNewLabel" min="-2" max="-2" attributes="0"/>
|
||||
</Group>
|
||||
<EmptySpace min="-2" pref="32" max="-2" attributes="0"/>
|
||||
<Group type="103" groupAlignment="2" attributes="0">
|
||||
<Component id="createNewLabel" alignment="2" min="-2" max="-2" attributes="0"/>
|
||||
<Component id="newCaseButton" alignment="2" min="-2" pref="56" max="-2" attributes="0"/>
|
||||
</Group>
|
||||
<Group type="103" groupAlignment="0" attributes="0">
|
||||
<Group type="102" attributes="0">
|
||||
<EmptySpace min="-2" max="-2" attributes="0"/>
|
||||
<Component id="openCaseButton" min="-2" pref="58" max="-2" attributes="0"/>
|
||||
</Group>
|
||||
<Group type="102" alignment="0" attributes="0">
|
||||
<EmptySpace min="-2" pref="31" max="-2" attributes="0"/>
|
||||
<Component id="openLabel" min="-2" max="-2" attributes="0"/>
|
||||
</Group>
|
||||
<EmptySpace max="-2" attributes="0"/>
|
||||
<Group type="103" groupAlignment="2" attributes="0">
|
||||
<Component id="openRecentLabel" alignment="2" min="-2" max="-2" attributes="0"/>
|
||||
<Component id="openRecentButton" alignment="2" min="-2" pref="70" max="-2" attributes="0"/>
|
||||
</Group>
|
||||
<Group type="103" groupAlignment="0" attributes="0">
|
||||
<Group type="102" attributes="0">
|
||||
<EmptySpace max="-2" attributes="0"/>
|
||||
<Component id="openRecentButton" min="-2" max="-2" attributes="0"/>
|
||||
</Group>
|
||||
<Group type="102" alignment="0" attributes="0">
|
||||
<EmptySpace min="-2" pref="32" max="-2" attributes="0"/>
|
||||
<Component id="openRecentLabel" min="-2" max="-2" attributes="0"/>
|
||||
</Group>
|
||||
<EmptySpace min="0" pref="0" max="32767" attributes="0"/>
|
||||
<Group type="103" groupAlignment="2" attributes="0">
|
||||
<Component id="openLabel" alignment="2" min="-2" max="-2" attributes="0"/>
|
||||
<Component id="openCaseButton" alignment="2" min="-2" pref="58" max="-2" attributes="0"/>
|
||||
</Group>
|
||||
<EmptySpace max="32767" attributes="0"/>
|
||||
<EmptySpace pref="25" max="32767" attributes="0"/>
|
||||
</Group>
|
||||
</Group>
|
||||
</DimensionLayout>
|
||||
@ -140,30 +125,6 @@
|
||||
<EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="newCaseButtonActionPerformed"/>
|
||||
</Events>
|
||||
</Component>
|
||||
<Component class="javax.swing.JButton" name="openCaseButton">
|
||||
<Properties>
|
||||
<Property name="icon" type="javax.swing.Icon" editor="org.netbeans.modules.form.editors2.IconEditor">
|
||||
<Image iconType="3" name="/org/sleuthkit/autopsy/casemodule/btn_icon_open_existing.png"/>
|
||||
</Property>
|
||||
<Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
|
||||
<ResourceString bundle="org/sleuthkit/autopsy/casemodule/Bundle.properties" key="CueBannerPanel.openCaseButton.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/>
|
||||
</Property>
|
||||
<Property name="border" type="javax.swing.border.Border" editor="org.netbeans.modules.form.RADConnectionPropertyEditor">
|
||||
<Connection code="null" type="code"/>
|
||||
</Property>
|
||||
<Property name="borderPainted" type="boolean" value="false"/>
|
||||
<Property name="contentAreaFilled" type="boolean" value="false"/>
|
||||
<Property name="margin" type="java.awt.Insets" editor="org.netbeans.beaninfo.editors.InsetsEditor">
|
||||
<Insets value="[1, 1, 1, 1]"/>
|
||||
</Property>
|
||||
<Property name="preferredSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor">
|
||||
<Dimension value="[70, 70]"/>
|
||||
</Property>
|
||||
</Properties>
|
||||
<Events>
|
||||
<EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="openCaseButtonActionPerformed"/>
|
||||
</Events>
|
||||
</Component>
|
||||
<Component class="javax.swing.JButton" name="openRecentButton">
|
||||
<Properties>
|
||||
<Property name="icon" type="javax.swing.Icon" editor="org.netbeans.modules.form.editors2.IconEditor">
|
||||
@ -195,16 +156,6 @@
|
||||
</Property>
|
||||
</Properties>
|
||||
</Component>
|
||||
<Component class="javax.swing.JLabel" name="openLabel">
|
||||
<Properties>
|
||||
<Property name="font" type="java.awt.Font" editor="org.netbeans.beaninfo.editors.FontEditor">
|
||||
<Font name="Tahoma" size="13" style="0"/>
|
||||
</Property>
|
||||
<Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
|
||||
<ResourceString bundle="org/sleuthkit/autopsy/casemodule/Bundle.properties" key="CueBannerPanel.openLabel.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/>
|
||||
</Property>
|
||||
</Properties>
|
||||
</Component>
|
||||
<Component class="javax.swing.JLabel" name="openRecentLabel">
|
||||
<Properties>
|
||||
<Property name="font" type="java.awt.Font" editor="org.netbeans.beaninfo.editors.FontEditor">
|
||||
@ -215,6 +166,40 @@
|
||||
</Property>
|
||||
</Properties>
|
||||
</Component>
|
||||
<Component class="javax.swing.JButton" name="openCaseButton">
|
||||
<Properties>
|
||||
<Property name="icon" type="javax.swing.Icon" editor="org.netbeans.modules.form.editors2.IconEditor">
|
||||
<Image iconType="3" name="/org/sleuthkit/autopsy/casemodule/btn_icon_open_existing.png"/>
|
||||
</Property>
|
||||
<Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
|
||||
<ResourceString bundle="org/sleuthkit/autopsy/casemodule/Bundle.properties" key="CueBannerPanel.openCaseButton.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/>
|
||||
</Property>
|
||||
<Property name="border" type="javax.swing.border.Border" editor="org.netbeans.modules.form.RADConnectionPropertyEditor">
|
||||
<Connection code="null" type="code"/>
|
||||
</Property>
|
||||
<Property name="borderPainted" type="boolean" value="false"/>
|
||||
<Property name="contentAreaFilled" type="boolean" value="false"/>
|
||||
<Property name="margin" type="java.awt.Insets" editor="org.netbeans.beaninfo.editors.InsetsEditor">
|
||||
<Insets value="[1, 1, 1, 1]"/>
|
||||
</Property>
|
||||
<Property name="preferredSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor">
|
||||
<Dimension value="[70, 70]"/>
|
||||
</Property>
|
||||
</Properties>
|
||||
<Events>
|
||||
<EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="openCaseButtonActionPerformed"/>
|
||||
</Events>
|
||||
</Component>
|
||||
<Component class="javax.swing.JLabel" name="openLabel">
|
||||
<Properties>
|
||||
<Property name="font" type="java.awt.Font" editor="org.netbeans.beaninfo.editors.FontEditor">
|
||||
<Font name="Tahoma" size="13" style="0"/>
|
||||
</Property>
|
||||
<Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
|
||||
<ResourceString bundle="org/sleuthkit/autopsy/casemodule/Bundle.properties" key="CueBannerPanel.openLabel.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/>
|
||||
</Property>
|
||||
</Properties>
|
||||
</Component>
|
||||
</SubComponents>
|
||||
</Container>
|
||||
<Component class="javax.swing.JLabel" name="autopsyLogo">
|
||||
|
@ -29,6 +29,7 @@ import javax.swing.JFrame;
|
||||
import javax.swing.JPanel;
|
||||
import org.openide.util.Lookup;
|
||||
import org.sleuthkit.autopsy.coreutils.Version;
|
||||
import org.netbeans.api.options.OptionsDisplayer;
|
||||
|
||||
/**
|
||||
*
|
||||
@ -61,11 +62,11 @@ public class CueBannerPanel extends javax.swing.JPanel {
|
||||
closeButton = new javax.swing.JButton();
|
||||
editorPanel = new javax.swing.JPanel();
|
||||
newCaseButton = new javax.swing.JButton();
|
||||
openCaseButton = new javax.swing.JButton();
|
||||
openRecentButton = new javax.swing.JButton();
|
||||
createNewLabel = new javax.swing.JLabel();
|
||||
openLabel = new javax.swing.JLabel();
|
||||
openRecentLabel = new javax.swing.JLabel();
|
||||
openCaseButton = new javax.swing.JButton();
|
||||
openLabel = new javax.swing.JLabel();
|
||||
autopsyLogo = new javax.swing.JLabel();
|
||||
this.autopsyLogo.setText("");
|
||||
|
||||
@ -83,6 +84,24 @@ public class CueBannerPanel extends javax.swing.JPanel {
|
||||
}
|
||||
});
|
||||
|
||||
openRecentButton.setIcon(new javax.swing.ImageIcon(getClass().getResource("/org/sleuthkit/autopsy/casemodule/btn_icon_open_recent.png"))); // NOI18N
|
||||
openRecentButton.setText(org.openide.util.NbBundle.getMessage(CueBannerPanel.class, "CueBannerPanel.openRecentButton.text")); // NOI18N
|
||||
openRecentButton.setBorder(null);
|
||||
openRecentButton.setBorderPainted(false);
|
||||
openRecentButton.setContentAreaFilled(false);
|
||||
openRecentButton.setPreferredSize(new java.awt.Dimension(70, 70));
|
||||
openRecentButton.addActionListener(new java.awt.event.ActionListener() {
|
||||
public void actionPerformed(java.awt.event.ActionEvent evt) {
|
||||
openRecentButtonActionPerformed(evt);
|
||||
}
|
||||
});
|
||||
|
||||
createNewLabel.setFont(new java.awt.Font("Tahoma", 0, 13)); // NOI18N
|
||||
createNewLabel.setText(org.openide.util.NbBundle.getMessage(CueBannerPanel.class, "CueBannerPanel.createNewLabel.text")); // NOI18N
|
||||
|
||||
openRecentLabel.setFont(new java.awt.Font("Tahoma", 0, 13)); // NOI18N
|
||||
openRecentLabel.setText(org.openide.util.NbBundle.getMessage(CueBannerPanel.class, "CueBannerPanel.openRecentLabel.text")); // NOI18N
|
||||
|
||||
openCaseButton.setIcon(new javax.swing.ImageIcon(getClass().getResource("/org/sleuthkit/autopsy/casemodule/btn_icon_open_existing.png"))); // NOI18N
|
||||
openCaseButton.setText(org.openide.util.NbBundle.getMessage(CueBannerPanel.class, "CueBannerPanel.openCaseButton.text")); // NOI18N
|
||||
openCaseButton.setBorder(null);
|
||||
@ -96,27 +115,9 @@ public class CueBannerPanel extends javax.swing.JPanel {
|
||||
}
|
||||
});
|
||||
|
||||
openRecentButton.setIcon(new javax.swing.ImageIcon(getClass().getResource("/org/sleuthkit/autopsy/casemodule/btn_icon_open_recent.png"))); // NOI18N
|
||||
openRecentButton.setText(org.openide.util.NbBundle.getMessage(CueBannerPanel.class, "CueBannerPanel.openRecentButton.text")); // NOI18N
|
||||
openRecentButton.setBorder(null);
|
||||
openRecentButton.setBorderPainted(false);
|
||||
openRecentButton.setContentAreaFilled(false);
|
||||
openRecentButton.setPreferredSize(new java.awt.Dimension(70, 70));
|
||||
openRecentButton.addActionListener(new java.awt.event.ActionListener() {
|
||||
public void actionPerformed(java.awt.event.ActionEvent evt) {
|
||||
openRecentButtonActionPerformed(evt);
|
||||
}
|
||||
});
|
||||
|
||||
createNewLabel.setFont(new java.awt.Font("Tahoma", 0, 13));
|
||||
createNewLabel.setText(org.openide.util.NbBundle.getMessage(CueBannerPanel.class, "CueBannerPanel.createNewLabel.text")); // NOI18N
|
||||
|
||||
openLabel.setFont(new java.awt.Font("Tahoma", 0, 13));
|
||||
openLabel.setFont(new java.awt.Font("Tahoma", 0, 13)); // NOI18N
|
||||
openLabel.setText(org.openide.util.NbBundle.getMessage(CueBannerPanel.class, "CueBannerPanel.openLabel.text")); // NOI18N
|
||||
|
||||
openRecentLabel.setFont(new java.awt.Font("Tahoma", 0, 13));
|
||||
openRecentLabel.setText(org.openide.util.NbBundle.getMessage(CueBannerPanel.class, "CueBannerPanel.openRecentLabel.text")); // NOI18N
|
||||
|
||||
javax.swing.GroupLayout editorPanelLayout = new javax.swing.GroupLayout(editorPanel);
|
||||
editorPanel.setLayout(editorPanelLayout);
|
||||
editorPanelLayout.setHorizontalGroup(
|
||||
@ -127,41 +128,32 @@ public class CueBannerPanel extends javax.swing.JPanel {
|
||||
.addComponent(newCaseButton, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
|
||||
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
|
||||
.addComponent(createNewLabel))
|
||||
.addGroup(editorPanelLayout.createSequentialGroup()
|
||||
.addComponent(openCaseButton, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
|
||||
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
|
||||
.addComponent(openLabel))
|
||||
.addGroup(editorPanelLayout.createSequentialGroup()
|
||||
.addComponent(openRecentButton, javax.swing.GroupLayout.PREFERRED_SIZE, 70, javax.swing.GroupLayout.PREFERRED_SIZE)
|
||||
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
|
||||
.addComponent(openRecentLabel)))
|
||||
.addComponent(openRecentLabel))
|
||||
.addGroup(editorPanelLayout.createSequentialGroup()
|
||||
.addComponent(openCaseButton, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
|
||||
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
|
||||
.addComponent(openLabel)))
|
||||
.addContainerGap(60, Short.MAX_VALUE))
|
||||
);
|
||||
editorPanelLayout.setVerticalGroup(
|
||||
editorPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
|
||||
.addGroup(editorPanelLayout.createSequentialGroup()
|
||||
.addGroup(editorPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
|
||||
.addGroup(editorPanelLayout.createSequentialGroup()
|
||||
.addGap(32, 32, 32)
|
||||
.addComponent(newCaseButton, javax.swing.GroupLayout.PREFERRED_SIZE, 56, javax.swing.GroupLayout.PREFERRED_SIZE))
|
||||
.addGroup(editorPanelLayout.createSequentialGroup()
|
||||
.addGap(50, 50, 50)
|
||||
.addComponent(createNewLabel)))
|
||||
.addGroup(editorPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
|
||||
.addGroup(editorPanelLayout.createSequentialGroup()
|
||||
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
|
||||
.addComponent(openCaseButton, javax.swing.GroupLayout.PREFERRED_SIZE, 58, javax.swing.GroupLayout.PREFERRED_SIZE))
|
||||
.addGroup(editorPanelLayout.createSequentialGroup()
|
||||
.addGap(31, 31, 31)
|
||||
.addComponent(openLabel)))
|
||||
.addGroup(editorPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
|
||||
.addGroup(editorPanelLayout.createSequentialGroup()
|
||||
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
|
||||
.addComponent(openRecentButton, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
|
||||
.addGroup(editorPanelLayout.createSequentialGroup()
|
||||
.addGap(32, 32, 32)
|
||||
.addComponent(openRecentLabel)))
|
||||
.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
|
||||
.addGap(32, 32, 32)
|
||||
.addGroup(editorPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.CENTER)
|
||||
.addComponent(createNewLabel)
|
||||
.addComponent(newCaseButton, javax.swing.GroupLayout.PREFERRED_SIZE, 56, javax.swing.GroupLayout.PREFERRED_SIZE))
|
||||
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
|
||||
.addGroup(editorPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.CENTER)
|
||||
.addComponent(openRecentLabel)
|
||||
.addComponent(openRecentButton, javax.swing.GroupLayout.PREFERRED_SIZE, 70, javax.swing.GroupLayout.PREFERRED_SIZE))
|
||||
.addGap(0, 0, Short.MAX_VALUE)
|
||||
.addGroup(editorPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.CENTER)
|
||||
.addComponent(openLabel)
|
||||
.addComponent(openCaseButton, javax.swing.GroupLayout.PREFERRED_SIZE, 58, javax.swing.GroupLayout.PREFERRED_SIZE))
|
||||
.addContainerGap(25, Short.MAX_VALUE))
|
||||
);
|
||||
|
||||
autopsyLogo.setIcon(new javax.swing.ImageIcon(getClass().getResource("/org/sleuthkit/autopsy/casemodule/welcome_logo.png"))); // NOI18N
|
||||
@ -188,14 +180,14 @@ public class CueBannerPanel extends javax.swing.JPanel {
|
||||
.addComponent(autopsyLogo, javax.swing.GroupLayout.PREFERRED_SIZE, 257, javax.swing.GroupLayout.PREFERRED_SIZE)
|
||||
.addGroup(layout.createSequentialGroup()
|
||||
.addComponent(editorPanel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
|
||||
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
|
||||
.addGap(18, 18, 18)
|
||||
.addComponent(closeButton)))
|
||||
.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
|
||||
);
|
||||
}// </editor-fold>//GEN-END:initComponents
|
||||
|
||||
private void newCaseButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_newCaseButtonActionPerformed
|
||||
Lookup.getDefault().lookup(CaseNewAction.class).actionPerformed(evt);
|
||||
Lookup.getDefault().lookup(CaseNewActionInterface.class).actionPerformed(evt);
|
||||
}//GEN-LAST:event_newCaseButtonActionPerformed
|
||||
|
||||
private void openCaseButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_openCaseButtonActionPerformed
|
||||
@ -255,6 +247,15 @@ public class CueBannerPanel extends javax.swing.JPanel {
|
||||
closeButton.addActionListener(e);
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the Close button label (default is "Close").
|
||||
*
|
||||
* @param text The new label for the button.
|
||||
*/
|
||||
public void setCloseButtonText(String text) {
|
||||
closeButton.setText(text);
|
||||
}
|
||||
|
||||
/**
|
||||
* Close the open recent cases window.
|
||||
*/
|
||||
|
@ -81,7 +81,13 @@ public class ArtifactStringContent implements StringContent {
|
||||
// value column
|
||||
buffer.append("<td>");
|
||||
if (attr.getAttributeTypeID() == ATTRIBUTE_TYPE.TSK_DATETIME.getTypeID()
|
||||
|| attr.getAttributeTypeID() == ATTRIBUTE_TYPE.TSK_DATETIME_ACCESSED.getTypeID()) {
|
||||
|| attr.getAttributeTypeID() == ATTRIBUTE_TYPE.TSK_DATETIME_ACCESSED.getTypeID()
|
||||
|| attr.getAttributeTypeID() == ATTRIBUTE_TYPE.TSK_DATETIME_CREATED.getTypeID()
|
||||
|| attr.getAttributeTypeID() == ATTRIBUTE_TYPE.TSK_DATETIME_MODIFIED.getTypeID()
|
||||
|| attr.getAttributeTypeID() == ATTRIBUTE_TYPE.TSK_DATETIME_RCVD.getTypeID()
|
||||
|| attr.getAttributeTypeID() == ATTRIBUTE_TYPE.TSK_DATETIME_SENT.getTypeID()
|
||||
|| attr.getAttributeTypeID() == ATTRIBUTE_TYPE.TSK_DATETIME_START.getTypeID()
|
||||
|| attr.getAttributeTypeID() == ATTRIBUTE_TYPE.TSK_DATETIME_END.getTypeID() ) {
|
||||
long epoch = attr.getValueLong();
|
||||
String time = "0000-00-00 00:00:00";
|
||||
if (epoch != 0) {
|
||||
|
@ -104,6 +104,14 @@ public class ArtifactTypeNode extends DisplayableItemNode {
|
||||
return "searchquery.png";
|
||||
case TSK_METADATA_EXIF:
|
||||
return "camera-icon-16.png";
|
||||
case TSK_CONTACT:
|
||||
return "contact.png";
|
||||
case TSK_MESSAGE:
|
||||
return "message.png";
|
||||
case TSK_CALLLOG:
|
||||
return "calllog.png";
|
||||
case TSK_CALENDAR_ENTRY:
|
||||
return "calendar.png";
|
||||
}
|
||||
return "artifact-icon.png";
|
||||
}
|
||||
|
@ -177,7 +177,13 @@ public class BlackboardArtifactNode extends DisplayableItemNode {
|
||||
break;
|
||||
case LONG:
|
||||
if (attributeTypeID == ATTRIBUTE_TYPE.TSK_DATETIME.getTypeID()
|
||||
|| attributeTypeID == ATTRIBUTE_TYPE.TSK_DATETIME_ACCESSED.getTypeID()) {
|
||||
|| attributeTypeID == ATTRIBUTE_TYPE.TSK_DATETIME_ACCESSED.getTypeID()
|
||||
|| attributeTypeID == ATTRIBUTE_TYPE.TSK_DATETIME_CREATED.getTypeID()
|
||||
|| attributeTypeID == ATTRIBUTE_TYPE.TSK_DATETIME_MODIFIED.getTypeID()
|
||||
|| attributeTypeID == ATTRIBUTE_TYPE.TSK_DATETIME_RCVD.getTypeID()
|
||||
|| attributeTypeID == ATTRIBUTE_TYPE.TSK_DATETIME_SENT.getTypeID()
|
||||
|| attributeTypeID == ATTRIBUTE_TYPE.TSK_DATETIME_START.getTypeID()
|
||||
|| attributeTypeID == ATTRIBUTE_TYPE.TSK_DATETIME_END.getTypeID() ) {
|
||||
map.put(attribute.getAttributeTypeDisplayName(), ContentUtils.getStringTime(attribute.getValueLong(), associated));
|
||||
} else {
|
||||
map.put(attribute.getAttributeTypeDisplayName(), attribute.getValueLong());
|
||||
@ -285,6 +291,14 @@ public class BlackboardArtifactNode extends DisplayableItemNode {
|
||||
return "green-tag-icon-16.png";
|
||||
case TSK_METADATA_EXIF:
|
||||
return "camera-icon-16.png";
|
||||
case TSK_CONTACT:
|
||||
return "contact.png";
|
||||
case TSK_MESSAGE:
|
||||
return "message.png";
|
||||
case TSK_CALLLOG:
|
||||
return "calllog.png";
|
||||
case TSK_CALENDAR_ENTRY:
|
||||
return "calendar.png";
|
||||
}
|
||||
return "artifact-icon.png";
|
||||
}
|
||||
|
BIN
Core/src/org/sleuthkit/autopsy/images/calendar.png
Normal file
After Width: | Height: | Size: 3.4 KiB |
BIN
Core/src/org/sleuthkit/autopsy/images/calllog.png
Normal file
After Width: | Height: | Size: 691 B |
BIN
Core/src/org/sleuthkit/autopsy/images/contact.png
Normal file
After Width: | Height: | Size: 738 B |
BIN
Core/src/org/sleuthkit/autopsy/images/message.png
Normal file
After Width: | Height: | Size: 829 B |
@ -27,15 +27,18 @@ import java.util.ArrayList;
|
||||
import java.util.EnumMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.logging.Level;
|
||||
import javax.swing.JCheckBox;
|
||||
import javax.swing.JLabel;
|
||||
import javax.swing.JList;
|
||||
import javax.swing.ListCellRenderer;
|
||||
import javax.swing.ListModel;
|
||||
import javax.swing.event.ListDataListener;
|
||||
import org.sleuthkit.autopsy.casemodule.Case;
|
||||
import org.sleuthkit.autopsy.coreutils.Logger;
|
||||
import org.sleuthkit.datamodel.BlackboardArtifact;
|
||||
import org.sleuthkit.datamodel.BlackboardArtifact.ARTIFACT_TYPE;
|
||||
import org.sleuthkit.datamodel.TskCoreException;
|
||||
|
||||
public class ArtifactSelectionDialog extends javax.swing.JDialog {
|
||||
private static final Logger logger = Logger.getLogger(ArtifactSelectionDialog.class.getName());
|
||||
@ -60,10 +63,21 @@ public class ArtifactSelectionDialog extends javax.swing.JDialog {
|
||||
* Populate the list of artifacts with all important artifacts.
|
||||
*/
|
||||
private void populateList() {
|
||||
artifacts = getImportantArtifactTypes();
|
||||
artifactStates = new EnumMap<BlackboardArtifact.ARTIFACT_TYPE, Boolean>(BlackboardArtifact.ARTIFACT_TYPE.class);
|
||||
for (BlackboardArtifact.ARTIFACT_TYPE type : artifacts) {
|
||||
artifactStates.put(type, Boolean.TRUE);
|
||||
try {
|
||||
ArrayList<BlackboardArtifact.ARTIFACT_TYPE> doNotReport = new ArrayList();
|
||||
doNotReport.add(BlackboardArtifact.ARTIFACT_TYPE.TSK_GEN_INFO);
|
||||
|
||||
artifacts = Case.getCurrentCase().getSleuthkitCase().getBlackboardArtifactTypesInUse();
|
||||
|
||||
artifacts.removeAll(doNotReport);
|
||||
|
||||
artifactStates = new EnumMap<BlackboardArtifact.ARTIFACT_TYPE, Boolean>(BlackboardArtifact.ARTIFACT_TYPE.class);
|
||||
for (BlackboardArtifact.ARTIFACT_TYPE type : artifacts) {
|
||||
artifactStates.put(type, Boolean.TRUE);
|
||||
}
|
||||
} catch (TskCoreException ex) {
|
||||
Logger.getLogger(ArtifactSelectionDialog.class.getName()).log(Level.SEVERE, "Error getting list of artifacts in use: " + ex.getLocalizedMessage());
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -636,46 +636,60 @@ public class ReportGenerator {
|
||||
private List<String> getArtifactTableColumnHeaders(int artifactTypeId) {
|
||||
ArrayList<String> columnHeaders;
|
||||
|
||||
switch (artifactTypeId) {
|
||||
case 2: // TSK_WEB_BOOKMARK
|
||||
BlackboardArtifact.ARTIFACT_TYPE type = BlackboardArtifact.ARTIFACT_TYPE.fromID(artifactTypeId);
|
||||
|
||||
switch (type) {
|
||||
case TSK_WEB_BOOKMARK:
|
||||
columnHeaders = new ArrayList<String>(Arrays.asList(new String[] {"URL", "Title", "Date Accessed", "Program", "Source File"}));
|
||||
break;
|
||||
case 3: // TSK_WEB_COOKIE
|
||||
case TSK_WEB_COOKIE:
|
||||
columnHeaders = new ArrayList<String>(Arrays.asList(new String[] {"URL", "Date/Time", "Name", "Value", "Program", "Source File"}));
|
||||
break;
|
||||
case 4: // TSK_WEB_HISTORY
|
||||
case TSK_WEB_HISTORY:
|
||||
columnHeaders = new ArrayList<String>(Arrays.asList(new String[] {"URL", "Date Accessed", "Referrer", "Name", "Program", "Source File"}));
|
||||
break;
|
||||
case 5: // TSK_WEB_DOWNLOAD
|
||||
case TSK_WEB_DOWNLOAD:
|
||||
columnHeaders = new ArrayList<String>(Arrays.asList(new String[] {"Destination", "Source URL", "Date Accessed", "Program", "Source File"}));
|
||||
break;
|
||||
case 6: // TSK_RECENT_OBJECT
|
||||
case TSK_RECENT_OBJECT:
|
||||
columnHeaders = new ArrayList<String>(Arrays.asList(new String[] {"Path", "Source File"}));
|
||||
break;
|
||||
case 8: // TSK_INSTALLED_PROG
|
||||
case TSK_INSTALLED_PROG:
|
||||
columnHeaders = new ArrayList<String>(Arrays.asList(new String[] {"Program Name", "Install Date/Time", "Source File"}));
|
||||
break;
|
||||
case 9: // TSK_KEYWORD_HIT
|
||||
case TSK_KEYWORD_HIT:
|
||||
columnHeaders = new ArrayList<String>(Arrays.asList(new String[] {"Preview", "Source File"}));
|
||||
break;
|
||||
case 10: // TSK_HASHSET_HIT
|
||||
case TSK_HASHSET_HIT:
|
||||
columnHeaders = new ArrayList<String>(Arrays.asList(new String[] {"File", "Size"}));
|
||||
break;
|
||||
case 11: // TSK_DEVICE_ATTACHED
|
||||
case TSK_DEVICE_ATTACHED:
|
||||
columnHeaders = new ArrayList<String>(Arrays.asList(new String[] {"Name", "Device ID", "Date/Time", "Source File"}));
|
||||
break;
|
||||
case 15: // TSK_WEB_SEARCH_QUERY
|
||||
case TSK_WEB_SEARCH_QUERY:
|
||||
columnHeaders = new ArrayList<String>(Arrays.asList(new String[] {"Text", "Domain", "Date Accessed", "Program Name", "Source File"}));
|
||||
break;
|
||||
case 16: // TSK_METADATA_EXIF
|
||||
case TSK_METADATA_EXIF:
|
||||
columnHeaders = new ArrayList<String>(Arrays.asList(new String[] {"Date Taken", "Device Manufacturer", "Device Model", "Latitude", "Longitude", "Source File"}));
|
||||
break;
|
||||
case 17: // TSK_TAG_FILE
|
||||
case TSK_TAG_FILE:
|
||||
columnHeaders = new ArrayList<String>(Arrays.asList(new String[] {"File", "Tag", "Comment"}));
|
||||
break;
|
||||
case 18: // TSK_TAG_ARTIFACT
|
||||
case TSK_TAG_ARTIFACT:
|
||||
columnHeaders = new ArrayList<String>(Arrays.asList(new String[] {"Result Type", "Tag", "Comment", "Source File"}));
|
||||
break;
|
||||
case TSK_CONTACT:
|
||||
columnHeaders = new ArrayList<String>(Arrays.asList(new String[] {"Person Name", "Phone Number", "Phone Number (Home)", "Phone Number (Office)", "Phone Number (Mobile)", "Email", "Source File" }));
|
||||
break;
|
||||
case TSK_MESSAGE:
|
||||
columnHeaders = new ArrayList<String>(Arrays.asList(new String[] {"Message Type", "Direction", "Date/Time", "From Phone Number", "From Email", "To Phone Number", "To Email", "Subject", "Text", "Source File" }));
|
||||
break;
|
||||
case TSK_CALLLOG:
|
||||
columnHeaders = new ArrayList<String>(Arrays.asList(new String[] {"Person Name", "Phone Number", "Date/Time", "Direction", "Source File" }));
|
||||
break;
|
||||
case TSK_CALENDAR_ENTRY:
|
||||
columnHeaders = new ArrayList<String>(Arrays.asList(new String[] {"Calendar Entry Type", "Description", "Start Date/Time", "End Date/Time", "Location", "Source File" }));
|
||||
break;
|
||||
default:
|
||||
return null;
|
||||
}
|
||||
@ -705,7 +719,15 @@ public class ReportGenerator {
|
||||
for (BlackboardAttribute tempatt : attList) {
|
||||
String value = "";
|
||||
Integer type = tempatt.getAttributeTypeID();
|
||||
if (type.equals(ATTRIBUTE_TYPE.TSK_DATETIME.getTypeID()) || type.equals(ATTRIBUTE_TYPE.TSK_DATETIME_ACCESSED.getTypeID())) {
|
||||
if (type.equals(ATTRIBUTE_TYPE.TSK_DATETIME.getTypeID()) ||
|
||||
type.equals(ATTRIBUTE_TYPE.TSK_DATETIME_ACCESSED.getTypeID()) ||
|
||||
type.equals(ATTRIBUTE_TYPE.TSK_DATETIME_CREATED.getTypeID()) ||
|
||||
type.equals(ATTRIBUTE_TYPE.TSK_DATETIME_MODIFIED.getTypeID()) ||
|
||||
type.equals(ATTRIBUTE_TYPE.TSK_DATETIME_SENT.getTypeID()) ||
|
||||
type.equals(ATTRIBUTE_TYPE.TSK_DATETIME_RCVD.getTypeID()) ||
|
||||
type.equals(ATTRIBUTE_TYPE.TSK_DATETIME_START.getTypeID()) ||
|
||||
type.equals(ATTRIBUTE_TYPE.TSK_DATETIME_END.getTypeID())
|
||||
) {
|
||||
if (module.length > 0) {
|
||||
value = module[0].dateToString(tempatt.getValueLong());
|
||||
} else {
|
||||
@ -753,8 +775,11 @@ public class ReportGenerator {
|
||||
*/
|
||||
private List<String> getArtifactRow(Entry<BlackboardArtifact, List<BlackboardAttribute>> entry, TableReportModule module) throws TskCoreException {
|
||||
Map<Integer, String> attributes = getMappedAttributes(entry.getValue(), module);
|
||||
switch (entry.getKey().getArtifactTypeID()) {
|
||||
case 2: // TSK_WEB_BOOKMARK
|
||||
|
||||
BlackboardArtifact.ARTIFACT_TYPE type = BlackboardArtifact.ARTIFACT_TYPE.fromID(entry.getKey().getArtifactTypeID());
|
||||
|
||||
switch (type) {
|
||||
case TSK_WEB_BOOKMARK:
|
||||
List<String> bookmark = new ArrayList<>();
|
||||
bookmark.add(attributes.get(ATTRIBUTE_TYPE.TSK_URL.getTypeID()));
|
||||
bookmark.add(attributes.get(ATTRIBUTE_TYPE.TSK_TITLE.getTypeID()));
|
||||
@ -762,7 +787,7 @@ public class ReportGenerator {
|
||||
bookmark.add(attributes.get(ATTRIBUTE_TYPE.TSK_PROG_NAME.getTypeID()));
|
||||
bookmark.add(getFileUniquePath(entry.getKey().getObjectID()));
|
||||
return bookmark;
|
||||
case 3: // TSK_WEB_COOKIE
|
||||
case TSK_WEB_COOKIE:
|
||||
List<String> cookie = new ArrayList<>();
|
||||
cookie.add(attributes.get(ATTRIBUTE_TYPE.TSK_URL.getTypeID()));
|
||||
cookie.add(attributes.get(ATTRIBUTE_TYPE.TSK_DATETIME.getTypeID()));
|
||||
@ -771,7 +796,7 @@ public class ReportGenerator {
|
||||
cookie.add(attributes.get(ATTRIBUTE_TYPE.TSK_PROG_NAME.getTypeID()));
|
||||
cookie.add(getFileUniquePath(entry.getKey().getObjectID()));
|
||||
return cookie;
|
||||
case 4: // TSK_WEB_HISTORY
|
||||
case TSK_WEB_HISTORY:
|
||||
List<String> history = new ArrayList<>();
|
||||
history.add(attributes.get(ATTRIBUTE_TYPE.TSK_URL.getTypeID()));
|
||||
history.add(attributes.get(ATTRIBUTE_TYPE.TSK_DATETIME_ACCESSED.getTypeID()));
|
||||
@ -780,7 +805,7 @@ public class ReportGenerator {
|
||||
history.add(attributes.get(ATTRIBUTE_TYPE.TSK_PROG_NAME.getTypeID()));
|
||||
history.add(getFileUniquePath(entry.getKey().getObjectID()));
|
||||
return history;
|
||||
case 5: // TSK_WEB_DOWNLOAD
|
||||
case TSK_WEB_DOWNLOAD:
|
||||
List<String> download = new ArrayList<>();
|
||||
download.add(attributes.get(ATTRIBUTE_TYPE.TSK_PATH.getTypeID()));
|
||||
download.add(attributes.get(ATTRIBUTE_TYPE.TSK_URL.getTypeID()));
|
||||
@ -788,25 +813,25 @@ public class ReportGenerator {
|
||||
download.add(attributes.get(ATTRIBUTE_TYPE.TSK_PROG_NAME.getTypeID()));
|
||||
download.add(getFileUniquePath(entry.getKey().getObjectID()));
|
||||
return download;
|
||||
case 6: // TSK_RECENT_OBJECT
|
||||
case TSK_RECENT_OBJECT:
|
||||
List<String> recent = new ArrayList<>();
|
||||
recent.add(attributes.get(ATTRIBUTE_TYPE.TSK_PATH.getTypeID()));
|
||||
recent.add(getFileUniquePath(entry.getKey().getObjectID()));
|
||||
return recent;
|
||||
case 8: // TSK_INSTALLED_PROG
|
||||
case TSK_INSTALLED_PROG:
|
||||
List<String> installed = new ArrayList<>();
|
||||
installed.add(attributes.get(ATTRIBUTE_TYPE.TSK_PROG_NAME.getTypeID()));
|
||||
installed.add(attributes.get(ATTRIBUTE_TYPE.TSK_DATETIME.getTypeID()));
|
||||
installed.add(getFileUniquePath(entry.getKey().getObjectID()));
|
||||
return installed;
|
||||
case 11: // TSK_DEVICE_ATTACHED
|
||||
case TSK_DEVICE_ATTACHED:
|
||||
List<String> devices = new ArrayList<>();
|
||||
devices.add(attributes.get(ATTRIBUTE_TYPE.TSK_DEVICE_MODEL.getTypeID()));
|
||||
devices.add(attributes.get(ATTRIBUTE_TYPE.TSK_DEVICE_ID.getTypeID()));
|
||||
devices.add(attributes.get(ATTRIBUTE_TYPE.TSK_DATETIME.getTypeID()));
|
||||
devices.add(getFileUniquePath(entry.getKey().getObjectID()));
|
||||
return devices;
|
||||
case 15: // TSK_WEB_SEARCH_QUERY
|
||||
case TSK_WEB_SEARCH_QUERY:
|
||||
List<String> search = new ArrayList<>();
|
||||
search.add(attributes.get(ATTRIBUTE_TYPE.TSK_TEXT.getTypeID()));
|
||||
search.add(attributes.get(ATTRIBUTE_TYPE.TSK_DOMAIN.getTypeID()));
|
||||
@ -814,7 +839,7 @@ public class ReportGenerator {
|
||||
search.add(attributes.get(ATTRIBUTE_TYPE.TSK_PROG_NAME.getTypeID()));
|
||||
search.add(getFileUniquePath(entry.getKey().getObjectID()));
|
||||
return search;
|
||||
case 16: // TSK_METADATA_EXIF
|
||||
case TSK_METADATA_EXIF:
|
||||
List<String> exif = new ArrayList<>();
|
||||
exif.add(attributes.get(ATTRIBUTE_TYPE.TSK_DATETIME.getTypeID()));
|
||||
exif.add(attributes.get(ATTRIBUTE_TYPE.TSK_DEVICE_MAKE.getTypeID()));
|
||||
@ -823,7 +848,7 @@ public class ReportGenerator {
|
||||
exif.add(attributes.get(ATTRIBUTE_TYPE.TSK_GEO_LONGITUDE.getTypeID()));
|
||||
exif.add(getFileUniquePath(entry.getKey().getObjectID()));
|
||||
return exif;
|
||||
case 17: // TSK_TAG_FILE
|
||||
case TSK_TAG_FILE:
|
||||
List<String> taggedFileRow = new ArrayList<>();
|
||||
AbstractFile taggedFile = getAbstractFile(entry.getKey().getObjectID());
|
||||
if (taggedFile != null) {
|
||||
@ -834,7 +859,7 @@ public class ReportGenerator {
|
||||
taggedFileRow.add(attributes.get(ATTRIBUTE_TYPE.TSK_TAG_NAME.getTypeID()));
|
||||
taggedFileRow.add(attributes.get(ATTRIBUTE_TYPE.TSK_COMMENT.getTypeID()));
|
||||
return taggedFileRow;
|
||||
case 18: // TSK_TAG_ARTIFACT
|
||||
case TSK_TAG_ARTIFACT:
|
||||
List<String> taggedArtifactRow = new ArrayList<>();
|
||||
String taggedArtifactType = "";
|
||||
for (BlackboardAttribute attr : entry.getValue()) {
|
||||
@ -856,6 +881,47 @@ public class ReportGenerator {
|
||||
taggedArtifactRow.add("");
|
||||
}
|
||||
return taggedArtifactRow;
|
||||
case TSK_CONTACT:
|
||||
List<String> contact = new ArrayList<String>();
|
||||
contact.add(attributes.get(ATTRIBUTE_TYPE.TSK_NAME_PERSON.getTypeID()));
|
||||
contact.add(attributes.get(ATTRIBUTE_TYPE.TSK_PHONE_NUMBER.getTypeID()));
|
||||
contact.add(attributes.get(ATTRIBUTE_TYPE.TSK_PHONE_NUMBER_HOME.getTypeID()));
|
||||
contact.add(attributes.get(ATTRIBUTE_TYPE.TSK_PHONE_NUMBER_OFFICE.getTypeID()));
|
||||
contact.add(attributes.get(ATTRIBUTE_TYPE.TSK_PHONE_NUMBER_MOBILE.getTypeID()));
|
||||
contact.add(attributes.get(ATTRIBUTE_TYPE.TSK_EMAIL.getTypeID()));
|
||||
contact.add(getFileUniquePath(entry.getKey().getObjectID()));
|
||||
return contact;
|
||||
case TSK_MESSAGE:
|
||||
List<String> message = new ArrayList<String>();
|
||||
message.add(attributes.get(ATTRIBUTE_TYPE.TSK_MESSAGE_TYPE.getTypeID()));
|
||||
message.add(attributes.get(ATTRIBUTE_TYPE.TSK_DIRECTION.getTypeID()));
|
||||
message.add(attributes.get(ATTRIBUTE_TYPE.TSK_DATETIME.getTypeID()));
|
||||
message.add(attributes.get(ATTRIBUTE_TYPE.TSK_PHONE_NUMBER_FROM.getTypeID()));
|
||||
message.add(attributes.get(ATTRIBUTE_TYPE.TSK_EMAIL_FROM.getTypeID()));
|
||||
message.add(attributes.get(ATTRIBUTE_TYPE.TSK_PHONE_NUMBER_TO.getTypeID()));
|
||||
message.add(attributes.get(ATTRIBUTE_TYPE.TSK_EMAIL_TO.getTypeID()));
|
||||
message.add(attributes.get(ATTRIBUTE_TYPE.TSK_SUBJECT.getTypeID()));
|
||||
message.add(attributes.get(ATTRIBUTE_TYPE.TSK_TEXT.getTypeID()));
|
||||
message.add(getFileUniquePath(entry.getKey().getObjectID()));
|
||||
return message;
|
||||
case TSK_CALLLOG:
|
||||
List<String> call_log = new ArrayList<String>();
|
||||
call_log.add(attributes.get(ATTRIBUTE_TYPE.TSK_NAME_PERSON.getTypeID()));
|
||||
call_log.add(attributes.get(ATTRIBUTE_TYPE.TSK_PHONE_NUMBER.getTypeID()));
|
||||
call_log.add(attributes.get(ATTRIBUTE_TYPE.TSK_DATETIME.getTypeID()));
|
||||
call_log.add(attributes.get(ATTRIBUTE_TYPE.TSK_DIRECTION.getTypeID()));
|
||||
call_log.add(getFileUniquePath(entry.getKey().getObjectID()));
|
||||
return call_log;
|
||||
case TSK_CALENDAR_ENTRY:
|
||||
List<String> calEntry = new ArrayList<String>();
|
||||
calEntry.add(attributes.get(ATTRIBUTE_TYPE.TSK_CALENDAR_ENTRY_TYPE.getTypeID()));
|
||||
calEntry.add(attributes.get(ATTRIBUTE_TYPE.TSK_DESCRIPTION.getTypeID()));
|
||||
calEntry.add(attributes.get(ATTRIBUTE_TYPE.TSK_DATETIME_START.getTypeID()));
|
||||
calEntry.add(attributes.get(ATTRIBUTE_TYPE.TSK_DATETIME_END.getTypeID()));
|
||||
calEntry.add(attributes.get(ATTRIBUTE_TYPE.TSK_LOCATION.getTypeID()));
|
||||
calEntry.add(getFileUniquePath(entry.getKey().getObjectID()));
|
||||
return calEntry;
|
||||
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
@ -380,8 +380,9 @@ public class ReportHTML implements TableReportModule {
|
||||
*/
|
||||
private void addRowDataForSourceArtifact(List<String> row, BlackboardArtifact sourceArtifact) {
|
||||
int artifactTypeID = sourceArtifact.getArtifactTypeID();
|
||||
switch (artifactTypeID) {
|
||||
case 17:
|
||||
BlackboardArtifact.ARTIFACT_TYPE type = BlackboardArtifact.ARTIFACT_TYPE.fromID(artifactTypeID);
|
||||
switch (type) {
|
||||
case TSK_TAG_FILE:
|
||||
addRowDataForFileTagArtifact(row, sourceArtifact);
|
||||
break;
|
||||
default:
|
||||
@ -399,10 +400,10 @@ public class ReportHTML implements TableReportModule {
|
||||
try {
|
||||
AbstractFile file = Case.getCurrentCase().getSleuthkitCase().getAbstractFileById(sourceArtifact.getObjectID());
|
||||
|
||||
// Don't make a local copy of the file if it is unallocated space or a virtual directory.
|
||||
if (file.getType() == TSK_DB_FILES_TYPE_ENUM.UNALLOC_BLOCKS ||
|
||||
file.getType() == TSK_DB_FILES_TYPE_ENUM.UNUSED_BLOCKS ||
|
||||
file.getType() == TSK_DB_FILES_TYPE_ENUM.VIRTUAL_DIR) {
|
||||
// Don't make a local copy of the file if it is a directory or unallocated space.
|
||||
if (file.isDir() ||
|
||||
file.getType() == TSK_DB_FILES_TYPE_ENUM.UNALLOC_BLOCKS ||
|
||||
file.getType() == TSK_DB_FILES_TYPE_ENUM.UNUSED_BLOCKS) {
|
||||
row.add("");
|
||||
return;
|
||||
}
|
||||
@ -708,6 +709,32 @@ public class ReportHTML implements TableReportModule {
|
||||
FileUtil.copy(in, output);
|
||||
in.close();
|
||||
output.close();
|
||||
|
||||
in = getClass().getResourceAsStream("/org/sleuthkit/autopsy/report/images/contact.png");
|
||||
output = new FileOutputStream(new File(path + File.separator + "Contacts.png"));
|
||||
FileUtil.copy(in, output);
|
||||
in.close();
|
||||
output.close();
|
||||
|
||||
in = getClass().getResourceAsStream("/org/sleuthkit/autopsy/report/images/message.png");
|
||||
output = new FileOutputStream(new File(path + File.separator + "Messages.png"));
|
||||
FileUtil.copy(in, output);
|
||||
in.close();
|
||||
output.close();
|
||||
|
||||
in = getClass().getResourceAsStream("/org/sleuthkit/autopsy/report/images/calllog.png");
|
||||
output = new FileOutputStream(new File(path + File.separator + "Call Logs.png"));
|
||||
FileUtil.copy(in, output);
|
||||
in.close();
|
||||
output.close();
|
||||
|
||||
in = getClass().getResourceAsStream("/org/sleuthkit/autopsy/report/images/calendar.png");
|
||||
output = new FileOutputStream(new File(path + File.separator + "Calendar Entries.png"));
|
||||
FileUtil.copy(in, output);
|
||||
in.close();
|
||||
output.close();
|
||||
|
||||
|
||||
} catch (IOException ex) {
|
||||
logger.log(Level.SEVERE, "Failed to extract images for HTML report.", ex);
|
||||
} finally {
|
||||
|
@ -27,6 +27,7 @@ import java.util.LinkedHashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Map.Entry;
|
||||
import java.util.logging.Level;
|
||||
import javax.swing.JCheckBox;
|
||||
import javax.swing.JFrame;
|
||||
import javax.swing.JLabel;
|
||||
@ -35,9 +36,13 @@ import javax.swing.JPanel;
|
||||
import javax.swing.ListCellRenderer;
|
||||
import javax.swing.ListModel;
|
||||
import javax.swing.event.ListDataListener;
|
||||
import org.sleuthkit.autopsy.casemodule.Case;
|
||||
import org.sleuthkit.autopsy.coreutils.Logger;
|
||||
import org.sleuthkit.autopsy.datamodel.ExtractedContentChildren;
|
||||
import org.sleuthkit.autopsy.datamodel.Tags;
|
||||
import org.sleuthkit.datamodel.BlackboardArtifact;
|
||||
import org.sleuthkit.datamodel.BlackboardArtifact.ARTIFACT_TYPE;
|
||||
import org.sleuthkit.datamodel.TskCoreException;
|
||||
|
||||
public final class ReportVisualPanel2 extends JPanel {
|
||||
private static final Logger logger = Logger.getLogger(ReportVisualPanel2.class.getName());
|
||||
@ -97,10 +102,22 @@ public final class ReportVisualPanel2 extends JPanel {
|
||||
|
||||
// Initialize the list of Artifacts
|
||||
private void initArtifactTypes() {
|
||||
artifacts = ArtifactSelectionDialog.getImportantArtifactTypes();
|
||||
artifactStates = new EnumMap<ARTIFACT_TYPE, Boolean>(ARTIFACT_TYPE.class);
|
||||
for (ARTIFACT_TYPE type : artifacts) {
|
||||
artifactStates.put(type, Boolean.TRUE);
|
||||
|
||||
try {
|
||||
ArrayList<BlackboardArtifact.ARTIFACT_TYPE> doNotReport = new ArrayList();
|
||||
doNotReport.add(BlackboardArtifact.ARTIFACT_TYPE.TSK_GEN_INFO);
|
||||
|
||||
artifacts = Case.getCurrentCase().getSleuthkitCase().getBlackboardArtifactTypesInUse();
|
||||
|
||||
artifacts.removeAll(doNotReport);
|
||||
|
||||
artifactStates = new EnumMap<ARTIFACT_TYPE, Boolean>(ARTIFACT_TYPE.class);
|
||||
for (ARTIFACT_TYPE type : artifacts) {
|
||||
artifactStates.put(type, Boolean.TRUE);
|
||||
}
|
||||
} catch (TskCoreException ex) {
|
||||
Logger.getLogger(ReportVisualPanel2.class.getName()).log(Level.SEVERE, "Error getting list of artifacts in use: " + ex.getLocalizedMessage());
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -2,7 +2,7 @@
|
||||
*
|
||||
* Autopsy Forensic Browser
|
||||
*
|
||||
* Copyright 2012 Basis Technology Corp.
|
||||
* Copyright 2013 Basis Technology Corp.
|
||||
*
|
||||
* Copyright 2012 42six Solutions.
|
||||
* Contact: aebadirad <at> 42six <dot> com
|
||||
@ -30,7 +30,6 @@ import java.beans.PropertyChangeListener;
|
||||
import java.io.File;
|
||||
import java.text.MessageFormat;
|
||||
import java.util.Map;
|
||||
import java.util.Map.Entry;
|
||||
import java.util.logging.Level;
|
||||
import javax.swing.ImageIcon;
|
||||
import javax.swing.JButton;
|
||||
@ -59,47 +58,12 @@ public final class ReportWizardAction extends CallableSystemAction implements P
|
||||
private JButton toolbarButton = new JButton();
|
||||
private static final String ACTION_NAME = "Generate Report";
|
||||
|
||||
public ReportWizardAction() {
|
||||
setEnabled(false);
|
||||
Case.addPropertyChangeListener(new PropertyChangeListener() {
|
||||
@Override
|
||||
public void propertyChange(PropertyChangeEvent evt) {
|
||||
if (evt.getPropertyName().equals(Case.CASE_CURRENT_CASE)) {
|
||||
Case newCase = (Case) evt.getNewValue();
|
||||
setEnabled(newCase != null);
|
||||
|
||||
// Make the cases' Reoports folder, if it doesn't exist
|
||||
if (newCase != null) {
|
||||
boolean exists = (new File(newCase.getCaseDirectory() + File.separator + "Reports")).exists();
|
||||
if (!exists) {
|
||||
boolean reportCreate = (new File(newCase.getCaseDirectory() + File.separator + "Reports")).mkdirs();
|
||||
if (!reportCreate) {
|
||||
logger.log(Level.WARNING, "Could not create Reports directory for case. It does not exist.");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
// Initialize the Generate Report button
|
||||
toolbarButton.addActionListener(new ActionListener() {
|
||||
@Override
|
||||
public void actionPerformed(ActionEvent e) {
|
||||
ReportWizardAction.this.actionPerformed(e);
|
||||
}
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* When the Generate Report button or menu item is selected, open the reporting wizard.
|
||||
* When the wizard is finished, create a ReportGenerator with the wizard information,
|
||||
* and start all necessary reports.
|
||||
*/
|
||||
@Override
|
||||
@SuppressWarnings("unchecked")
|
||||
public void actionPerformed(ActionEvent e) {
|
||||
public static void doReportWizard() {
|
||||
// Create the wizard
|
||||
WizardDescriptor wiz = new WizardDescriptor(new ReportWizardIterator());
|
||||
wiz.setTitleFormat(new MessageFormat("{0} {1}"));
|
||||
@ -136,6 +100,44 @@ public final class ReportWizardAction extends CallableSystemAction implements P
|
||||
}
|
||||
}
|
||||
|
||||
public ReportWizardAction() {
|
||||
setEnabled(false);
|
||||
Case.addPropertyChangeListener(new PropertyChangeListener() {
|
||||
@Override
|
||||
public void propertyChange(PropertyChangeEvent evt) {
|
||||
if (evt.getPropertyName().equals(Case.CASE_CURRENT_CASE)) {
|
||||
Case newCase = (Case) evt.getNewValue();
|
||||
setEnabled(newCase != null);
|
||||
|
||||
// Make the cases' Reoports folder, if it doesn't exist
|
||||
if (newCase != null) {
|
||||
boolean exists = (new File(newCase.getCaseDirectory() + File.separator + "Reports")).exists();
|
||||
if (!exists) {
|
||||
boolean reportCreate = (new File(newCase.getCaseDirectory() + File.separator + "Reports")).mkdirs();
|
||||
if (!reportCreate) {
|
||||
logger.log(Level.WARNING, "Could not create Reports directory for case. It does not exist.");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
// Initialize the Generate Report button
|
||||
toolbarButton.addActionListener(new ActionListener() {
|
||||
@Override
|
||||
public void actionPerformed(ActionEvent e) {
|
||||
ReportWizardAction.this.actionPerformed(e);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
@SuppressWarnings("unchecked")
|
||||
public void actionPerformed(ActionEvent e) {
|
||||
doReportWizard();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void performAction() {
|
||||
}
|
||||
|
BIN
Core/src/org/sleuthkit/autopsy/report/images/calendar.png
Normal file
After Width: | Height: | Size: 3.4 KiB |
BIN
Core/src/org/sleuthkit/autopsy/report/images/calllog.png
Normal file
After Width: | Height: | Size: 691 B |
BIN
Core/src/org/sleuthkit/autopsy/report/images/contact.png
Normal file
After Width: | Height: | Size: 738 B |
BIN
Core/src/org/sleuthkit/autopsy/report/images/message.png
Normal file
After Width: | Height: | Size: 829 B |
@ -76,14 +76,16 @@ KeywordSearchConfigurationPanel2.informationLabel.text=Information
|
||||
KeywordSearchListsManagementPanel.keywordListsLabel.text=Keyword Lists:
|
||||
KeywordSearchEditListPanel.keywordsLabel.text=Keywords:
|
||||
KeywordSearchConfigurationPanel2.timeRadioButton1.toolTipText=20 mins. (fastest ingest time)
|
||||
KeywordSearchConfigurationPanel2.timeRadioButton1.text=20 minutes (fastest ingest)
|
||||
KeywordSearchConfigurationPanel2.timeRadioButton2.toolTipText=10 minutes (default ingest time)
|
||||
KeywordSearchConfigurationPanel2.timeRadioButton2.text=10 minutes (default)
|
||||
KeywordSearchConfigurationPanel2.timeRadioButton3.toolTipText=5 minutes (overall ingest time will be longest)
|
||||
KeywordSearchConfigurationPanel2.timeRadioButton3.text=5 minutes (longest ingest)
|
||||
KeywordSearchConfigurationPanel2.timeRadioButton1.text=20 minutes (slowest feedback, fastest ingest)
|
||||
KeywordSearchConfigurationPanel2.timeRadioButton2.toolTipText=10 minutes (faster overall ingest time than default)
|
||||
KeywordSearchConfigurationPanel2.timeRadioButton2.text=10 minutes (slower feedback, faster ingest)
|
||||
KeywordSearchConfigurationPanel2.timeRadioButton3.toolTipText=5 minutes (overall ingest time will be longer)
|
||||
KeywordSearchConfigurationPanel2.timeRadioButton3.text=5 minutes (default)
|
||||
KeywordSearchIngestSimplePanel.encodingsLabel.text=Encodings:
|
||||
KeywordSearchIngestSimplePanel.keywordSearchEncodings.text=-
|
||||
KeywordSearchIngestSimplePanel.titleLabel.text=Select keyword lists to enable during ingest:
|
||||
OpenIDE-Module-Short-Description=Keyword Search ingest module, extracted text viewer and keyword search tools
|
||||
KeywordSearchListsViewerPanel.manageListsButton.toolTipText=Manage keyword lists, their settings and associated keywords. The settings are shared among all cases.
|
||||
KeywordSearchConfigurationPanel2.frequencyLabel.text=Results update frequency during ingest:
|
||||
KeywordSearchConfigurationPanel2.timeRadioButton4.text_1=1 minute (faster feedback, longest ingest)
|
||||
KeywordSearchConfigurationPanel2.timeRadioButton4.toolTipText=1 minute (overall ingest time will be longest)
|
||||
|
@ -49,6 +49,7 @@
|
||||
<Component id="timeRadioButton2" min="-2" max="-2" attributes="0"/>
|
||||
<Component id="timeRadioButton1" min="-2" max="-2" attributes="0"/>
|
||||
<Component id="timeRadioButton3" alignment="0" min="-2" max="-2" attributes="0"/>
|
||||
<Component id="timeRadioButton4" alignment="0" min="-2" max="-2" attributes="0"/>
|
||||
</Group>
|
||||
</Group>
|
||||
<Group type="102" alignment="0" attributes="0">
|
||||
@ -81,7 +82,9 @@
|
||||
<Component id="timeRadioButton2" min="-2" max="-2" attributes="0"/>
|
||||
<EmptySpace max="-2" attributes="0"/>
|
||||
<Component id="timeRadioButton3" min="-2" max="-2" attributes="0"/>
|
||||
<EmptySpace type="separate" max="-2" attributes="0"/>
|
||||
<EmptySpace max="-2" attributes="0"/>
|
||||
<Component id="timeRadioButton4" min="-2" max="-2" attributes="0"/>
|
||||
<EmptySpace max="-2" attributes="0"/>
|
||||
<Group type="103" groupAlignment="1" attributes="0">
|
||||
<Component id="informationLabel" min="-2" max="-2" attributes="0"/>
|
||||
<Component id="informationSeparator" min="-2" pref="7" max="-2" attributes="0"/>
|
||||
@ -96,7 +99,7 @@
|
||||
<Component id="chunksLabel" alignment="3" min="-2" max="-2" attributes="0"/>
|
||||
<Component id="chunksValLabel" alignment="3" min="-2" max="-2" attributes="0"/>
|
||||
</Group>
|
||||
<EmptySpace pref="37" max="32767" attributes="0"/>
|
||||
<EmptySpace pref="30" max="32767" attributes="0"/>
|
||||
</Group>
|
||||
</Group>
|
||||
</DimensionLayout>
|
||||
@ -198,5 +201,15 @@
|
||||
</Property>
|
||||
</Properties>
|
||||
</Component>
|
||||
<Component class="javax.swing.JRadioButton" name="timeRadioButton4">
|
||||
<Properties>
|
||||
<Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
|
||||
<ResourceString bundle="org/sleuthkit/autopsy/keywordsearch/Bundle.properties" key="KeywordSearchConfigurationPanel2.timeRadioButton4.text_1" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/>
|
||||
</Property>
|
||||
<Property name="toolTipText" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
|
||||
<ResourceString bundle="org/sleuthkit/autopsy/keywordsearch/Bundle.properties" key="KeywordSearchConfigurationPanel2.timeRadioButton4.toolTipText" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/>
|
||||
</Property>
|
||||
</Properties>
|
||||
</Component>
|
||||
</SubComponents>
|
||||
</Form>
|
||||
|
@ -60,8 +60,14 @@ public class KeywordSearchConfigurationPanel2 extends javax.swing.JPanel impleme
|
||||
case SLOW:
|
||||
timeRadioButton3.setSelected(true);
|
||||
break;
|
||||
case SLOWEST:
|
||||
timeRadioButton4.setSelected(true);
|
||||
break;
|
||||
case DEFAULT:
|
||||
default:
|
||||
//
|
||||
// default value
|
||||
timeRadioButton3.setSelected(true);
|
||||
break;
|
||||
}
|
||||
|
||||
}
|
||||
@ -89,6 +95,7 @@ public class KeywordSearchConfigurationPanel2 extends javax.swing.JPanel impleme
|
||||
timeRadioButton1 = new javax.swing.JRadioButton();
|
||||
timeRadioButton2 = new javax.swing.JRadioButton();
|
||||
timeRadioButton3 = new javax.swing.JRadioButton();
|
||||
timeRadioButton4 = new javax.swing.JRadioButton();
|
||||
|
||||
skipNSRLCheckBox.setText(org.openide.util.NbBundle.getMessage(KeywordSearchConfigurationPanel2.class, "KeywordSearchConfigurationPanel2.skipNSRLCheckBox.text")); // NOI18N
|
||||
skipNSRLCheckBox.setToolTipText(org.openide.util.NbBundle.getMessage(KeywordSearchConfigurationPanel2.class, "KeywordSearchConfigurationPanel2.skipNSRLCheckBox.toolTipText")); // NOI18N
|
||||
@ -117,6 +124,9 @@ public class KeywordSearchConfigurationPanel2 extends javax.swing.JPanel impleme
|
||||
timeRadioButton3.setText(org.openide.util.NbBundle.getMessage(KeywordSearchConfigurationPanel2.class, "KeywordSearchConfigurationPanel2.timeRadioButton3.text")); // NOI18N
|
||||
timeRadioButton3.setToolTipText(org.openide.util.NbBundle.getMessage(KeywordSearchConfigurationPanel2.class, "KeywordSearchConfigurationPanel2.timeRadioButton3.toolTipText")); // NOI18N
|
||||
|
||||
timeRadioButton4.setText(org.openide.util.NbBundle.getMessage(KeywordSearchConfigurationPanel2.class, "KeywordSearchConfigurationPanel2.timeRadioButton4.text_1")); // NOI18N
|
||||
timeRadioButton4.setToolTipText(org.openide.util.NbBundle.getMessage(KeywordSearchConfigurationPanel2.class, "KeywordSearchConfigurationPanel2.timeRadioButton4.toolTipText")); // NOI18N
|
||||
|
||||
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this);
|
||||
this.setLayout(layout);
|
||||
layout.setHorizontalGroup(
|
||||
@ -146,7 +156,8 @@ public class KeywordSearchConfigurationPanel2 extends javax.swing.JPanel impleme
|
||||
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
|
||||
.addComponent(timeRadioButton2)
|
||||
.addComponent(timeRadioButton1)
|
||||
.addComponent(timeRadioButton3)))
|
||||
.addComponent(timeRadioButton3)
|
||||
.addComponent(timeRadioButton4)))
|
||||
.addGroup(layout.createSequentialGroup()
|
||||
.addComponent(chunksLabel)
|
||||
.addGap(18, 18, 18)
|
||||
@ -170,7 +181,9 @@ public class KeywordSearchConfigurationPanel2 extends javax.swing.JPanel impleme
|
||||
.addComponent(timeRadioButton2)
|
||||
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
|
||||
.addComponent(timeRadioButton3)
|
||||
.addGap(18, 18, 18)
|
||||
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
|
||||
.addComponent(timeRadioButton4)
|
||||
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
|
||||
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
|
||||
.addComponent(informationLabel)
|
||||
.addComponent(informationSeparator, javax.swing.GroupLayout.PREFERRED_SIZE, 7, javax.swing.GroupLayout.PREFERRED_SIZE))
|
||||
@ -182,7 +195,7 @@ public class KeywordSearchConfigurationPanel2 extends javax.swing.JPanel impleme
|
||||
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
|
||||
.addComponent(chunksLabel)
|
||||
.addComponent(chunksValLabel))
|
||||
.addContainerGap(37, Short.MAX_VALUE))
|
||||
.addContainerGap(30, Short.MAX_VALUE))
|
||||
);
|
||||
}// </editor-fold>//GEN-END:initComponents
|
||||
|
||||
@ -201,6 +214,7 @@ public class KeywordSearchConfigurationPanel2 extends javax.swing.JPanel impleme
|
||||
private javax.swing.JRadioButton timeRadioButton1;
|
||||
private javax.swing.JRadioButton timeRadioButton2;
|
||||
private javax.swing.JRadioButton timeRadioButton3;
|
||||
private javax.swing.JRadioButton timeRadioButton4;
|
||||
// End of variables declaration//GEN-END:variables
|
||||
|
||||
@Override
|
||||
@ -218,18 +232,24 @@ public class KeywordSearchConfigurationPanel2 extends javax.swing.JPanel impleme
|
||||
timeRadioButton1.setEnabled(enabled);
|
||||
timeRadioButton2.setEnabled(enabled);
|
||||
timeRadioButton3.setEnabled(enabled);
|
||||
timeRadioButton4.setEnabled(enabled);
|
||||
frequencyLabel.setEnabled(enabled);
|
||||
}
|
||||
|
||||
|
||||
private UpdateFrequency getSelectedTimeValue() {
|
||||
if (timeRadioButton1.isSelected()) {
|
||||
return UpdateFrequency.FAST;
|
||||
} else if (timeRadioButton2.isSelected()) {
|
||||
}
|
||||
else if (timeRadioButton2.isSelected()) {
|
||||
return UpdateFrequency.AVG;
|
||||
} else {
|
||||
}
|
||||
else if (timeRadioButton3.isSelected()) {
|
||||
return UpdateFrequency.SLOW;
|
||||
}
|
||||
else if (timeRadioButton4.isSelected()) {
|
||||
return UpdateFrequency.SLOWEST;
|
||||
}
|
||||
return UpdateFrequency.DEFAULT;
|
||||
}
|
||||
|
||||
private void customizeComponents() {
|
||||
@ -237,6 +257,7 @@ public class KeywordSearchConfigurationPanel2 extends javax.swing.JPanel impleme
|
||||
timeGroup.add(timeRadioButton1);
|
||||
timeGroup.add(timeRadioButton2);
|
||||
timeGroup.add(timeRadioButton3);
|
||||
timeGroup.add(timeRadioButton4);
|
||||
|
||||
this.skipNSRLCheckBox.setSelected(KeywordSearchSettings.getSkipKnown());
|
||||
|
||||
|
@ -85,7 +85,9 @@ public final class KeywordSearchIngestModule extends IngestModuleAbstractFile {
|
||||
|
||||
FAST(20),
|
||||
AVG(10),
|
||||
SLOW(5);
|
||||
SLOW(5),
|
||||
SLOWEST(1),
|
||||
DEFAULT(5);
|
||||
private final int time;
|
||||
|
||||
UpdateFrequency(int time) {
|
||||
|
@ -52,11 +52,11 @@ public class KeywordSearchSettings {
|
||||
*/
|
||||
static UpdateFrequency getUpdateFrequency(){
|
||||
if(ModuleSettings.getConfigSetting(PROPERTIES_OPTIONS, "UpdateFrequency") != null){
|
||||
return UpdateFrequency.valueOf(ModuleSettings.getConfigSetting(PROPERTIES_OPTIONS, "UpdateFrequency"));
|
||||
return UpdateFrequency.valueOf(ModuleSettings.getConfigSetting(PROPERTIES_OPTIONS, "UpdateFrequency"));
|
||||
}
|
||||
//if it failed, return the default/last known value
|
||||
logger.log(Level.WARNING, "Could not read property for UpdateFrequency, returning backup value.");
|
||||
return UpdateFreq;
|
||||
return UpdateFrequency.DEFAULT;
|
||||
}
|
||||
|
||||
|
||||
|
0
RecentActivity/src/org/sleuthkit/autopsy/recentactivity/RAImageIngestModule.java
Executable file → Normal file
@ -1,5 +1,5 @@
|
||||
#Updated by build script
|
||||
#Sun, 02 Jun 2013 00:12:29 -0400
|
||||
#Thu, 25 Jul 2013 15:34:25 -0400
|
||||
LBL_splash_window_title=Starting Autopsy
|
||||
SPLASH_HEIGHT=288
|
||||
SPLASH_WIDTH=538
|
||||
@ -8,4 +8,4 @@ SplashRunningTextBounds=5,266,530,17
|
||||
SplashRunningTextColor=0x0
|
||||
SplashRunningTextFontSize=18
|
||||
|
||||
currentVersion=Autopsy 20130602
|
||||
currentVersion=Autopsy 20130725
|
||||
|
@ -1,5 +1,5 @@
|
||||
#Updated by build script
|
||||
#Thu, 23 May 2013 00:04:58 -0400
|
||||
#Thu, 25 Jul 2013 15:34:25 -0400
|
||||
|
||||
CTL_MainWindow_Title=Autopsy 20130523
|
||||
CTL_MainWindow_Title_No_Project=Autopsy 20130523
|
||||
CTL_MainWindow_Title=Autopsy 20130725
|
||||
CTL_MainWindow_Title_No_Project=Autopsy 20130725
|
||||
|