mirror of
https://github.com/overcuriousity/autopsy-flatpak.git
synced 2025-07-20 03:24:55 +00:00
6639 discovery filter panels
This commit is contained in:
parent
092430b102
commit
c2e0e64ab0
@ -70,6 +70,13 @@ abstract class AbstractFiltersPanel extends JPanel implements ActionListener, Li
|
|||||||
*/
|
*/
|
||||||
abstract FileSearchData.FileType getFileType();
|
abstract FileSearchData.FileType getFileType();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the type of results this filters panel is for.
|
||||||
|
*
|
||||||
|
* @return The type of results this panel filters.
|
||||||
|
*/
|
||||||
|
abstract ArtifactSearchData.ArtifactType getArtifactType();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Add a DiscoveryFilterPanel to the specified column with the specified
|
* Add a DiscoveryFilterPanel to the specified column with the specified
|
||||||
* settings.
|
* settings.
|
||||||
@ -248,8 +255,8 @@ abstract class AbstractFiltersPanel extends JPanel implements ActionListener, Li
|
|||||||
|
|
||||||
List<AbstractFilter> filtersToUse = new ArrayList<>();
|
List<AbstractFilter> filtersToUse = new ArrayList<>();
|
||||||
if (getResultType().equals(SearchData.ResultType.FILE)) {
|
if (getResultType().equals(SearchData.ResultType.FILE)) {
|
||||||
filtersToUse.add(new SearchFiltering.FileTypeFilter(getFileType()));
|
filtersToUse.add(new SearchFiltering.FileTypeFilter(getFileType()));
|
||||||
} else if (getResultType().equals(SearchData.ResultType.ARTIFACT)){
|
} else if (getResultType().equals(SearchData.ResultType.ARTIFACT)) {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -0,0 +1,53 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8" ?>
|
||||||
|
|
||||||
|
<Form version="1.5" maxVersion="1.9" type="org.netbeans.modules.form.forminfo.JPanelFormInfo">
|
||||||
|
<NonVisualComponents>
|
||||||
|
<Component class="javax.swing.JCheckBox" name="artifactTypeCheckbox">
|
||||||
|
<Properties>
|
||||||
|
<Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
|
||||||
|
<ResourceString bundle="org/sleuthkit/autopsy/discovery/Bundle.properties" key="ArtifactTypeFilterPanel.artifactTypeCheckbox.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/>
|
||||||
|
</Property>
|
||||||
|
</Properties>
|
||||||
|
</Component>
|
||||||
|
</NonVisualComponents>
|
||||||
|
<Properties>
|
||||||
|
<Property name="preferredSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor">
|
||||||
|
<Dimension value="[27, 27]"/>
|
||||||
|
</Property>
|
||||||
|
</Properties>
|
||||||
|
<AuxValues>
|
||||||
|
<AuxValue name="FormSettings_autoResourcing" type="java.lang.Integer" value="1"/>
|
||||||
|
<AuxValue name="FormSettings_autoSetComponentName" type="java.lang.Boolean" value="false"/>
|
||||||
|
<AuxValue name="FormSettings_generateFQN" type="java.lang.Boolean" value="true"/>
|
||||||
|
<AuxValue name="FormSettings_generateMnemonicsCode" type="java.lang.Boolean" value="true"/>
|
||||||
|
<AuxValue name="FormSettings_i18nAutoMode" type="java.lang.Boolean" value="true"/>
|
||||||
|
<AuxValue name="FormSettings_layoutCodeTarget" type="java.lang.Integer" value="1"/>
|
||||||
|
<AuxValue name="FormSettings_listenerGenerationStyle" type="java.lang.Integer" value="0"/>
|
||||||
|
<AuxValue name="FormSettings_variablesLocal" type="java.lang.Boolean" value="false"/>
|
||||||
|
<AuxValue name="FormSettings_variablesModifier" type="java.lang.Integer" value="2"/>
|
||||||
|
</AuxValues>
|
||||||
|
|
||||||
|
<Layout>
|
||||||
|
<DimensionLayout dim="0">
|
||||||
|
<Group type="103" groupAlignment="0" attributes="0">
|
||||||
|
<Component id="artifactTypeScrollPane" alignment="0" pref="229" max="32767" attributes="0"/>
|
||||||
|
</Group>
|
||||||
|
</DimensionLayout>
|
||||||
|
<DimensionLayout dim="1">
|
||||||
|
<Group type="103" groupAlignment="0" attributes="0">
|
||||||
|
<Component id="artifactTypeScrollPane" alignment="0" pref="38" max="32767" attributes="0"/>
|
||||||
|
</Group>
|
||||||
|
</DimensionLayout>
|
||||||
|
</Layout>
|
||||||
|
<SubComponents>
|
||||||
|
<Container class="javax.swing.JScrollPane" name="artifactTypeScrollPane">
|
||||||
|
<Properties>
|
||||||
|
<Property name="preferredSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor">
|
||||||
|
<Dimension value="[27, 27]"/>
|
||||||
|
</Property>
|
||||||
|
</Properties>
|
||||||
|
|
||||||
|
<Layout class="org.netbeans.modules.form.compat2.layouts.support.JScrollPaneSupportLayout"/>
|
||||||
|
</Container>
|
||||||
|
</SubComponents>
|
||||||
|
</Form>
|
@ -0,0 +1,105 @@
|
|||||||
|
/*
|
||||||
|
* Autopsy
|
||||||
|
*
|
||||||
|
* Copyright 2020 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.discovery;
|
||||||
|
|
||||||
|
import javax.swing.JCheckBox;
|
||||||
|
import javax.swing.JLabel;
|
||||||
|
import javax.swing.JList;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @author wschaefer
|
||||||
|
*/
|
||||||
|
class ArtifactTypeFilterPanel extends AbstractDiscoveryFilterPanel {
|
||||||
|
|
||||||
|
private static final long serialVersionUID = 1L;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Creates new form ArtifactTypeFilterPanel
|
||||||
|
*/
|
||||||
|
ArtifactTypeFilterPanel() {
|
||||||
|
initComponents();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This method is called from within the constructor to initialize the form.
|
||||||
|
* WARNING: Do NOT modify this code. The content of this method is always
|
||||||
|
* regenerated by the Form Editor.
|
||||||
|
*/
|
||||||
|
@SuppressWarnings("unchecked")
|
||||||
|
// <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
|
||||||
|
private void initComponents() {
|
||||||
|
|
||||||
|
artifactTypeCheckbox = new javax.swing.JCheckBox();
|
||||||
|
artifactTypeScrollPane = new javax.swing.JScrollPane();
|
||||||
|
|
||||||
|
org.openide.awt.Mnemonics.setLocalizedText(artifactTypeCheckbox, org.openide.util.NbBundle.getMessage(ArtifactTypeFilterPanel.class, "ArtifactTypeFilterPanel.artifactTypeCheckbox.text")); // NOI18N
|
||||||
|
|
||||||
|
setPreferredSize(new java.awt.Dimension(27, 27));
|
||||||
|
|
||||||
|
artifactTypeScrollPane.setPreferredSize(new java.awt.Dimension(27, 27));
|
||||||
|
|
||||||
|
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this);
|
||||||
|
this.setLayout(layout);
|
||||||
|
layout.setHorizontalGroup(
|
||||||
|
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
|
||||||
|
.addComponent(artifactTypeScrollPane, javax.swing.GroupLayout.DEFAULT_SIZE, 229, Short.MAX_VALUE)
|
||||||
|
);
|
||||||
|
layout.setVerticalGroup(
|
||||||
|
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
|
||||||
|
.addComponent(artifactTypeScrollPane, javax.swing.GroupLayout.DEFAULT_SIZE, 38, Short.MAX_VALUE)
|
||||||
|
);
|
||||||
|
}// </editor-fold>//GEN-END:initComponents
|
||||||
|
|
||||||
|
@Override
|
||||||
|
void configurePanel(boolean selected, int[] indicesSelected) {
|
||||||
|
artifactTypeCheckbox.setSelected(selected);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
JCheckBox getCheckbox() {
|
||||||
|
return artifactTypeCheckbox;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
JList<?> getList() {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
JLabel getAdditionalLabel() {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
String checkForError() {
|
||||||
|
return "Domain search is not implemented.";
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
AbstractFilter getFilter() {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// Variables declaration - do not modify//GEN-BEGIN:variables
|
||||||
|
private javax.swing.JCheckBox artifactTypeCheckbox;
|
||||||
|
private javax.swing.JScrollPane artifactTypeScrollPane;
|
||||||
|
// End of variables declaration//GEN-END:variables
|
||||||
|
}
|
@ -104,3 +104,9 @@ DiscoveryDialog.step1Label.text=Step 1: Choose result type
|
|||||||
ResultsSplitPaneDivider.hideButton.text=
|
ResultsSplitPaneDivider.hideButton.text=
|
||||||
ResultsSplitPaneDivider.showButton.text=
|
ResultsSplitPaneDivider.showButton.text=
|
||||||
ResultsSplitPaneDivider.detailsLabel.text=Details Area
|
ResultsSplitPaneDivider.detailsLabel.text=Details Area
|
||||||
|
DiscoveryDialog.domainsButton.text=Domains
|
||||||
|
DomainFilterPanel.domainFiltersSplitPane.border.title=Step 2: Filter which domains to show
|
||||||
|
DomainFilterPanel.domainFiltersSplitPane.toolTipText=
|
||||||
|
DateFilterPanel.dateFilterCheckbox.text=Date Filter
|
||||||
|
ArtifactTypeFilterPanel.artifactTypeCheckbox.text=Artifact Type
|
||||||
|
DomainUniquenessFilterPanel.domainUniquenessCheckbox.text=Domain Uniqueness
|
||||||
|
@ -14,6 +14,7 @@ DiscoveryTopComponent.newSearch.text=New Search
|
|||||||
DiscoveryTopComponent.searchCancelled.text=Search has been cancelled.
|
DiscoveryTopComponent.searchCancelled.text=Search has been cancelled.
|
||||||
# {0} - search
|
# {0} - search
|
||||||
DiscoveryTopComponent.searchComplete.text=Results with {0}
|
DiscoveryTopComponent.searchComplete.text=Results with {0}
|
||||||
|
DiscoveryTopComponent.searchError.text=Error no type specified for search.
|
||||||
# {0} - searchType
|
# {0} - searchType
|
||||||
DiscoveryTopComponent.searchInProgress.text=Performing search for results of type {0}. Please wait.
|
DiscoveryTopComponent.searchInProgress.text=Performing search for results of type {0}. Please wait.
|
||||||
DiscoveryUiUtility.bytes.text=bytes
|
DiscoveryUiUtility.bytes.text=bytes
|
||||||
@ -269,6 +270,12 @@ DiscoveryDialog.step1Label.text=Step 1: Choose result type
|
|||||||
ResultsSplitPaneDivider.hideButton.text=
|
ResultsSplitPaneDivider.hideButton.text=
|
||||||
ResultsSplitPaneDivider.showButton.text=
|
ResultsSplitPaneDivider.showButton.text=
|
||||||
ResultsSplitPaneDivider.detailsLabel.text=Details Area
|
ResultsSplitPaneDivider.detailsLabel.text=Details Area
|
||||||
|
DiscoveryDialog.domainsButton.text=Domains
|
||||||
|
DomainFilterPanel.domainFiltersSplitPane.border.title=Step 2: Filter which domains to show
|
||||||
|
DomainFilterPanel.domainFiltersSplitPane.toolTipText=
|
||||||
|
DateFilterPanel.dateFilterCheckbox.text=Date Filter
|
||||||
|
ArtifactTypeFilterPanel.artifactTypeCheckbox.text=Artifact Type
|
||||||
|
DomainUniquenessFilterPanel.domainUniquenessCheckbox.text=Domain Uniqueness
|
||||||
VideoThumbnailPanel.bytes.text=bytes
|
VideoThumbnailPanel.bytes.text=bytes
|
||||||
VideoThumbnailPanel.deleted.text=All instances of file are deleted.
|
VideoThumbnailPanel.deleted.text=All instances of file are deleted.
|
||||||
VideoThumbnailPanel.gigaBytes.text=GB
|
VideoThumbnailPanel.gigaBytes.text=GB
|
||||||
|
@ -0,0 +1,43 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8" ?>
|
||||||
|
|
||||||
|
<Form version="1.5" maxVersion="1.9" type="org.netbeans.modules.form.forminfo.JPanelFormInfo">
|
||||||
|
<NonVisualComponents>
|
||||||
|
<Component class="javax.swing.JCheckBox" name="dateFilterCheckbox">
|
||||||
|
<Properties>
|
||||||
|
<Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
|
||||||
|
<ResourceString bundle="org/sleuthkit/autopsy/discovery/Bundle.properties" key="DateFilterPanel.dateFilterCheckbox.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/>
|
||||||
|
</Property>
|
||||||
|
</Properties>
|
||||||
|
</Component>
|
||||||
|
</NonVisualComponents>
|
||||||
|
<AuxValues>
|
||||||
|
<AuxValue name="FormSettings_autoResourcing" type="java.lang.Integer" value="1"/>
|
||||||
|
<AuxValue name="FormSettings_autoSetComponentName" type="java.lang.Boolean" value="false"/>
|
||||||
|
<AuxValue name="FormSettings_generateFQN" type="java.lang.Boolean" value="true"/>
|
||||||
|
<AuxValue name="FormSettings_generateMnemonicsCode" type="java.lang.Boolean" value="true"/>
|
||||||
|
<AuxValue name="FormSettings_i18nAutoMode" type="java.lang.Boolean" value="true"/>
|
||||||
|
<AuxValue name="FormSettings_layoutCodeTarget" type="java.lang.Integer" value="1"/>
|
||||||
|
<AuxValue name="FormSettings_listenerGenerationStyle" type="java.lang.Integer" value="0"/>
|
||||||
|
<AuxValue name="FormSettings_variablesLocal" type="java.lang.Boolean" value="false"/>
|
||||||
|
<AuxValue name="FormSettings_variablesModifier" type="java.lang.Integer" value="2"/>
|
||||||
|
</AuxValues>
|
||||||
|
|
||||||
|
<Layout>
|
||||||
|
<DimensionLayout dim="0">
|
||||||
|
<Group type="103" groupAlignment="0" attributes="0">
|
||||||
|
<Component id="dateFilterScrollPane" alignment="0" pref="223" max="32767" attributes="0"/>
|
||||||
|
</Group>
|
||||||
|
</DimensionLayout>
|
||||||
|
<DimensionLayout dim="1">
|
||||||
|
<Group type="103" groupAlignment="0" attributes="0">
|
||||||
|
<Component id="dateFilterScrollPane" alignment="0" pref="43" max="32767" attributes="0"/>
|
||||||
|
</Group>
|
||||||
|
</DimensionLayout>
|
||||||
|
</Layout>
|
||||||
|
<SubComponents>
|
||||||
|
<Container class="javax.swing.JScrollPane" name="dateFilterScrollPane">
|
||||||
|
|
||||||
|
<Layout class="org.netbeans.modules.form.compat2.layouts.support.JScrollPaneSupportLayout"/>
|
||||||
|
</Container>
|
||||||
|
</SubComponents>
|
||||||
|
</Form>
|
101
Core/src/org/sleuthkit/autopsy/discovery/DateFilterPanel.java
Normal file
101
Core/src/org/sleuthkit/autopsy/discovery/DateFilterPanel.java
Normal file
@ -0,0 +1,101 @@
|
|||||||
|
/*
|
||||||
|
* Autopsy
|
||||||
|
*
|
||||||
|
* Copyright 2020 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.discovery;
|
||||||
|
|
||||||
|
import javax.swing.JCheckBox;
|
||||||
|
import javax.swing.JLabel;
|
||||||
|
import javax.swing.JList;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @author wschaefer
|
||||||
|
*/
|
||||||
|
class DateFilterPanel extends AbstractDiscoveryFilterPanel {
|
||||||
|
|
||||||
|
private static final long serialVersionUID = 1L;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Creates new form DateFilterPanel
|
||||||
|
*/
|
||||||
|
DateFilterPanel() {
|
||||||
|
initComponents();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This method is called from within the constructor to initialize the form.
|
||||||
|
* WARNING: Do NOT modify this code. The content of this method is always
|
||||||
|
* regenerated by the Form Editor.
|
||||||
|
*/
|
||||||
|
@SuppressWarnings("unchecked")
|
||||||
|
// <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
|
||||||
|
private void initComponents() {
|
||||||
|
|
||||||
|
dateFilterCheckbox = new javax.swing.JCheckBox();
|
||||||
|
dateFilterScrollPane = new javax.swing.JScrollPane();
|
||||||
|
|
||||||
|
org.openide.awt.Mnemonics.setLocalizedText(dateFilterCheckbox, org.openide.util.NbBundle.getMessage(DateFilterPanel.class, "DateFilterPanel.dateFilterCheckbox.text")); // NOI18N
|
||||||
|
|
||||||
|
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this);
|
||||||
|
this.setLayout(layout);
|
||||||
|
layout.setHorizontalGroup(
|
||||||
|
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
|
||||||
|
.addComponent(dateFilterScrollPane, javax.swing.GroupLayout.DEFAULT_SIZE, 223, Short.MAX_VALUE)
|
||||||
|
);
|
||||||
|
layout.setVerticalGroup(
|
||||||
|
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
|
||||||
|
.addComponent(dateFilterScrollPane, javax.swing.GroupLayout.DEFAULT_SIZE, 43, Short.MAX_VALUE)
|
||||||
|
);
|
||||||
|
}// </editor-fold>//GEN-END:initComponents
|
||||||
|
|
||||||
|
@Override
|
||||||
|
void configurePanel(boolean selected, int[] indicesSelected) {
|
||||||
|
dateFilterCheckbox.setSelected(selected);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
JCheckBox getCheckbox() {
|
||||||
|
return dateFilterCheckbox;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
JList<?> getList() {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
JLabel getAdditionalLabel() {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
String checkForError() {
|
||||||
|
return "Domain search is not implemented.";
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
AbstractFilter getFilter() {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// Variables declaration - do not modify//GEN-BEGIN:variables
|
||||||
|
private javax.swing.JCheckBox dateFilterCheckbox;
|
||||||
|
private javax.swing.JScrollPane dateFilterScrollPane;
|
||||||
|
// End of variables declaration//GEN-END:variables
|
||||||
|
}
|
@ -48,12 +48,14 @@
|
|||||||
<Group type="103" groupAlignment="0" attributes="0">
|
<Group type="103" groupAlignment="0" attributes="0">
|
||||||
<Group type="102" attributes="0">
|
<Group type="102" attributes="0">
|
||||||
<EmptySpace min="10" pref="10" max="-2" attributes="0"/>
|
<EmptySpace min="10" pref="10" max="-2" attributes="0"/>
|
||||||
<Component id="imagesButton" min="-2" pref="110" max="-2" attributes="0"/>
|
<Component id="imagesButton" linkSize="1" min="-2" pref="110" max="-2" attributes="0"/>
|
||||||
<EmptySpace max="-2" attributes="0"/>
|
<EmptySpace max="-2" attributes="0"/>
|
||||||
<Component id="videosButton" min="-2" pref="110" max="-2" attributes="0"/>
|
<Component id="videosButton" linkSize="1" min="-2" pref="110" max="-2" attributes="0"/>
|
||||||
<EmptySpace max="-2" attributes="0"/>
|
<EmptySpace max="-2" attributes="0"/>
|
||||||
<Component id="documentsButton" min="-2" max="-2" attributes="0"/>
|
<Component id="documentsButton" linkSize="1" min="-2" max="-2" attributes="0"/>
|
||||||
<EmptySpace pref="370" max="32767" attributes="0"/>
|
<EmptySpace max="-2" attributes="0"/>
|
||||||
|
<Component id="domainsButton" linkSize="1" min="-2" max="-2" attributes="0"/>
|
||||||
|
<EmptySpace pref="190" max="32767" attributes="0"/>
|
||||||
</Group>
|
</Group>
|
||||||
<Group type="102" attributes="0">
|
<Group type="102" attributes="0">
|
||||||
<Component id="step1Label" min="-2" pref="243" max="-2" attributes="0"/>
|
<Component id="step1Label" min="-2" pref="243" max="-2" attributes="0"/>
|
||||||
@ -78,6 +80,7 @@
|
|||||||
<Component id="videosButton" alignment="3" min="-2" max="-2" attributes="0"/>
|
<Component id="videosButton" alignment="3" min="-2" max="-2" attributes="0"/>
|
||||||
<Component id="imagesButton" alignment="3" min="-2" max="-2" attributes="0"/>
|
<Component id="imagesButton" alignment="3" min="-2" max="-2" attributes="0"/>
|
||||||
<Component id="documentsButton" alignment="3" min="-2" pref="43" max="-2" attributes="0"/>
|
<Component id="documentsButton" alignment="3" min="-2" pref="43" max="-2" attributes="0"/>
|
||||||
|
<Component id="domainsButton" alignment="3" min="-2" pref="43" max="-2" attributes="0"/>
|
||||||
</Group>
|
</Group>
|
||||||
<EmptySpace min="-2" pref="8" max="-2" attributes="0"/>
|
<EmptySpace min="-2" pref="8" max="-2" attributes="0"/>
|
||||||
</Group>
|
</Group>
|
||||||
@ -191,6 +194,26 @@
|
|||||||
<AuxValue name="classDetails" type="java.lang.String" value="Box.Filler.HorizontalStrut"/>
|
<AuxValue name="classDetails" type="java.lang.String" value="Box.Filler.HorizontalStrut"/>
|
||||||
</AuxValues>
|
</AuxValues>
|
||||||
</Component>
|
</Component>
|
||||||
|
<Component class="javax.swing.JButton" name="domainsButton">
|
||||||
|
<Properties>
|
||||||
|
<Property name="icon" type="javax.swing.Icon" editor="org.netbeans.modules.form.editors2.IconEditor">
|
||||||
|
<Image iconType="3" name="/org/sleuthkit/autopsy/images/web-file.png"/>
|
||||||
|
</Property>
|
||||||
|
<Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
|
||||||
|
<ResourceString bundle="org/sleuthkit/autopsy/discovery/Bundle.properties" key="DiscoveryDialog.domainsButton.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/>
|
||||||
|
</Property>
|
||||||
|
<Property name="disabledIcon" type="javax.swing.Icon" editor="org.netbeans.modules.form.editors2.IconEditor">
|
||||||
|
<Image iconType="3" name="/org/sleuthkit/autopsy/images/web-file.png"/>
|
||||||
|
</Property>
|
||||||
|
<Property name="disabledSelectedIcon" type="javax.swing.Icon" editor="org.netbeans.modules.form.editors2.IconEditor">
|
||||||
|
<Image iconType="3" name="/org/sleuthkit/autopsy/images/web-file.png"/>
|
||||||
|
</Property>
|
||||||
|
<Property name="focusable" type="boolean" value="false"/>
|
||||||
|
</Properties>
|
||||||
|
<Events>
|
||||||
|
<EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="domainsButtonActionPerformed"/>
|
||||||
|
</Events>
|
||||||
|
</Component>
|
||||||
</SubComponents>
|
</SubComponents>
|
||||||
</Container>
|
</Container>
|
||||||
<Container class="javax.swing.JPanel" name="displaySettingsPanel">
|
<Container class="javax.swing.JPanel" name="displaySettingsPanel">
|
||||||
|
@ -22,6 +22,7 @@ import static java.awt.BorderLayout.CENTER;
|
|||||||
import java.awt.Color;
|
import java.awt.Color;
|
||||||
import java.beans.PropertyChangeEvent;
|
import java.beans.PropertyChangeEvent;
|
||||||
import java.beans.PropertyChangeListener;
|
import java.beans.PropertyChangeListener;
|
||||||
|
import java.util.ArrayList;
|
||||||
import java.util.EnumSet;
|
import java.util.EnumSet;
|
||||||
import java.util.HashSet;
|
import java.util.HashSet;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
@ -61,12 +62,15 @@ final class DiscoveryDialog extends javax.swing.JDialog {
|
|||||||
private ImageFilterPanel imageFilterPanel = null;
|
private ImageFilterPanel imageFilterPanel = null;
|
||||||
private VideoFilterPanel videoFilterPanel = null;
|
private VideoFilterPanel videoFilterPanel = null;
|
||||||
private DocumentFilterPanel documentFilterPanel = null;
|
private DocumentFilterPanel documentFilterPanel = null;
|
||||||
|
private DomainFilterPanel domainFilterPanel = null;
|
||||||
private static final Color SELECTED_COLOR = new Color(216, 230, 242);
|
private static final Color SELECTED_COLOR = new Color(216, 230, 242);
|
||||||
private static final Color UNSELECTED_COLOR = new Color(240, 240, 240);
|
private static final Color UNSELECTED_COLOR = new Color(240, 240, 240);
|
||||||
private SearchWorker searchWorker = null;
|
private SearchWorker searchWorker = null;
|
||||||
private static DiscoveryDialog discDialog;
|
private static DiscoveryDialog discDialog;
|
||||||
private static volatile boolean shouldUpdate = false;
|
private static volatile boolean shouldUpdate = false;
|
||||||
|
private SearchData.ResultType resultType = SearchData.ResultType.FILE;
|
||||||
private FileSearchData.FileType fileType = FileSearchData.FileType.IMAGE;
|
private FileSearchData.FileType fileType = FileSearchData.FileType.IMAGE;
|
||||||
|
private ArtifactSearchData.ArtifactType artifactType = null;
|
||||||
private final PropertyChangeListener listener;
|
private final PropertyChangeListener listener;
|
||||||
private final Set<BlackboardAttribute> objectsDetected = new HashSet<>();
|
private final Set<BlackboardAttribute> objectsDetected = new HashSet<>();
|
||||||
private final Set<BlackboardAttribute> interestingItems = new HashSet<>();
|
private final Set<BlackboardAttribute> interestingItems = new HashSet<>();
|
||||||
@ -122,17 +126,15 @@ final class DiscoveryDialog extends javax.swing.JDialog {
|
|||||||
imageFilterPanel = new ImageFilterPanel();
|
imageFilterPanel = new ImageFilterPanel();
|
||||||
videoFilterPanel = new VideoFilterPanel();
|
videoFilterPanel = new VideoFilterPanel();
|
||||||
documentFilterPanel = new DocumentFilterPanel();
|
documentFilterPanel = new DocumentFilterPanel();
|
||||||
|
domainFilterPanel = new DomainFilterPanel();
|
||||||
|
unselectAllButtons();
|
||||||
imagesButton.setSelected(true);
|
imagesButton.setSelected(true);
|
||||||
imagesButton.setEnabled(false);
|
imagesButton.setEnabled(false);
|
||||||
imagesButton.setBackground(SELECTED_COLOR);
|
imagesButton.setBackground(SELECTED_COLOR);
|
||||||
imagesButton.setForeground(Color.BLACK);
|
imagesButton.setForeground(Color.BLACK);
|
||||||
videosButton.setSelected(false);
|
resultType = SearchData.ResultType.FILE;
|
||||||
videosButton.setEnabled(true);
|
|
||||||
videosButton.setBackground(UNSELECTED_COLOR);
|
|
||||||
documentsButton.setSelected(false);
|
|
||||||
documentsButton.setEnabled(true);
|
|
||||||
documentsButton.setBackground(UNSELECTED_COLOR);
|
|
||||||
fileType = FileSearchData.FileType.IMAGE;
|
fileType = FileSearchData.FileType.IMAGE;
|
||||||
|
artifactType = null;
|
||||||
add(imageFilterPanel, CENTER);
|
add(imageFilterPanel, CENTER);
|
||||||
imageFilterPanel.addPropertyChangeListener(listener);
|
imageFilterPanel.addPropertyChangeListener(listener);
|
||||||
updateComboBoxes();
|
updateComboBoxes();
|
||||||
@ -141,6 +143,21 @@ final class DiscoveryDialog extends javax.swing.JDialog {
|
|||||||
repaint();
|
repaint();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void unselectAllButtons() {
|
||||||
|
imagesButton.setSelected(false);
|
||||||
|
imagesButton.setEnabled(true);
|
||||||
|
imagesButton.setBackground(UNSELECTED_COLOR);
|
||||||
|
videosButton.setSelected(false);
|
||||||
|
videosButton.setEnabled(true);
|
||||||
|
videosButton.setBackground(UNSELECTED_COLOR);
|
||||||
|
documentsButton.setSelected(false);
|
||||||
|
documentsButton.setEnabled(true);
|
||||||
|
documentsButton.setBackground(UNSELECTED_COLOR);
|
||||||
|
domainsButton.setSelected(false);
|
||||||
|
domainsButton.setEnabled(true);
|
||||||
|
domainsButton.setBackground(UNSELECTED_COLOR);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Private helper method to perform update of comboboxes update.
|
* Private helper method to perform update of comboboxes update.
|
||||||
*/
|
*/
|
||||||
@ -199,17 +216,31 @@ final class DiscoveryDialog extends javax.swing.JDialog {
|
|||||||
* Validate the current filter settings of the selected type.
|
* Validate the current filter settings of the selected type.
|
||||||
*/
|
*/
|
||||||
synchronized void validateDialog() {
|
synchronized void validateDialog() {
|
||||||
|
switch (resultType) {
|
||||||
|
case FILE:
|
||||||
|
validateFileDialog();
|
||||||
|
break;
|
||||||
|
case ARTIFACT:
|
||||||
|
validateArtifactDialog();
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Validate the filter settings for File type filters.
|
||||||
|
*/
|
||||||
|
private synchronized void validateFileDialog() {
|
||||||
switch (fileType) {
|
switch (fileType) {
|
||||||
case IMAGE:
|
case IMAGE:
|
||||||
if (imageFilterPanel != null) {
|
if (imageFilterPanel != null) {
|
||||||
imageFilterPanel.validateFields();
|
imageFilterPanel.validateFields();
|
||||||
}
|
}
|
||||||
return;
|
break;
|
||||||
case VIDEO:
|
case VIDEO:
|
||||||
if (videoFilterPanel != null) {
|
if (videoFilterPanel != null) {
|
||||||
videoFilterPanel.validateFields();
|
videoFilterPanel.validateFields();
|
||||||
}
|
}
|
||||||
return;
|
break;
|
||||||
case DOCUMENTS:
|
case DOCUMENTS:
|
||||||
if (documentFilterPanel != null) {
|
if (documentFilterPanel != null) {
|
||||||
documentFilterPanel.validateFields();
|
documentFilterPanel.validateFields();
|
||||||
@ -220,6 +251,21 @@ final class DiscoveryDialog extends javax.swing.JDialog {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Validate the filter settings for Artifact type filters.
|
||||||
|
*/
|
||||||
|
private synchronized void validateArtifactDialog() {
|
||||||
|
switch (artifactType) {
|
||||||
|
case DOMAIN:
|
||||||
|
if (domainFilterPanel != null) {
|
||||||
|
domainFilterPanel.validateFields();
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This method is called from within the constructor to initialize the form.
|
* This method is called from within the constructor to initialize the form.
|
||||||
* WARNING: Do NOT modify this code. The content of this method is always
|
* WARNING: Do NOT modify this code. The content of this method is always
|
||||||
@ -235,6 +281,7 @@ final class DiscoveryDialog extends javax.swing.JDialog {
|
|||||||
documentsButton = new javax.swing.JButton();
|
documentsButton = new javax.swing.JButton();
|
||||||
javax.swing.JLabel step1Label = new javax.swing.JLabel();
|
javax.swing.JLabel step1Label = new javax.swing.JLabel();
|
||||||
javax.swing.Box.Filler filler1 = new javax.swing.Box.Filler(new java.awt.Dimension(104, 0), new java.awt.Dimension(104, 0), new java.awt.Dimension(104, 32767));
|
javax.swing.Box.Filler filler1 = new javax.swing.Box.Filler(new java.awt.Dimension(104, 0), new java.awt.Dimension(104, 0), new java.awt.Dimension(104, 32767));
|
||||||
|
domainsButton = new javax.swing.JButton();
|
||||||
javax.swing.JPanel displaySettingsPanel = new javax.swing.JPanel();
|
javax.swing.JPanel displaySettingsPanel = new javax.swing.JPanel();
|
||||||
searchButton = new javax.swing.JButton();
|
searchButton = new javax.swing.JButton();
|
||||||
errorLabel = new javax.swing.JLabel();
|
errorLabel = new javax.swing.JLabel();
|
||||||
@ -249,6 +296,7 @@ final class DiscoveryDialog extends javax.swing.JDialog {
|
|||||||
setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
|
setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
|
||||||
setMinimumSize(new java.awt.Dimension(600, 300));
|
setMinimumSize(new java.awt.Dimension(600, 300));
|
||||||
setPreferredSize(new java.awt.Dimension(1000, 650));
|
setPreferredSize(new java.awt.Dimension(1000, 650));
|
||||||
|
getContentPane().setLayout(new java.awt.BorderLayout());
|
||||||
|
|
||||||
imagesButton.setIcon(new javax.swing.ImageIcon(getClass().getResource("/org/sleuthkit/autopsy/images/pictures-icon.png"))); // NOI18N
|
imagesButton.setIcon(new javax.swing.ImageIcon(getClass().getResource("/org/sleuthkit/autopsy/images/pictures-icon.png"))); // NOI18N
|
||||||
org.openide.awt.Mnemonics.setLocalizedText(imagesButton, org.openide.util.NbBundle.getMessage(DiscoveryDialog.class, "DiscoveryDialog.imagesButton.text")); // NOI18N
|
org.openide.awt.Mnemonics.setLocalizedText(imagesButton, org.openide.util.NbBundle.getMessage(DiscoveryDialog.class, "DiscoveryDialog.imagesButton.text")); // NOI18N
|
||||||
@ -292,6 +340,17 @@ final class DiscoveryDialog extends javax.swing.JDialog {
|
|||||||
|
|
||||||
org.openide.awt.Mnemonics.setLocalizedText(step1Label, org.openide.util.NbBundle.getMessage(DiscoveryDialog.class, "DiscoveryDialog.step1Label.text")); // NOI18N
|
org.openide.awt.Mnemonics.setLocalizedText(step1Label, org.openide.util.NbBundle.getMessage(DiscoveryDialog.class, "DiscoveryDialog.step1Label.text")); // NOI18N
|
||||||
|
|
||||||
|
domainsButton.setIcon(new javax.swing.ImageIcon(getClass().getResource("/org/sleuthkit/autopsy/images/web-file.png"))); // NOI18N
|
||||||
|
org.openide.awt.Mnemonics.setLocalizedText(domainsButton, org.openide.util.NbBundle.getMessage(DiscoveryDialog.class, "DiscoveryDialog.domainsButton.text")); // NOI18N
|
||||||
|
domainsButton.setDisabledIcon(new javax.swing.ImageIcon(getClass().getResource("/org/sleuthkit/autopsy/images/web-file.png"))); // NOI18N
|
||||||
|
domainsButton.setDisabledSelectedIcon(new javax.swing.ImageIcon(getClass().getResource("/org/sleuthkit/autopsy/images/web-file.png"))); // NOI18N
|
||||||
|
domainsButton.setFocusable(false);
|
||||||
|
domainsButton.addActionListener(new java.awt.event.ActionListener() {
|
||||||
|
public void actionPerformed(java.awt.event.ActionEvent evt) {
|
||||||
|
domainsButtonActionPerformed(evt);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
javax.swing.GroupLayout toolBarPanelLayout = new javax.swing.GroupLayout(toolBarPanel);
|
javax.swing.GroupLayout toolBarPanelLayout = new javax.swing.GroupLayout(toolBarPanel);
|
||||||
toolBarPanel.setLayout(toolBarPanelLayout);
|
toolBarPanel.setLayout(toolBarPanelLayout);
|
||||||
toolBarPanelLayout.setHorizontalGroup(
|
toolBarPanelLayout.setHorizontalGroup(
|
||||||
@ -306,13 +365,18 @@ final class DiscoveryDialog extends javax.swing.JDialog {
|
|||||||
.addComponent(videosButton, javax.swing.GroupLayout.PREFERRED_SIZE, 110, javax.swing.GroupLayout.PREFERRED_SIZE)
|
.addComponent(videosButton, javax.swing.GroupLayout.PREFERRED_SIZE, 110, javax.swing.GroupLayout.PREFERRED_SIZE)
|
||||||
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
|
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
|
||||||
.addComponent(documentsButton)
|
.addComponent(documentsButton)
|
||||||
.addContainerGap(370, Short.MAX_VALUE))
|
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
|
||||||
|
.addComponent(domainsButton)
|
||||||
|
.addContainerGap(190, Short.MAX_VALUE))
|
||||||
.addGroup(toolBarPanelLayout.createSequentialGroup()
|
.addGroup(toolBarPanelLayout.createSequentialGroup()
|
||||||
.addComponent(step1Label, javax.swing.GroupLayout.PREFERRED_SIZE, 243, javax.swing.GroupLayout.PREFERRED_SIZE)
|
.addComponent(step1Label, javax.swing.GroupLayout.PREFERRED_SIZE, 243, javax.swing.GroupLayout.PREFERRED_SIZE)
|
||||||
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
|
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
|
||||||
.addComponent(filler1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
|
.addComponent(filler1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
|
||||||
.addContainerGap(391, Short.MAX_VALUE))))
|
.addContainerGap(391, Short.MAX_VALUE))))
|
||||||
);
|
);
|
||||||
|
|
||||||
|
toolBarPanelLayout.linkSize(javax.swing.SwingConstants.HORIZONTAL, new java.awt.Component[] {documentsButton, domainsButton, imagesButton, videosButton});
|
||||||
|
|
||||||
toolBarPanelLayout.setVerticalGroup(
|
toolBarPanelLayout.setVerticalGroup(
|
||||||
toolBarPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
|
toolBarPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
|
||||||
.addGroup(toolBarPanelLayout.createSequentialGroup()
|
.addGroup(toolBarPanelLayout.createSequentialGroup()
|
||||||
@ -324,7 +388,8 @@ final class DiscoveryDialog extends javax.swing.JDialog {
|
|||||||
.addGroup(toolBarPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
|
.addGroup(toolBarPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
|
||||||
.addComponent(videosButton, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
|
.addComponent(videosButton, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
|
||||||
.addComponent(imagesButton, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
|
.addComponent(imagesButton, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
|
||||||
.addComponent(documentsButton, javax.swing.GroupLayout.PREFERRED_SIZE, 43, javax.swing.GroupLayout.PREFERRED_SIZE))
|
.addComponent(documentsButton, javax.swing.GroupLayout.PREFERRED_SIZE, 43, javax.swing.GroupLayout.PREFERRED_SIZE)
|
||||||
|
.addComponent(domainsButton, javax.swing.GroupLayout.PREFERRED_SIZE, 43, javax.swing.GroupLayout.PREFERRED_SIZE))
|
||||||
.addGap(8, 8, 8))
|
.addGap(8, 8, 8))
|
||||||
);
|
);
|
||||||
|
|
||||||
@ -417,16 +482,13 @@ final class DiscoveryDialog extends javax.swing.JDialog {
|
|||||||
private void imagesButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_imagesButtonActionPerformed
|
private void imagesButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_imagesButtonActionPerformed
|
||||||
removeAllPanels();
|
removeAllPanels();
|
||||||
add(imageFilterPanel, CENTER);
|
add(imageFilterPanel, CENTER);
|
||||||
|
unselectAllButtons();
|
||||||
imagesButton.setSelected(true);
|
imagesButton.setSelected(true);
|
||||||
imagesButton.setEnabled(false);
|
imagesButton.setEnabled(false);
|
||||||
imagesButton.setBackground(SELECTED_COLOR);
|
imagesButton.setBackground(SELECTED_COLOR);
|
||||||
imagesButton.setForeground(Color.BLACK);
|
imagesButton.setForeground(Color.BLACK);
|
||||||
videosButton.setSelected(false);
|
resultType = SearchData.ResultType.FILE;
|
||||||
videosButton.setEnabled(true);
|
artifactType = null;
|
||||||
videosButton.setBackground(UNSELECTED_COLOR);
|
|
||||||
documentsButton.setSelected(false);
|
|
||||||
documentsButton.setEnabled(true);
|
|
||||||
documentsButton.setBackground(UNSELECTED_COLOR);
|
|
||||||
fileType = FileSearchData.FileType.IMAGE;
|
fileType = FileSearchData.FileType.IMAGE;
|
||||||
imageFilterPanel.addPropertyChangeListener(listener);
|
imageFilterPanel.addPropertyChangeListener(listener);
|
||||||
validateDialog();
|
validateDialog();
|
||||||
@ -437,17 +499,14 @@ final class DiscoveryDialog extends javax.swing.JDialog {
|
|||||||
private void videosButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_videosButtonActionPerformed
|
private void videosButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_videosButtonActionPerformed
|
||||||
removeAllPanels();
|
removeAllPanels();
|
||||||
add(videoFilterPanel, CENTER);
|
add(videoFilterPanel, CENTER);
|
||||||
imagesButton.setSelected(false);
|
unselectAllButtons();
|
||||||
imagesButton.setEnabled(true);
|
|
||||||
imagesButton.setBackground(UNSELECTED_COLOR);
|
|
||||||
videosButton.setSelected(true);
|
videosButton.setSelected(true);
|
||||||
videosButton.setEnabled(false);
|
videosButton.setEnabled(false);
|
||||||
videosButton.setBackground(SELECTED_COLOR);
|
videosButton.setBackground(SELECTED_COLOR);
|
||||||
videosButton.setForeground(Color.BLACK);
|
videosButton.setForeground(Color.BLACK);
|
||||||
documentsButton.setSelected(false);
|
|
||||||
documentsButton.setEnabled(true);
|
|
||||||
documentsButton.setBackground(UNSELECTED_COLOR);
|
|
||||||
videoFilterPanel.addPropertyChangeListener(listener);
|
videoFilterPanel.addPropertyChangeListener(listener);
|
||||||
|
resultType = SearchData.ResultType.FILE;
|
||||||
|
artifactType = null;
|
||||||
fileType = FileSearchData.FileType.VIDEO;
|
fileType = FileSearchData.FileType.VIDEO;
|
||||||
validateDialog();
|
validateDialog();
|
||||||
pack();
|
pack();
|
||||||
@ -457,16 +516,13 @@ final class DiscoveryDialog extends javax.swing.JDialog {
|
|||||||
private void documentsButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_documentsButtonActionPerformed
|
private void documentsButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_documentsButtonActionPerformed
|
||||||
removeAllPanels();
|
removeAllPanels();
|
||||||
add(documentFilterPanel, CENTER);
|
add(documentFilterPanel, CENTER);
|
||||||
|
unselectAllButtons();
|
||||||
documentsButton.setSelected(true);
|
documentsButton.setSelected(true);
|
||||||
documentsButton.setEnabled(false);
|
documentsButton.setEnabled(false);
|
||||||
documentsButton.setBackground(SELECTED_COLOR);
|
documentsButton.setBackground(SELECTED_COLOR);
|
||||||
documentsButton.setForeground(Color.BLACK);
|
documentsButton.setForeground(Color.BLACK);
|
||||||
videosButton.setSelected(false);
|
resultType = SearchData.ResultType.FILE;
|
||||||
videosButton.setEnabled(true);
|
artifactType = null;
|
||||||
videosButton.setBackground(UNSELECTED_COLOR);
|
|
||||||
imagesButton.setSelected(false);
|
|
||||||
imagesButton.setEnabled(true);
|
|
||||||
imagesButton.setBackground(UNSELECTED_COLOR);
|
|
||||||
fileType = FileSearchData.FileType.DOCUMENTS;
|
fileType = FileSearchData.FileType.DOCUMENTS;
|
||||||
documentFilterPanel.addPropertyChangeListener(listener);
|
documentFilterPanel.addPropertyChangeListener(listener);
|
||||||
validateDialog();
|
validateDialog();
|
||||||
@ -490,6 +546,10 @@ final class DiscoveryDialog extends javax.swing.JDialog {
|
|||||||
remove(videoFilterPanel);
|
remove(videoFilterPanel);
|
||||||
videoFilterPanel.removePropertyChangeListener(listener);
|
videoFilterPanel.removePropertyChangeListener(listener);
|
||||||
}
|
}
|
||||||
|
if (domainFilterPanel != null) {
|
||||||
|
remove(domainFilterPanel);
|
||||||
|
domainFilterPanel.removePropertyChangeListener(listener);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void searchButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_searchButtonActionPerformed
|
private void searchButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_searchButtonActionPerformed
|
||||||
@ -508,10 +568,16 @@ final class DiscoveryDialog extends javax.swing.JDialog {
|
|||||||
filters = videoFilterPanel.getFilters();
|
filters = videoFilterPanel.getFilters();
|
||||||
} else if (documentsButton.isSelected()) {
|
} else if (documentsButton.isSelected()) {
|
||||||
filters = documentFilterPanel.getFilters();
|
filters = documentFilterPanel.getFilters();
|
||||||
} else {
|
} else if (imagesButton.isSelected()) {
|
||||||
filters = imageFilterPanel.getFilters();
|
filters = imageFilterPanel.getFilters();
|
||||||
|
} else if (domainsButton.isSelected()) {
|
||||||
|
filters = domainFilterPanel.getFilters();
|
||||||
|
} else {
|
||||||
|
logger.log(Level.SEVERE, "No filter type selected");
|
||||||
|
filters = new ArrayList<>();
|
||||||
}
|
}
|
||||||
DiscoveryEventUtils.getDiscoveryEventBus().post(new DiscoveryEventUtils.SearchStartedEvent(fileType));
|
|
||||||
|
DiscoveryEventUtils.getDiscoveryEventBus().post(new DiscoveryEventUtils.SearchStartedEvent(resultType, fileType, artifactType));
|
||||||
|
|
||||||
// Get the grouping attribute and group sorting method
|
// Get the grouping attribute and group sorting method
|
||||||
FileSearch.AttributeType groupingAttr = groupByCombobox.getItemAt(groupByCombobox.getSelectedIndex()).getAttributeType();
|
FileSearch.AttributeType groupingAttr = groupByCombobox.getItemAt(groupByCombobox.getSelectedIndex()).getAttributeType();
|
||||||
@ -535,6 +601,23 @@ final class DiscoveryDialog extends javax.swing.JDialog {
|
|||||||
tc.requestActive();
|
tc.requestActive();
|
||||||
}//GEN-LAST:event_searchButtonActionPerformed
|
}//GEN-LAST:event_searchButtonActionPerformed
|
||||||
|
|
||||||
|
private void domainsButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_domainsButtonActionPerformed
|
||||||
|
removeAllPanels();
|
||||||
|
add(domainFilterPanel, CENTER);
|
||||||
|
unselectAllButtons();
|
||||||
|
domainsButton.setSelected(true);
|
||||||
|
domainsButton.setEnabled(false);
|
||||||
|
domainsButton.setBackground(SELECTED_COLOR);
|
||||||
|
domainsButton.setForeground(Color.BLACK);
|
||||||
|
resultType = SearchData.ResultType.ARTIFACT;
|
||||||
|
artifactType = ArtifactSearchData.ArtifactType.DOMAIN;
|
||||||
|
fileType = null;
|
||||||
|
documentFilterPanel.addPropertyChangeListener(listener);
|
||||||
|
validateDialog();
|
||||||
|
pack();
|
||||||
|
repaint();
|
||||||
|
}//GEN-LAST:event_domainsButtonActionPerformed
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void dispose() {
|
public void dispose() {
|
||||||
setVisible(false);
|
setVisible(false);
|
||||||
@ -569,6 +652,7 @@ final class DiscoveryDialog extends javax.swing.JDialog {
|
|||||||
|
|
||||||
// Variables declaration - do not modify//GEN-BEGIN:variables
|
// Variables declaration - do not modify//GEN-BEGIN:variables
|
||||||
private javax.swing.JButton documentsButton;
|
private javax.swing.JButton documentsButton;
|
||||||
|
private javax.swing.JButton domainsButton;
|
||||||
private javax.swing.JLabel errorLabel;
|
private javax.swing.JLabel errorLabel;
|
||||||
private javax.swing.JComboBox<GroupingAttributeType> groupByCombobox;
|
private javax.swing.JComboBox<GroupingAttributeType> groupByCombobox;
|
||||||
private javax.swing.JComboBox<GroupSortingAlgorithm> groupSortingComboBox;
|
private javax.swing.JComboBox<GroupSortingAlgorithm> groupSortingComboBox;
|
||||||
|
@ -22,8 +22,10 @@ import com.google.common.eventbus.EventBus;
|
|||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
import org.sleuthkit.autopsy.discovery.ArtifactSearchData.ArtifactType;
|
||||||
import org.sleuthkit.autopsy.discovery.FileSearch.GroupKey;
|
import org.sleuthkit.autopsy.discovery.FileSearch.GroupKey;
|
||||||
import org.sleuthkit.autopsy.discovery.FileSearchData.FileType;
|
import org.sleuthkit.autopsy.discovery.FileSearchData.FileType;
|
||||||
|
import org.sleuthkit.autopsy.discovery.SearchData.ResultType;
|
||||||
import org.sleuthkit.datamodel.AbstractFile;
|
import org.sleuthkit.datamodel.AbstractFile;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -54,15 +56,28 @@ final class DiscoveryEventUtils {
|
|||||||
*/
|
*/
|
||||||
static final class SearchStartedEvent {
|
static final class SearchStartedEvent {
|
||||||
|
|
||||||
|
private final ResultType resultType;
|
||||||
private final FileType fileType;
|
private final FileType fileType;
|
||||||
|
private final ArtifactType artifactType;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Construct a new SearchStartedEvent
|
* Construct a new SearchStartedEvent
|
||||||
*
|
*
|
||||||
* @param type The type of file the search event is for.
|
* @param type The type of file the search event is for.
|
||||||
*/
|
*/
|
||||||
SearchStartedEvent(FileType type) {
|
SearchStartedEvent(ResultType resultType, FileType fileType, ArtifactType artifactType) {
|
||||||
this.fileType = type;
|
this.resultType = resultType;
|
||||||
|
this.fileType = fileType;
|
||||||
|
this.artifactType = artifactType;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the broad search type.
|
||||||
|
*
|
||||||
|
* @return The result type, either FILES, or ARTIFACTS.
|
||||||
|
*/
|
||||||
|
ResultType getResultType() {
|
||||||
|
return resultType;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -70,9 +85,18 @@ final class DiscoveryEventUtils {
|
|||||||
*
|
*
|
||||||
* @return The type of files being searched for.
|
* @return The type of files being searched for.
|
||||||
*/
|
*/
|
||||||
FileType getType() {
|
FileType getFileType() {
|
||||||
return fileType;
|
return fileType;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the type of artifact the search is being performed for.
|
||||||
|
*
|
||||||
|
* @return The type of artifacts being searched for.
|
||||||
|
*/
|
||||||
|
ArtifactType getArtifactType() {
|
||||||
|
return artifactType;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -36,6 +36,7 @@ import org.openide.windows.RetainLocation;
|
|||||||
import org.openide.windows.TopComponent;
|
import org.openide.windows.TopComponent;
|
||||||
import org.openide.windows.WindowManager;
|
import org.openide.windows.WindowManager;
|
||||||
import org.sleuthkit.autopsy.coreutils.ThreadConfined;
|
import org.sleuthkit.autopsy.coreutils.ThreadConfined;
|
||||||
|
import org.sleuthkit.autopsy.discovery.SearchData.ResultType;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Create a dialog for displaying the Discovery results.
|
* Create a dialog for displaying the Discovery results.
|
||||||
@ -277,12 +278,19 @@ public final class DiscoveryTopComponent extends TopComponent {
|
|||||||
*/
|
*/
|
||||||
@Messages({"DiscoveryTopComponent.cancelButton.text=Cancel Search",
|
@Messages({"DiscoveryTopComponent.cancelButton.text=Cancel Search",
|
||||||
"# {0} - searchType",
|
"# {0} - searchType",
|
||||||
"DiscoveryTopComponent.searchInProgress.text=Performing search for results of type {0}. Please wait."})
|
"DiscoveryTopComponent.searchInProgress.text=Performing search for results of type {0}. Please wait.",
|
||||||
|
"DiscoveryTopComponent.searchError.text=Error no type specified for search."})
|
||||||
@Subscribe
|
@Subscribe
|
||||||
void handleSearchStartedEvent(DiscoveryEventUtils.SearchStartedEvent searchStartedEvent) {
|
void handleSearchStartedEvent(DiscoveryEventUtils.SearchStartedEvent searchStartedEvent) {
|
||||||
newSearchButton.setText(Bundle.DiscoveryTopComponent_cancelButton_text());
|
newSearchButton.setText(Bundle.DiscoveryTopComponent_cancelButton_text());
|
||||||
progressMessageTextArea.setForeground(Color.red);
|
progressMessageTextArea.setForeground(Color.red);
|
||||||
progressMessageTextArea.setText(Bundle.DiscoveryTopComponent_searchInProgress_text(searchStartedEvent.getType().name()));
|
String text = Bundle.DiscoveryTopComponent_searchError_text();
|
||||||
|
if (searchStartedEvent.getResultType() == ResultType.FILE) {
|
||||||
|
text = Bundle.DiscoveryTopComponent_searchInProgress_text(searchStartedEvent.getFileType().name());
|
||||||
|
} else if (searchStartedEvent.getResultType() == ResultType.ARTIFACT) {
|
||||||
|
text = Bundle.DiscoveryTopComponent_searchInProgress_text(searchStartedEvent.getArtifactType().name());
|
||||||
|
}
|
||||||
|
progressMessageTextArea.setText(text);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -103,4 +103,9 @@ final class DocumentFilterPanel extends AbstractFiltersPanel {
|
|||||||
return SearchData.ResultType.FILE;
|
return SearchData.ResultType.FILE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
ArtifactSearchData.ArtifactType getArtifactType() {
|
||||||
|
throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -1,6 +1,11 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8" ?>
|
<?xml version="1.0" encoding="UTF-8" ?>
|
||||||
|
|
||||||
<Form version="1.3" maxVersion="1.9" type="org.netbeans.modules.form.forminfo.JPanelFormInfo">
|
<Form version="1.4" maxVersion="1.9" type="org.netbeans.modules.form.forminfo.JPanelFormInfo">
|
||||||
|
<Properties>
|
||||||
|
<Property name="preferredSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor">
|
||||||
|
<Dimension value="[225, 70]"/>
|
||||||
|
</Property>
|
||||||
|
</Properties>
|
||||||
<AuxValues>
|
<AuxValues>
|
||||||
<AuxValue name="FormSettings_autoResourcing" type="java.lang.Integer" value="1"/>
|
<AuxValue name="FormSettings_autoResourcing" type="java.lang.Integer" value="1"/>
|
||||||
<AuxValue name="FormSettings_autoSetComponentName" type="java.lang.Boolean" value="false"/>
|
<AuxValue name="FormSettings_autoSetComponentName" type="java.lang.Boolean" value="false"/>
|
||||||
@ -11,18 +16,71 @@
|
|||||||
<AuxValue name="FormSettings_listenerGenerationStyle" type="java.lang.Integer" value="0"/>
|
<AuxValue name="FormSettings_listenerGenerationStyle" type="java.lang.Integer" value="0"/>
|
||||||
<AuxValue name="FormSettings_variablesLocal" type="java.lang.Boolean" value="false"/>
|
<AuxValue name="FormSettings_variablesLocal" type="java.lang.Boolean" value="false"/>
|
||||||
<AuxValue name="FormSettings_variablesModifier" type="java.lang.Integer" value="2"/>
|
<AuxValue name="FormSettings_variablesModifier" type="java.lang.Integer" value="2"/>
|
||||||
|
<AuxValue name="designerSize" type="java.awt.Dimension" value="-84,-19,0,5,115,114,0,18,106,97,118,97,46,97,119,116,46,68,105,109,101,110,115,105,111,110,65,-114,-39,-41,-84,95,68,20,2,0,2,73,0,6,104,101,105,103,104,116,73,0,5,119,105,100,116,104,120,112,0,0,0,68,0,0,0,-31"/>
|
||||||
</AuxValues>
|
</AuxValues>
|
||||||
|
|
||||||
<Layout>
|
<Layout class="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout"/>
|
||||||
<DimensionLayout dim="0">
|
<SubComponents>
|
||||||
<Group type="103" groupAlignment="0" attributes="0">
|
<Container class="javax.swing.JScrollPane" name="domainFiltersScrollPane">
|
||||||
<EmptySpace min="0" pref="400" max="32767" attributes="0"/>
|
<AuxValues>
|
||||||
</Group>
|
<AuxValue name="JavaCodeGenerator_VariableLocal" type="java.lang.Boolean" value="true"/>
|
||||||
</DimensionLayout>
|
<AuxValue name="JavaCodeGenerator_VariableModifier" type="java.lang.Integer" value="0"/>
|
||||||
<DimensionLayout dim="1">
|
</AuxValues>
|
||||||
<Group type="103" groupAlignment="0" attributes="0">
|
<Constraints>
|
||||||
<EmptySpace min="0" pref="300" max="32767" attributes="0"/>
|
<Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout" value="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout$BorderConstraintsDescription">
|
||||||
</Group>
|
<BorderConstraints direction="Center"/>
|
||||||
</DimensionLayout>
|
</Constraint>
|
||||||
</Layout>
|
</Constraints>
|
||||||
|
|
||||||
|
<Layout class="org.netbeans.modules.form.compat2.layouts.support.JScrollPaneSupportLayout"/>
|
||||||
|
<SubComponents>
|
||||||
|
<Container class="javax.swing.JPanel" name="domainFiltersPanel">
|
||||||
|
<AuxValues>
|
||||||
|
<AuxValue name="JavaCodeGenerator_VariableLocal" type="java.lang.Boolean" value="true"/>
|
||||||
|
<AuxValue name="JavaCodeGenerator_VariableModifier" type="java.lang.Integer" value="0"/>
|
||||||
|
</AuxValues>
|
||||||
|
|
||||||
|
<Layout>
|
||||||
|
<DimensionLayout dim="0">
|
||||||
|
<Group type="103" groupAlignment="0" attributes="0">
|
||||||
|
<Group type="102" alignment="0" attributes="0">
|
||||||
|
<EmptySpace min="-2" pref="8" max="-2" attributes="0"/>
|
||||||
|
<Component id="domainFiltersSplitPane" max="32767" attributes="0"/>
|
||||||
|
<EmptySpace min="-2" pref="8" max="-2" attributes="0"/>
|
||||||
|
</Group>
|
||||||
|
</Group>
|
||||||
|
</DimensionLayout>
|
||||||
|
<DimensionLayout dim="1">
|
||||||
|
<Group type="103" groupAlignment="0" attributes="0">
|
||||||
|
<Group type="102" alignment="0" attributes="0">
|
||||||
|
<EmptySpace min="-2" pref="8" max="-2" attributes="0"/>
|
||||||
|
<Component id="domainFiltersSplitPane" max="32767" attributes="0"/>
|
||||||
|
<EmptySpace min="-2" pref="8" max="-2" attributes="0"/>
|
||||||
|
</Group>
|
||||||
|
</Group>
|
||||||
|
</DimensionLayout>
|
||||||
|
</Layout>
|
||||||
|
<SubComponents>
|
||||||
|
<Container class="javax.swing.JSplitPane" name="domainFiltersSplitPane">
|
||||||
|
<Properties>
|
||||||
|
<Property name="border" type="javax.swing.border.Border" editor="org.netbeans.modules.form.editors2.BorderEditor">
|
||||||
|
<Border info="org.netbeans.modules.form.compat2.border.TitledBorderInfo">
|
||||||
|
<TitledBorder title="Step 2: Filter which domains to show">
|
||||||
|
<ResourceString PropertyName="titleX" bundle="org/sleuthkit/autopsy/discovery/Bundle.properties" key="DomainFilterPanel.domainFiltersSplitPane.border.title" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/>
|
||||||
|
</TitledBorder>
|
||||||
|
</Border>
|
||||||
|
</Property>
|
||||||
|
<Property name="resizeWeight" type="double" value="0.5"/>
|
||||||
|
<Property name="toolTipText" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
|
||||||
|
<ResourceString bundle="org/sleuthkit/autopsy/discovery/Bundle.properties" key="DomainFilterPanel.domainFiltersSplitPane.toolTipText" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/>
|
||||||
|
</Property>
|
||||||
|
</Properties>
|
||||||
|
|
||||||
|
<Layout class="org.netbeans.modules.form.compat2.layouts.support.JSplitPaneSupportLayout"/>
|
||||||
|
</Container>
|
||||||
|
</SubComponents>
|
||||||
|
</Container>
|
||||||
|
</SubComponents>
|
||||||
|
</Container>
|
||||||
|
</SubComponents>
|
||||||
</Form>
|
</Form>
|
||||||
|
@ -1,10 +1,25 @@
|
|||||||
/*
|
/*
|
||||||
* To change this license header, choose License Headers in Project Properties.
|
* Autopsy
|
||||||
* To change this template file, choose Tools | Templates
|
*
|
||||||
* and open the template in the editor.
|
* Copyright 2020 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.discovery;
|
package org.sleuthkit.autopsy.discovery;
|
||||||
|
|
||||||
|
import org.sleuthkit.autopsy.centralrepository.datamodel.CentralRepository;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
* @author wschaefer
|
* @author wschaefer
|
||||||
@ -18,7 +33,13 @@ public class DomainFilterPanel extends AbstractFiltersPanel {
|
|||||||
* Creates new form DomainFilterPanel
|
* Creates new form DomainFilterPanel
|
||||||
*/
|
*/
|
||||||
public DomainFilterPanel() {
|
public DomainFilterPanel() {
|
||||||
|
super();
|
||||||
initComponents();
|
initComponents();
|
||||||
|
addFilter(new DataSourceFilterPanel(), false, null, 0);
|
||||||
|
addFilter(new ArtifactTypeFilterPanel(), false, null, 1);
|
||||||
|
addFilter(new DateFilterPanel(), false, null, 0);
|
||||||
|
addFilter(new DomainUniquenessFilterPanel(), false, null, 1);
|
||||||
|
addPanelsToScrollPane(domainFiltersSplitPane);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -30,16 +51,37 @@ public class DomainFilterPanel extends AbstractFiltersPanel {
|
|||||||
// <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
|
// <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
|
||||||
private void initComponents() {
|
private void initComponents() {
|
||||||
|
|
||||||
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this);
|
javax.swing.JScrollPane domainFiltersScrollPane = new javax.swing.JScrollPane();
|
||||||
this.setLayout(layout);
|
javax.swing.JPanel domainFiltersPanel = new javax.swing.JPanel();
|
||||||
layout.setHorizontalGroup(
|
domainFiltersSplitPane = new javax.swing.JSplitPane();
|
||||||
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
|
|
||||||
.addGap(0, 400, Short.MAX_VALUE)
|
setPreferredSize(new java.awt.Dimension(225, 70));
|
||||||
|
setLayout(new java.awt.BorderLayout());
|
||||||
|
|
||||||
|
domainFiltersSplitPane.setBorder(javax.swing.BorderFactory.createTitledBorder(org.openide.util.NbBundle.getMessage(DomainFilterPanel.class, "DomainFilterPanel.domainFiltersSplitPane.border.title"))); // NOI18N
|
||||||
|
domainFiltersSplitPane.setResizeWeight(0.5);
|
||||||
|
domainFiltersSplitPane.setToolTipText(org.openide.util.NbBundle.getMessage(DomainFilterPanel.class, "DomainFilterPanel.domainFiltersSplitPane.toolTipText")); // NOI18N
|
||||||
|
|
||||||
|
javax.swing.GroupLayout domainFiltersPanelLayout = new javax.swing.GroupLayout(domainFiltersPanel);
|
||||||
|
domainFiltersPanel.setLayout(domainFiltersPanelLayout);
|
||||||
|
domainFiltersPanelLayout.setHorizontalGroup(
|
||||||
|
domainFiltersPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
|
||||||
|
.addGroup(domainFiltersPanelLayout.createSequentialGroup()
|
||||||
|
.addGap(8, 8, 8)
|
||||||
|
.addComponent(domainFiltersSplitPane)
|
||||||
|
.addGap(8, 8, 8))
|
||||||
);
|
);
|
||||||
layout.setVerticalGroup(
|
domainFiltersPanelLayout.setVerticalGroup(
|
||||||
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
|
domainFiltersPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
|
||||||
.addGap(0, 300, Short.MAX_VALUE)
|
.addGroup(domainFiltersPanelLayout.createSequentialGroup()
|
||||||
|
.addGap(8, 8, 8)
|
||||||
|
.addComponent(domainFiltersSplitPane)
|
||||||
|
.addGap(8, 8, 8))
|
||||||
);
|
);
|
||||||
|
|
||||||
|
domainFiltersScrollPane.setViewportView(domainFiltersPanel);
|
||||||
|
|
||||||
|
add(domainFiltersScrollPane, java.awt.BorderLayout.CENTER);
|
||||||
}// </editor-fold>//GEN-END:initComponents
|
}// </editor-fold>//GEN-END:initComponents
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -52,7 +94,13 @@ public class DomainFilterPanel extends AbstractFiltersPanel {
|
|||||||
return SearchData.ResultType.ARTIFACT;
|
return SearchData.ResultType.ARTIFACT;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
ArtifactSearchData.ArtifactType getArtifactType() {
|
||||||
|
return ARTIFACT_TYPE;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
// Variables declaration - do not modify//GEN-BEGIN:variables
|
// Variables declaration - do not modify//GEN-BEGIN:variables
|
||||||
|
private javax.swing.JSplitPane domainFiltersSplitPane;
|
||||||
// End of variables declaration//GEN-END:variables
|
// End of variables declaration//GEN-END:variables
|
||||||
}
|
}
|
||||||
|
@ -0,0 +1,43 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8" ?>
|
||||||
|
|
||||||
|
<Form version="1.5" maxVersion="1.9" type="org.netbeans.modules.form.forminfo.JPanelFormInfo">
|
||||||
|
<NonVisualComponents>
|
||||||
|
<Component class="javax.swing.JCheckBox" name="domainUniquenessCheckbox">
|
||||||
|
<Properties>
|
||||||
|
<Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
|
||||||
|
<ResourceString bundle="org/sleuthkit/autopsy/discovery/Bundle.properties" key="DomainUniquenessFilterPanel.domainUniquenessCheckbox.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/>
|
||||||
|
</Property>
|
||||||
|
</Properties>
|
||||||
|
</Component>
|
||||||
|
</NonVisualComponents>
|
||||||
|
<AuxValues>
|
||||||
|
<AuxValue name="FormSettings_autoResourcing" type="java.lang.Integer" value="1"/>
|
||||||
|
<AuxValue name="FormSettings_autoSetComponentName" type="java.lang.Boolean" value="false"/>
|
||||||
|
<AuxValue name="FormSettings_generateFQN" type="java.lang.Boolean" value="true"/>
|
||||||
|
<AuxValue name="FormSettings_generateMnemonicsCode" type="java.lang.Boolean" value="true"/>
|
||||||
|
<AuxValue name="FormSettings_i18nAutoMode" type="java.lang.Boolean" value="true"/>
|
||||||
|
<AuxValue name="FormSettings_layoutCodeTarget" type="java.lang.Integer" value="1"/>
|
||||||
|
<AuxValue name="FormSettings_listenerGenerationStyle" type="java.lang.Integer" value="0"/>
|
||||||
|
<AuxValue name="FormSettings_variablesLocal" type="java.lang.Boolean" value="false"/>
|
||||||
|
<AuxValue name="FormSettings_variablesModifier" type="java.lang.Integer" value="2"/>
|
||||||
|
</AuxValues>
|
||||||
|
|
||||||
|
<Layout>
|
||||||
|
<DimensionLayout dim="0">
|
||||||
|
<Group type="103" groupAlignment="0" attributes="0">
|
||||||
|
<Component id="domainUniqueScrollPane" alignment="0" pref="207" max="32767" attributes="0"/>
|
||||||
|
</Group>
|
||||||
|
</DimensionLayout>
|
||||||
|
<DimensionLayout dim="1">
|
||||||
|
<Group type="103" groupAlignment="0" attributes="0">
|
||||||
|
<Component id="domainUniqueScrollPane" alignment="0" pref="48" max="32767" attributes="0"/>
|
||||||
|
</Group>
|
||||||
|
</DimensionLayout>
|
||||||
|
</Layout>
|
||||||
|
<SubComponents>
|
||||||
|
<Container class="javax.swing.JScrollPane" name="domainUniqueScrollPane">
|
||||||
|
|
||||||
|
<Layout class="org.netbeans.modules.form.compat2.layouts.support.JScrollPaneSupportLayout"/>
|
||||||
|
</Container>
|
||||||
|
</SubComponents>
|
||||||
|
</Form>
|
@ -0,0 +1,101 @@
|
|||||||
|
/*
|
||||||
|
* Autopsy
|
||||||
|
*
|
||||||
|
* Copyright 2020 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.discovery;
|
||||||
|
|
||||||
|
import javax.swing.JCheckBox;
|
||||||
|
import javax.swing.JLabel;
|
||||||
|
import javax.swing.JList;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @author wschaefer
|
||||||
|
*/
|
||||||
|
class DomainUniquenessFilterPanel extends AbstractDiscoveryFilterPanel {
|
||||||
|
|
||||||
|
private static final long serialVersionUID = 1L;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Creates new form DomainUniquenessFilterPanel
|
||||||
|
*/
|
||||||
|
DomainUniquenessFilterPanel() {
|
||||||
|
initComponents();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This method is called from within the constructor to initialize the form.
|
||||||
|
* WARNING: Do NOT modify this code. The content of this method is always
|
||||||
|
* regenerated by the Form Editor.
|
||||||
|
*/
|
||||||
|
@SuppressWarnings("unchecked")
|
||||||
|
// <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
|
||||||
|
private void initComponents() {
|
||||||
|
|
||||||
|
domainUniquenessCheckbox = new javax.swing.JCheckBox();
|
||||||
|
domainUniqueScrollPane = new javax.swing.JScrollPane();
|
||||||
|
|
||||||
|
org.openide.awt.Mnemonics.setLocalizedText(domainUniquenessCheckbox, org.openide.util.NbBundle.getMessage(DomainUniquenessFilterPanel.class, "DomainUniquenessFilterPanel.domainUniquenessCheckbox.text")); // NOI18N
|
||||||
|
|
||||||
|
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this);
|
||||||
|
this.setLayout(layout);
|
||||||
|
layout.setHorizontalGroup(
|
||||||
|
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
|
||||||
|
.addComponent(domainUniqueScrollPane, javax.swing.GroupLayout.DEFAULT_SIZE, 207, Short.MAX_VALUE)
|
||||||
|
);
|
||||||
|
layout.setVerticalGroup(
|
||||||
|
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
|
||||||
|
.addComponent(domainUniqueScrollPane, javax.swing.GroupLayout.DEFAULT_SIZE, 48, Short.MAX_VALUE)
|
||||||
|
);
|
||||||
|
}// </editor-fold>//GEN-END:initComponents
|
||||||
|
|
||||||
|
@Override
|
||||||
|
void configurePanel(boolean selected, int[] indicesSelected) {
|
||||||
|
domainUniquenessCheckbox.setSelected(selected);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
JCheckBox getCheckbox() {
|
||||||
|
return domainUniquenessCheckbox;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
JList<?> getList() {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
JLabel getAdditionalLabel() {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
String checkForError() {
|
||||||
|
return "Domain search is not implemented.";
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
AbstractFilter getFilter() {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// Variables declaration - do not modify//GEN-BEGIN:variables
|
||||||
|
private javax.swing.JScrollPane domainUniqueScrollPane;
|
||||||
|
private javax.swing.JCheckBox domainUniquenessCheckbox;
|
||||||
|
// End of variables declaration//GEN-END:variables
|
||||||
|
}
|
@ -37,7 +37,7 @@ import org.sleuthkit.autopsy.discovery.FileSearchData.FileType;
|
|||||||
final class GroupListPanel extends javax.swing.JPanel {
|
final class GroupListPanel extends javax.swing.JPanel {
|
||||||
|
|
||||||
private static final long serialVersionUID = 1L;
|
private static final long serialVersionUID = 1L;
|
||||||
private FileType resultType = null;
|
private FileType fileType = null;
|
||||||
private Map<GroupKey, Integer> groupMap = null;
|
private Map<GroupKey, Integer> groupMap = null;
|
||||||
private List<AbstractFilter> searchfilters;
|
private List<AbstractFilter> searchfilters;
|
||||||
private FileSearch.AttributeType groupingAttribute;
|
private FileSearch.AttributeType groupingAttribute;
|
||||||
@ -59,7 +59,7 @@ final class GroupListPanel extends javax.swing.JPanel {
|
|||||||
*/
|
*/
|
||||||
@Subscribe
|
@Subscribe
|
||||||
void handleSearchStartedEvent(DiscoveryEventUtils.SearchStartedEvent searchStartedEvent) {
|
void handleSearchStartedEvent(DiscoveryEventUtils.SearchStartedEvent searchStartedEvent) {
|
||||||
resultType = searchStartedEvent.getType();
|
fileType = searchStartedEvent.getFileType();
|
||||||
groupKeyList.setListData(new GroupKey[0]);
|
groupKeyList.setListData(new GroupKey[0]);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -170,7 +170,7 @@ final class GroupListPanel extends javax.swing.JPanel {
|
|||||||
if (selectedGroup.equals(groupKey)) {
|
if (selectedGroup.equals(groupKey)) {
|
||||||
selectedGroupKey = groupKey;
|
selectedGroupKey = groupKey;
|
||||||
DiscoveryEventUtils.getDiscoveryEventBus().post(new DiscoveryEventUtils.GroupSelectedEvent(
|
DiscoveryEventUtils.getDiscoveryEventBus().post(new DiscoveryEventUtils.GroupSelectedEvent(
|
||||||
searchfilters, groupingAttribute, groupSort, fileSortMethod, selectedGroupKey, groupMap.get(selectedGroupKey), resultType));
|
searchfilters, groupingAttribute, groupSort, fileSortMethod, selectedGroupKey, groupMap.get(selectedGroupKey), fileType));
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -108,4 +108,9 @@ final class ImageFilterPanel extends AbstractFiltersPanel {
|
|||||||
SearchData.ResultType getResultType() {
|
SearchData.ResultType getResultType() {
|
||||||
return SearchData.ResultType.FILE;
|
return SearchData.ResultType.FILE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
ArtifactSearchData.ArtifactType getArtifactType() {
|
||||||
|
throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -110,4 +110,9 @@ final class VideoFilterPanel extends AbstractFiltersPanel {
|
|||||||
return SearchData.ResultType.FILE;
|
return SearchData.ResultType.FILE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
ArtifactSearchData.ArtifactType getArtifactType() {
|
||||||
|
throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user