mirror of
https://github.com/overcuriousity/autopsy-flatpak.git
synced 2025-07-15 09:17:42 +00:00
Added filtering of known files.
This commit is contained in:
parent
d9c4fd77a0
commit
b43121d565
@ -109,3 +109,6 @@ MediaViewVideoPanel.infoLabel.text=info
|
|||||||
GeneralPanel.jLabel2.text=When displaying times:
|
GeneralPanel.jLabel2.text=When displaying times:
|
||||||
GeneralPanel.useLocalTimeRB.text=Use local timezone
|
GeneralPanel.useLocalTimeRB.text=Use local timezone
|
||||||
GeneralPanel.useGMTTimeRB.text=Use GMT
|
GeneralPanel.useGMTTimeRB.text=Use GMT
|
||||||
|
GeneralPanel.jLabel3.text=Hide known files in the Data Result Viewer when:
|
||||||
|
GeneralPanel.viewsHideKnownCB.text=Selecting under Views
|
||||||
|
GeneralPanel.dataSourcesHideKnownCB.text=Selecting under Data Sources
|
||||||
|
@ -22,22 +22,39 @@
|
|||||||
<Layout>
|
<Layout>
|
||||||
<DimensionLayout dim="0">
|
<DimensionLayout dim="0">
|
||||||
<Group type="103" groupAlignment="0" attributes="0">
|
<Group type="103" groupAlignment="0" attributes="0">
|
||||||
<Group type="102" alignment="0" attributes="0">
|
<Group type="102" attributes="0">
|
||||||
<EmptySpace max="-2" attributes="0"/>
|
<EmptySpace max="-2" attributes="0"/>
|
||||||
<Group type="103" groupAlignment="0" attributes="0">
|
<Group type="103" groupAlignment="0" attributes="0">
|
||||||
<Component id="jLabel1" min="-2" max="-2" attributes="0"/>
|
|
||||||
<Component id="jLabel2" alignment="0" min="-2" max="-2" attributes="0"/>
|
|
||||||
<Group type="102" attributes="0">
|
<Group type="102" attributes="0">
|
||||||
<EmptySpace min="10" pref="10" max="-2" attributes="0"/>
|
|
||||||
<Group type="103" groupAlignment="0" attributes="0">
|
<Group type="103" groupAlignment="0" attributes="0">
|
||||||
<Component id="useLocalTimeRB" min="-2" max="-2" attributes="0"/>
|
<Component id="jLabel2" alignment="0" min="-2" max="-2" attributes="0"/>
|
||||||
<Component id="keepCurrentViewerRB" min="-2" max="-2" attributes="0"/>
|
<Group type="102" alignment="0" attributes="0">
|
||||||
<Component id="useBestViewerRB" min="-2" max="-2" attributes="0"/>
|
<EmptySpace min="10" pref="10" max="-2" attributes="0"/>
|
||||||
<Component id="useGMTTimeRB" alignment="0" min="-2" max="-2" attributes="0"/>
|
<Group type="103" groupAlignment="0" attributes="0">
|
||||||
|
<Component id="useLocalTimeRB" min="-2" max="-2" attributes="0"/>
|
||||||
|
<Component id="useGMTTimeRB" alignment="0" min="-2" max="-2" attributes="0"/>
|
||||||
|
</Group>
|
||||||
|
</Group>
|
||||||
</Group>
|
</Group>
|
||||||
|
<EmptySpace max="32767" attributes="0"/>
|
||||||
|
</Group>
|
||||||
|
<Group type="102" attributes="0">
|
||||||
|
<Group type="103" groupAlignment="0" attributes="0">
|
||||||
|
<Component id="jLabel1" min="-2" max="-2" attributes="0"/>
|
||||||
|
<Component id="jLabel3" alignment="0" min="-2" max="-2" attributes="0"/>
|
||||||
|
<Group type="102" attributes="0">
|
||||||
|
<EmptySpace min="10" pref="10" max="-2" attributes="0"/>
|
||||||
|
<Group type="103" groupAlignment="0" attributes="0">
|
||||||
|
<Component id="keepCurrentViewerRB" min="-2" max="-2" attributes="0"/>
|
||||||
|
<Component id="useBestViewerRB" min="-2" max="-2" attributes="0"/>
|
||||||
|
<Component id="dataSourcesHideKnownCB" alignment="0" min="-2" max="-2" attributes="0"/>
|
||||||
|
<Component id="viewsHideKnownCB" alignment="0" min="-2" max="-2" attributes="0"/>
|
||||||
|
</Group>
|
||||||
|
</Group>
|
||||||
|
</Group>
|
||||||
|
<EmptySpace min="0" pref="0" max="32767" attributes="0"/>
|
||||||
</Group>
|
</Group>
|
||||||
</Group>
|
</Group>
|
||||||
<EmptySpace min="0" pref="112" max="32767" attributes="0"/>
|
|
||||||
</Group>
|
</Group>
|
||||||
</Group>
|
</Group>
|
||||||
</DimensionLayout>
|
</DimensionLayout>
|
||||||
@ -50,12 +67,18 @@
|
|||||||
<EmptySpace max="-2" attributes="0"/>
|
<EmptySpace max="-2" attributes="0"/>
|
||||||
<Component id="keepCurrentViewerRB" min="-2" max="-2" attributes="0"/>
|
<Component id="keepCurrentViewerRB" min="-2" max="-2" attributes="0"/>
|
||||||
<EmptySpace type="unrelated" max="-2" attributes="0"/>
|
<EmptySpace type="unrelated" max="-2" attributes="0"/>
|
||||||
|
<Component id="jLabel3" min="-2" max="-2" attributes="0"/>
|
||||||
|
<EmptySpace max="-2" attributes="0"/>
|
||||||
|
<Component id="dataSourcesHideKnownCB" min="-2" max="-2" attributes="0"/>
|
||||||
|
<EmptySpace max="-2" attributes="0"/>
|
||||||
|
<Component id="viewsHideKnownCB" min="-2" max="-2" attributes="0"/>
|
||||||
|
<EmptySpace type="unrelated" max="-2" attributes="0"/>
|
||||||
<Component id="jLabel2" min="-2" max="-2" attributes="0"/>
|
<Component id="jLabel2" min="-2" max="-2" attributes="0"/>
|
||||||
<EmptySpace max="-2" attributes="0"/>
|
<EmptySpace max="-2" attributes="0"/>
|
||||||
<Component id="useLocalTimeRB" min="-2" max="-2" attributes="0"/>
|
<Component id="useLocalTimeRB" min="-2" max="-2" attributes="0"/>
|
||||||
<EmptySpace max="-2" attributes="0"/>
|
<EmptySpace max="-2" attributes="0"/>
|
||||||
<Component id="useGMTTimeRB" min="-2" max="-2" attributes="0"/>
|
<Component id="useGMTTimeRB" min="-2" max="-2" attributes="0"/>
|
||||||
<EmptySpace pref="26" max="32767" attributes="0"/>
|
<EmptySpace pref="30" max="32767" attributes="0"/>
|
||||||
</Group>
|
</Group>
|
||||||
</Group>
|
</Group>
|
||||||
</DimensionLayout>
|
</DimensionLayout>
|
||||||
@ -126,5 +149,26 @@
|
|||||||
</Property>
|
</Property>
|
||||||
</Properties>
|
</Properties>
|
||||||
</Component>
|
</Component>
|
||||||
|
<Component class="javax.swing.JLabel" name="jLabel3">
|
||||||
|
<Properties>
|
||||||
|
<Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
|
||||||
|
<ResourceString bundle="org/sleuthkit/autopsy/corecomponents/Bundle.properties" key="GeneralPanel.jLabel3.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/>
|
||||||
|
</Property>
|
||||||
|
</Properties>
|
||||||
|
</Component>
|
||||||
|
<Component class="javax.swing.JCheckBox" name="dataSourcesHideKnownCB">
|
||||||
|
<Properties>
|
||||||
|
<Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
|
||||||
|
<ResourceString bundle="org/sleuthkit/autopsy/corecomponents/Bundle.properties" key="GeneralPanel.dataSourcesHideKnownCB.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/>
|
||||||
|
</Property>
|
||||||
|
</Properties>
|
||||||
|
</Component>
|
||||||
|
<Component class="javax.swing.JCheckBox" name="viewsHideKnownCB">
|
||||||
|
<Properties>
|
||||||
|
<Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
|
||||||
|
<ResourceString bundle="org/sleuthkit/autopsy/corecomponents/Bundle.properties" key="GeneralPanel.viewsHideKnownCB.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/>
|
||||||
|
</Property>
|
||||||
|
</Properties>
|
||||||
|
</Component>
|
||||||
</SubComponents>
|
</SubComponents>
|
||||||
</Form>
|
</Form>
|
||||||
|
@ -1,16 +1,34 @@
|
|||||||
/*
|
/*
|
||||||
* To change this template, choose Tools | Templates
|
* Autopsy Forensic Browser
|
||||||
* and open the template in the editor.
|
*
|
||||||
|
* 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.corecomponents;
|
package org.sleuthkit.autopsy.corecomponents;
|
||||||
|
|
||||||
|
import java.util.prefs.Preferences;
|
||||||
import org.openide.util.NbPreferences;
|
import org.openide.util.NbPreferences;
|
||||||
|
|
||||||
final class GeneralPanel extends javax.swing.JPanel {
|
final class GeneralPanel extends javax.swing.JPanel {
|
||||||
|
|
||||||
private final GeneralOptionsPanelController controller;
|
private final GeneralOptionsPanelController controller;
|
||||||
private final static String KEEP_PREFERRED_VIEWER = "keepPreferredViewer";
|
private static final String KEEP_PREFERRED_VIEWER = "keepPreferredViewer";
|
||||||
private final static String USE_LOCAL_TIME = "useLocalTime";
|
private static final String USE_LOCAL_TIME = "useLocalTime";
|
||||||
|
private static final String DS_HIDE_KNOWN = "dataSourcesHideKnown"; // Default false
|
||||||
|
private static final String VIEWS_HIDE_KNOWN = "viewsHideKnown"; // Default true
|
||||||
|
private final Preferences prefs = NbPreferences.forModule(this.getClass());
|
||||||
|
|
||||||
GeneralPanel(GeneralOptionsPanelController controller) {
|
GeneralPanel(GeneralOptionsPanelController controller) {
|
||||||
this.controller = controller;
|
this.controller = controller;
|
||||||
@ -34,6 +52,9 @@ final class GeneralPanel extends javax.swing.JPanel {
|
|||||||
jLabel2 = new javax.swing.JLabel();
|
jLabel2 = new javax.swing.JLabel();
|
||||||
useLocalTimeRB = new javax.swing.JRadioButton();
|
useLocalTimeRB = new javax.swing.JRadioButton();
|
||||||
useGMTTimeRB = new javax.swing.JRadioButton();
|
useGMTTimeRB = new javax.swing.JRadioButton();
|
||||||
|
jLabel3 = new javax.swing.JLabel();
|
||||||
|
dataSourcesHideKnownCB = new javax.swing.JCheckBox();
|
||||||
|
viewsHideKnownCB = new javax.swing.JCheckBox();
|
||||||
|
|
||||||
buttonGroup1.add(useBestViewerRB);
|
buttonGroup1.add(useBestViewerRB);
|
||||||
useBestViewerRB.setSelected(true);
|
useBestViewerRB.setSelected(true);
|
||||||
@ -60,6 +81,12 @@ final class GeneralPanel extends javax.swing.JPanel {
|
|||||||
buttonGroup3.add(useGMTTimeRB);
|
buttonGroup3.add(useGMTTimeRB);
|
||||||
org.openide.awt.Mnemonics.setLocalizedText(useGMTTimeRB, org.openide.util.NbBundle.getMessage(GeneralPanel.class, "GeneralPanel.useGMTTimeRB.text")); // NOI18N
|
org.openide.awt.Mnemonics.setLocalizedText(useGMTTimeRB, org.openide.util.NbBundle.getMessage(GeneralPanel.class, "GeneralPanel.useGMTTimeRB.text")); // NOI18N
|
||||||
|
|
||||||
|
org.openide.awt.Mnemonics.setLocalizedText(jLabel3, org.openide.util.NbBundle.getMessage(GeneralPanel.class, "GeneralPanel.jLabel3.text")); // NOI18N
|
||||||
|
|
||||||
|
org.openide.awt.Mnemonics.setLocalizedText(dataSourcesHideKnownCB, org.openide.util.NbBundle.getMessage(GeneralPanel.class, "GeneralPanel.dataSourcesHideKnownCB.text")); // NOI18N
|
||||||
|
|
||||||
|
org.openide.awt.Mnemonics.setLocalizedText(viewsHideKnownCB, org.openide.util.NbBundle.getMessage(GeneralPanel.class, "GeneralPanel.viewsHideKnownCB.text")); // NOI18N
|
||||||
|
|
||||||
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this);
|
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this);
|
||||||
this.setLayout(layout);
|
this.setLayout(layout);
|
||||||
layout.setHorizontalGroup(
|
layout.setHorizontalGroup(
|
||||||
@ -67,16 +94,27 @@ final class GeneralPanel extends javax.swing.JPanel {
|
|||||||
.addGroup(layout.createSequentialGroup()
|
.addGroup(layout.createSequentialGroup()
|
||||||
.addContainerGap()
|
.addContainerGap()
|
||||||
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
|
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
|
||||||
.addComponent(jLabel1)
|
|
||||||
.addComponent(jLabel2)
|
|
||||||
.addGroup(layout.createSequentialGroup()
|
.addGroup(layout.createSequentialGroup()
|
||||||
.addGap(10, 10, 10)
|
|
||||||
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
|
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
|
||||||
.addComponent(useLocalTimeRB)
|
.addComponent(jLabel2)
|
||||||
.addComponent(keepCurrentViewerRB)
|
.addGroup(layout.createSequentialGroup()
|
||||||
.addComponent(useBestViewerRB)
|
.addGap(10, 10, 10)
|
||||||
.addComponent(useGMTTimeRB))))
|
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
|
||||||
.addGap(0, 112, Short.MAX_VALUE))
|
.addComponent(useLocalTimeRB)
|
||||||
|
.addComponent(useGMTTimeRB))))
|
||||||
|
.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
|
||||||
|
.addGroup(layout.createSequentialGroup()
|
||||||
|
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
|
||||||
|
.addComponent(jLabel1)
|
||||||
|
.addComponent(jLabel3)
|
||||||
|
.addGroup(layout.createSequentialGroup()
|
||||||
|
.addGap(10, 10, 10)
|
||||||
|
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
|
||||||
|
.addComponent(keepCurrentViewerRB)
|
||||||
|
.addComponent(useBestViewerRB)
|
||||||
|
.addComponent(dataSourcesHideKnownCB)
|
||||||
|
.addComponent(viewsHideKnownCB))))
|
||||||
|
.addGap(0, 0, Short.MAX_VALUE))))
|
||||||
);
|
);
|
||||||
layout.setVerticalGroup(
|
layout.setVerticalGroup(
|
||||||
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
|
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
|
||||||
@ -87,12 +125,18 @@ final class GeneralPanel extends javax.swing.JPanel {
|
|||||||
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
|
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
|
||||||
.addComponent(keepCurrentViewerRB)
|
.addComponent(keepCurrentViewerRB)
|
||||||
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
|
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
|
||||||
|
.addComponent(jLabel3)
|
||||||
|
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
|
||||||
|
.addComponent(dataSourcesHideKnownCB)
|
||||||
|
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
|
||||||
|
.addComponent(viewsHideKnownCB)
|
||||||
|
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
|
||||||
.addComponent(jLabel2)
|
.addComponent(jLabel2)
|
||||||
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
|
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
|
||||||
.addComponent(useLocalTimeRB)
|
.addComponent(useLocalTimeRB)
|
||||||
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
|
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
|
||||||
.addComponent(useGMTTimeRB)
|
.addComponent(useGMTTimeRB)
|
||||||
.addContainerGap(26, Short.MAX_VALUE))
|
.addContainerGap(30, Short.MAX_VALUE))
|
||||||
);
|
);
|
||||||
}// </editor-fold>//GEN-END:initComponents
|
}// </editor-fold>//GEN-END:initComponents
|
||||||
|
|
||||||
@ -101,17 +145,21 @@ final class GeneralPanel extends javax.swing.JPanel {
|
|||||||
}//GEN-LAST:event_useBestViewerRBActionPerformed
|
}//GEN-LAST:event_useBestViewerRBActionPerformed
|
||||||
|
|
||||||
void load() {
|
void load() {
|
||||||
boolean keepPreferredViewer = NbPreferences.forModule(GeneralPanel.class).getBoolean(KEEP_PREFERRED_VIEWER, false);
|
boolean keepPreferredViewer = prefs.getBoolean(KEEP_PREFERRED_VIEWER, false);
|
||||||
keepCurrentViewerRB.setSelected(keepPreferredViewer);
|
keepCurrentViewerRB.setSelected(keepPreferredViewer);
|
||||||
useBestViewerRB.setSelected(!keepPreferredViewer);
|
useBestViewerRB.setSelected(!keepPreferredViewer);
|
||||||
boolean useLocalTime = NbPreferences.forModule(GeneralPanel.class).getBoolean(USE_LOCAL_TIME, true);
|
boolean useLocalTime = prefs.getBoolean(USE_LOCAL_TIME, true);
|
||||||
useLocalTimeRB.setSelected(useLocalTime);
|
useLocalTimeRB.setSelected(useLocalTime);
|
||||||
useGMTTimeRB.setSelected(!useLocalTime);
|
useGMTTimeRB.setSelected(!useLocalTime);
|
||||||
|
dataSourcesHideKnownCB.setSelected(prefs.getBoolean(DS_HIDE_KNOWN, false));
|
||||||
|
viewsHideKnownCB.setSelected(prefs.getBoolean(VIEWS_HIDE_KNOWN, true));
|
||||||
}
|
}
|
||||||
|
|
||||||
void store() {
|
void store() {
|
||||||
NbPreferences.forModule(GeneralPanel.class).putBoolean(KEEP_PREFERRED_VIEWER, keepCurrentViewerRB.isSelected());
|
prefs.putBoolean(KEEP_PREFERRED_VIEWER, keepCurrentViewerRB.isSelected());
|
||||||
NbPreferences.forModule(GeneralPanel.class).putBoolean(USE_LOCAL_TIME, useLocalTimeRB.isSelected());
|
prefs.putBoolean(USE_LOCAL_TIME, useLocalTimeRB.isSelected());
|
||||||
|
prefs.putBoolean(DS_HIDE_KNOWN, dataSourcesHideKnownCB.isSelected());
|
||||||
|
prefs.putBoolean(VIEWS_HIDE_KNOWN, viewsHideKnownCB.isSelected());
|
||||||
}
|
}
|
||||||
|
|
||||||
boolean valid() {
|
boolean valid() {
|
||||||
@ -121,11 +169,14 @@ final class GeneralPanel extends javax.swing.JPanel {
|
|||||||
// Variables declaration - do not modify//GEN-BEGIN:variables
|
// Variables declaration - do not modify//GEN-BEGIN:variables
|
||||||
private javax.swing.ButtonGroup buttonGroup1;
|
private javax.swing.ButtonGroup buttonGroup1;
|
||||||
private javax.swing.ButtonGroup buttonGroup3;
|
private javax.swing.ButtonGroup buttonGroup3;
|
||||||
|
private javax.swing.JCheckBox dataSourcesHideKnownCB;
|
||||||
private javax.swing.JLabel jLabel1;
|
private javax.swing.JLabel jLabel1;
|
||||||
private javax.swing.JLabel jLabel2;
|
private javax.swing.JLabel jLabel2;
|
||||||
|
private javax.swing.JLabel jLabel3;
|
||||||
private javax.swing.JRadioButton keepCurrentViewerRB;
|
private javax.swing.JRadioButton keepCurrentViewerRB;
|
||||||
private javax.swing.JRadioButton useBestViewerRB;
|
private javax.swing.JRadioButton useBestViewerRB;
|
||||||
private javax.swing.JRadioButton useGMTTimeRB;
|
private javax.swing.JRadioButton useGMTTimeRB;
|
||||||
private javax.swing.JRadioButton useLocalTimeRB;
|
private javax.swing.JRadioButton useLocalTimeRB;
|
||||||
|
private javax.swing.JCheckBox viewsHideKnownCB;
|
||||||
// End of variables declaration//GEN-END:variables
|
// End of variables declaration//GEN-END:variables
|
||||||
}
|
}
|
||||||
|
@ -21,10 +21,12 @@ package org.sleuthkit.autopsy.datamodel;
|
|||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.logging.Level;
|
import java.util.logging.Level;
|
||||||
|
import java.util.prefs.Preferences;
|
||||||
import org.sleuthkit.autopsy.coreutils.Logger;
|
import org.sleuthkit.autopsy.coreutils.Logger;
|
||||||
import org.openide.nodes.AbstractNode;
|
import org.openide.nodes.AbstractNode;
|
||||||
import org.openide.nodes.ChildFactory;
|
import org.openide.nodes.ChildFactory;
|
||||||
import org.openide.nodes.Node;
|
import org.openide.nodes.Node;
|
||||||
|
import org.openide.util.NbPreferences;
|
||||||
import org.sleuthkit.datamodel.AbstractFile;
|
import org.sleuthkit.datamodel.AbstractFile;
|
||||||
import org.sleuthkit.datamodel.Content;
|
import org.sleuthkit.datamodel.Content;
|
||||||
import org.sleuthkit.datamodel.ContentVisitor;
|
import org.sleuthkit.datamodel.ContentVisitor;
|
||||||
@ -45,6 +47,8 @@ class FileTypeChildren extends ChildFactory<Content> {
|
|||||||
private SleuthkitCase skCase;
|
private SleuthkitCase skCase;
|
||||||
private FileTypeExtensionFilters.SearchFilterInterface filter;
|
private FileTypeExtensionFilters.SearchFilterInterface filter;
|
||||||
private static final Logger logger = Logger.getLogger(FileTypeChildren.class.getName());
|
private static final Logger logger = Logger.getLogger(FileTypeChildren.class.getName());
|
||||||
|
private final Preferences prefs = NbPreferences.root().node("/org/sleuthkit/autopsy/core");
|
||||||
|
private static final String HIDE_KNOWN = "viewsHideKnown";
|
||||||
//private final static int MAX_OBJECTS = 2000;
|
//private final static int MAX_OBJECTS = 2000;
|
||||||
|
|
||||||
public FileTypeChildren(FileTypeExtensionFilters.SearchFilterInterface filter, SleuthkitCase skCase) {
|
public FileTypeChildren(FileTypeExtensionFilters.SearchFilterInterface filter, SleuthkitCase skCase) {
|
||||||
@ -59,8 +63,11 @@ class FileTypeChildren extends ChildFactory<Content> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private String createQuery(){
|
private String createQuery(){
|
||||||
String query = "(dir_type = " + TskData.TSK_FS_NAME_TYPE_ENUM.REG.getValue() + ")"
|
String query = "(dir_type = " + TskData.TSK_FS_NAME_TYPE_ENUM.REG.getValue() + ")";
|
||||||
+ " AND (known IS NULL OR known != " + TskData.FileKnown.KNOWN.getFileKnownValue() + ") AND (0";
|
if (prefs.getBoolean(HIDE_KNOWN, true)) {
|
||||||
|
query += " AND (known IS NULL OR known != " + TskData.FileKnown.KNOWN.getFileKnownValue() + ")";
|
||||||
|
}
|
||||||
|
query += " AND (0";
|
||||||
for(String s : filter.getFilter()){
|
for(String s : filter.getFilter()){
|
||||||
query += " OR name LIKE '%" + s + "'";
|
query += " OR name LIKE '%" + s + "'";
|
||||||
}
|
}
|
||||||
|
178
Core/src/org/sleuthkit/autopsy/datamodel/KnownFileFilterNode.java
Executable file
178
Core/src/org/sleuthkit/autopsy/datamodel/KnownFileFilterNode.java
Executable file
@ -0,0 +1,178 @@
|
|||||||
|
/*
|
||||||
|
* 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.datamodel;
|
||||||
|
|
||||||
|
import java.util.prefs.PreferenceChangeEvent;
|
||||||
|
import java.util.prefs.PreferenceChangeListener;
|
||||||
|
import java.util.prefs.Preferences;
|
||||||
|
import org.openide.nodes.FilterNode;
|
||||||
|
import org.openide.nodes.Node;
|
||||||
|
import org.openide.util.NbPreferences;
|
||||||
|
import org.sleuthkit.datamodel.AbstractFile;
|
||||||
|
import org.sleuthkit.datamodel.TskData;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* A Filter Node responsible for filtering out Nodes that represent known files
|
||||||
|
* if the filter known files option is set.
|
||||||
|
*
|
||||||
|
* @author jwallace
|
||||||
|
*/
|
||||||
|
public class KnownFileFilterNode extends FilterNode {
|
||||||
|
|
||||||
|
public enum SelectionContext {
|
||||||
|
DATA_SOURCES("Data Sources"), // Subnode of DataSources
|
||||||
|
VIEWS("Views"), // Subnode of Views
|
||||||
|
OTHER(""); // Subnode of another node.
|
||||||
|
|
||||||
|
private final String displayName;
|
||||||
|
|
||||||
|
SelectionContext(String displayName) {
|
||||||
|
this.displayName = displayName;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static SelectionContext getContextFromName(String name) {
|
||||||
|
if (name.equals(DATA_SOURCES.getName())) {
|
||||||
|
return DATA_SOURCES;
|
||||||
|
} else if (name.equals(VIEWS.getName())) {
|
||||||
|
return VIEWS;
|
||||||
|
} else {
|
||||||
|
return OTHER;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private String getName() {
|
||||||
|
return displayName;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public KnownFileFilterNode(Node arg, SelectionContext context) {
|
||||||
|
super(arg, new KnownFileFilterChildren(arg, context));
|
||||||
|
}
|
||||||
|
|
||||||
|
KnownFileFilterNode(Node arg, boolean filter) {
|
||||||
|
super(arg, new KnownFileFilterChildren(arg, filter));
|
||||||
|
}
|
||||||
|
|
||||||
|
public static SelectionContext getSelectionContext(Node n) {
|
||||||
|
if (n == null) {
|
||||||
|
// Parent of root node. Should never get here.
|
||||||
|
return SelectionContext.OTHER;
|
||||||
|
} else if (n.getParentNode().getParentNode() == null) {
|
||||||
|
// One level below root node. Should be one of DataSources, Views, or Results
|
||||||
|
return SelectionContext.getContextFromName(n.getDisplayName());
|
||||||
|
} else {
|
||||||
|
return getSelectionContext(n.getParentNode());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Complementary class to KnownFileFilterNode.
|
||||||
|
*
|
||||||
|
* Listens for changes to the Filter Known Files option. Filters out children
|
||||||
|
* the Nodes which represent known files. Otherwise, returns the original node
|
||||||
|
* wrapped in another instance of the KnownFileFilterNode.
|
||||||
|
*
|
||||||
|
* @author jwallace
|
||||||
|
*/
|
||||||
|
class KnownFileFilterChildren extends FilterNode.Children {
|
||||||
|
|
||||||
|
/** Preference key values. */
|
||||||
|
private static final String DS_HIDE_KNOWN = "dataSourcesHideKnown"; // Default false
|
||||||
|
private static final String VIEWS_HIDE_KNOWN = "viewsHideKnown"; // Default true
|
||||||
|
|
||||||
|
/** True if Nodes selected from the Views Node should filter Known Files. */
|
||||||
|
private static boolean filterFromViews = true;
|
||||||
|
|
||||||
|
/** True if Nodes selected from the DataSources Node should filter Known Files. */
|
||||||
|
private static boolean filterFromDataSources = false;
|
||||||
|
|
||||||
|
/** True if a listener has not been added to the preferences. */
|
||||||
|
private static boolean addListener = true;
|
||||||
|
|
||||||
|
/** True if this KnownFileFilterChildren should filter out known files. */
|
||||||
|
private boolean filter;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Constructor used when the context has already been determined.
|
||||||
|
* Should only be used internally by KnownFileFilerNode.
|
||||||
|
* @param arg
|
||||||
|
* @param filter
|
||||||
|
*/
|
||||||
|
KnownFileFilterChildren(Node arg, boolean filter) {
|
||||||
|
super(arg);
|
||||||
|
this.filter = filter;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Constructor used when the context has not been determined.
|
||||||
|
* @param arg
|
||||||
|
* @param context
|
||||||
|
*/
|
||||||
|
KnownFileFilterChildren(Node arg, KnownFileFilterNode.SelectionContext context) {
|
||||||
|
super(arg);
|
||||||
|
|
||||||
|
if (addListener) {
|
||||||
|
Preferences prefs = NbPreferences.root().node("/org/sleuthkit/autopsy/core");
|
||||||
|
// Initialize with values stored in preferences
|
||||||
|
filterFromViews = prefs.getBoolean(VIEWS_HIDE_KNOWN, filterFromViews);
|
||||||
|
filterFromDataSources = prefs.getBoolean(DS_HIDE_KNOWN, filterFromDataSources);
|
||||||
|
|
||||||
|
// Add listener
|
||||||
|
prefs.addPreferenceChangeListener(new PreferenceChangeListener() {
|
||||||
|
@Override
|
||||||
|
public void preferenceChange(PreferenceChangeEvent evt) {
|
||||||
|
switch (evt.getKey()) {
|
||||||
|
case VIEWS_HIDE_KNOWN:
|
||||||
|
filterFromViews = evt.getNode().getBoolean(VIEWS_HIDE_KNOWN, filterFromViews);
|
||||||
|
break;
|
||||||
|
case DS_HIDE_KNOWN:
|
||||||
|
filterFromDataSources = evt.getNode().getBoolean(DS_HIDE_KNOWN, filterFromDataSources);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
addListener = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
switch (context) {
|
||||||
|
case DATA_SOURCES:
|
||||||
|
filter = filterFromDataSources;
|
||||||
|
break;
|
||||||
|
case VIEWS:
|
||||||
|
filter = filterFromViews;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
filter = false;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected Node[] createNodes(Node arg) {
|
||||||
|
if (filter) {
|
||||||
|
// Filter out child nodes that represent known files
|
||||||
|
AbstractFile file = arg.getLookup().lookup(AbstractFile.class);
|
||||||
|
if (file!= null && file.getKnown() == TskData.FileKnown.KNOWN) {
|
||||||
|
return new Node[]{};
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return new Node[] { new KnownFileFilterNode(arg, filter) };
|
||||||
|
}
|
||||||
|
}
|
@ -56,6 +56,7 @@ import org.sleuthkit.autopsy.datamodel.ExtractedContentNode;
|
|||||||
import org.sleuthkit.autopsy.datamodel.DataSources;
|
import org.sleuthkit.autopsy.datamodel.DataSources;
|
||||||
import org.sleuthkit.autopsy.datamodel.DataSourcesNode;
|
import org.sleuthkit.autopsy.datamodel.DataSourcesNode;
|
||||||
import org.sleuthkit.autopsy.datamodel.KeywordHits;
|
import org.sleuthkit.autopsy.datamodel.KeywordHits;
|
||||||
|
import org.sleuthkit.autopsy.datamodel.KnownFileFilterNode;
|
||||||
import org.sleuthkit.autopsy.datamodel.Results;
|
import org.sleuthkit.autopsy.datamodel.Results;
|
||||||
import org.sleuthkit.autopsy.datamodel.ResultsNode;
|
import org.sleuthkit.autopsy.datamodel.ResultsNode;
|
||||||
import org.sleuthkit.autopsy.datamodel.RootContentChildren;
|
import org.sleuthkit.autopsy.datamodel.RootContentChildren;
|
||||||
@ -634,7 +635,8 @@ public final class DirectoryTreeTopComponent extends TopComponent implements Dat
|
|||||||
|
|
||||||
//set node, wrap in filter node first to filter out children
|
//set node, wrap in filter node first to filter out children
|
||||||
Node drfn = new DataResultFilterNode(originNode, DirectoryTreeTopComponent.this.em);
|
Node drfn = new DataResultFilterNode(originNode, DirectoryTreeTopComponent.this.em);
|
||||||
dataResult.setNode(new TableFilterNode(drfn, true));
|
Node kffn = new KnownFileFilterNode(drfn, KnownFileFilterNode.getSelectionContext(treeNode));
|
||||||
|
dataResult.setNode(new TableFilterNode(kffn, true));
|
||||||
|
|
||||||
String displayName = "";
|
String displayName = "";
|
||||||
Content content = originNode.getLookup().lookup(Content.class);
|
Content content = originNode.getLookup().lookup(Content.class);
|
||||||
@ -671,7 +673,7 @@ public final class DirectoryTreeTopComponent extends TopComponent implements Dat
|
|||||||
// update the back and forward list
|
// update the back and forward list
|
||||||
updateHistory(em.getSelectedNodes());
|
updateHistory(em.getSelectedNodes());
|
||||||
}
|
}
|
||||||
|
|
||||||
private void updateHistory(Node[] selectedNodes) {
|
private void updateHistory(Node[] selectedNodes) {
|
||||||
if (selectedNodes.length == 0) {
|
if (selectedNodes.length == 0) {
|
||||||
return;
|
return;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user