mirror of
https://github.com/overcuriousity/autopsy-flatpak.git
synced 2025-07-15 09:17:42 +00:00
Merge pull request #4796 from kellykelly3/1240-most-recent-relationships
1240 most recent relationships
This commit is contained in:
commit
f8d77addd5
@ -44,4 +44,7 @@ VisualizationPanel.backButton.toolTipText=Click to go back
|
|||||||
VisualizationPanel.forwardButton.toolTipText=Click to go forward
|
VisualizationPanel.forwardButton.toolTipText=Click to go forward
|
||||||
VisualizationPanel.fastOrganicLayoutButton.toolTipText=Click to redraw the chart
|
VisualizationPanel.fastOrganicLayoutButton.toolTipText=Click to redraw the chart
|
||||||
VisualizationPanel.clearVizButton.toolTipText=Click to clear the chart
|
VisualizationPanel.clearVizButton.toolTipText=Click to clear the chart
|
||||||
|
FiltersPanel.limitHeaderLabel.text=Communications Limit:
|
||||||
|
FiltersPanel.mostRecentLabel.text=Most Recent:
|
||||||
|
FiltersPanel.limitErrorMsgLabel.text=Invalid integer value.
|
||||||
VisualizationPanel.forwardButton.text=
|
VisualizationPanel.forwardButton.text=
|
||||||
|
@ -87,6 +87,9 @@ VisualizationPanel.backButton.toolTipText=Click to go back
|
|||||||
VisualizationPanel.forwardButton.toolTipText=Click to go forward
|
VisualizationPanel.forwardButton.toolTipText=Click to go forward
|
||||||
VisualizationPanel.fastOrganicLayoutButton.toolTipText=Click to redraw the chart
|
VisualizationPanel.fastOrganicLayoutButton.toolTipText=Click to redraw the chart
|
||||||
VisualizationPanel.clearVizButton.toolTipText=Click to clear the chart
|
VisualizationPanel.clearVizButton.toolTipText=Click to clear the chart
|
||||||
|
FiltersPanel.limitHeaderLabel.text=Communications Limit:
|
||||||
|
FiltersPanel.mostRecentLabel.text=Most Recent:
|
||||||
|
FiltersPanel.limitErrorMsgLabel.text=Invalid integer value.
|
||||||
VisualizationPanel.forwardButton.text=
|
VisualizationPanel.forwardButton.text=
|
||||||
VisualizationPanel_action_dialogs_title=Communications
|
VisualizationPanel_action_dialogs_title=Communications
|
||||||
VisualizationPanel_action_name_text=Snapshot Report
|
VisualizationPanel_action_name_text=Snapshot Report
|
||||||
|
@ -16,8 +16,8 @@
|
|||||||
<Layout>
|
<Layout>
|
||||||
<DimensionLayout dim="0">
|
<DimensionLayout dim="0">
|
||||||
<Group type="103" groupAlignment="0" attributes="0">
|
<Group type="103" groupAlignment="0" attributes="0">
|
||||||
<Component id="jPanel3" max="32767" attributes="0"/>
|
<Component id="devicesPane" max="32767" attributes="0"/>
|
||||||
<Component id="jPanel2" alignment="1" max="32767" attributes="0"/>
|
<Component id="accountTypesPane" alignment="1" max="32767" attributes="0"/>
|
||||||
<Group type="102" alignment="0" attributes="0">
|
<Group type="102" alignment="0" attributes="0">
|
||||||
<Component id="filtersTitleLabel" min="-2" max="-2" attributes="0"/>
|
<Component id="filtersTitleLabel" min="-2" max="-2" attributes="0"/>
|
||||||
<EmptySpace max="32767" attributes="0"/>
|
<EmptySpace max="32767" attributes="0"/>
|
||||||
@ -25,11 +25,12 @@
|
|||||||
<EmptySpace max="-2" attributes="0"/>
|
<EmptySpace max="-2" attributes="0"/>
|
||||||
<Component id="refreshButton" min="-2" max="-2" attributes="0"/>
|
<Component id="refreshButton" min="-2" max="-2" attributes="0"/>
|
||||||
</Group>
|
</Group>
|
||||||
<Component id="jPanel4" alignment="0" max="32767" attributes="0"/>
|
<Component id="dateRangePane" alignment="0" max="32767" attributes="0"/>
|
||||||
<Group type="102" alignment="0" attributes="0">
|
<Group type="102" alignment="0" attributes="0">
|
||||||
<EmptySpace max="-2" attributes="0"/>
|
<EmptySpace max="-2" attributes="0"/>
|
||||||
<Component id="needsRefreshLabel" max="32767" attributes="0"/>
|
<Component id="needsRefreshLabel" max="32767" attributes="0"/>
|
||||||
</Group>
|
</Group>
|
||||||
|
<Component id="limitPane" alignment="0" max="32767" attributes="0"/>
|
||||||
</Group>
|
</Group>
|
||||||
</DimensionLayout>
|
</DimensionLayout>
|
||||||
<DimensionLayout dim="1">
|
<DimensionLayout dim="1">
|
||||||
@ -44,12 +45,14 @@
|
|||||||
<EmptySpace max="-2" attributes="0"/>
|
<EmptySpace max="-2" attributes="0"/>
|
||||||
<Component id="needsRefreshLabel" min="-2" max="-2" attributes="0"/>
|
<Component id="needsRefreshLabel" min="-2" max="-2" attributes="0"/>
|
||||||
<EmptySpace min="-2" pref="4" max="-2" attributes="0"/>
|
<EmptySpace min="-2" pref="4" max="-2" attributes="0"/>
|
||||||
<Component id="jPanel3" max="32767" attributes="0"/>
|
<Component id="devicesPane" max="-2" attributes="0"/>
|
||||||
<EmptySpace type="separate" min="-2" max="-2" attributes="0"/>
|
<EmptySpace max="-2" attributes="0"/>
|
||||||
<Component id="jPanel2" max="32767" attributes="0"/>
|
<Component id="accountTypesPane" min="-2" max="-2" attributes="0"/>
|
||||||
<EmptySpace type="separate" min="-2" max="-2" attributes="0"/>
|
<EmptySpace max="-2" attributes="0"/>
|
||||||
<Component id="jPanel4" min="-2" max="-2" attributes="0"/>
|
<Component id="dateRangePane" min="-2" max="-2" attributes="0"/>
|
||||||
<EmptySpace pref="19" max="32767" attributes="0"/>
|
<EmptySpace max="-2" attributes="0"/>
|
||||||
|
<Component id="limitPane" min="-2" max="-2" attributes="0"/>
|
||||||
|
<EmptySpace max="32767" attributes="0"/>
|
||||||
</Group>
|
</Group>
|
||||||
</Group>
|
</Group>
|
||||||
</DimensionLayout>
|
</DimensionLayout>
|
||||||
@ -78,7 +81,7 @@
|
|||||||
</Property>
|
</Property>
|
||||||
</Properties>
|
</Properties>
|
||||||
</Component>
|
</Component>
|
||||||
<Container class="javax.swing.JPanel" name="jPanel2">
|
<Container class="javax.swing.JPanel" name="accountTypesPane">
|
||||||
|
|
||||||
<Layout>
|
<Layout>
|
||||||
<DimensionLayout dim="0">
|
<DimensionLayout dim="0">
|
||||||
@ -91,16 +94,14 @@
|
|||||||
<Component id="accountTypeRequiredLabel" min="-2" max="-2" attributes="0"/>
|
<Component id="accountTypeRequiredLabel" min="-2" max="-2" attributes="0"/>
|
||||||
</Group>
|
</Group>
|
||||||
<Group type="102" attributes="0">
|
<Group type="102" attributes="0">
|
||||||
<EmptySpace max="-2" attributes="0"/>
|
<EmptySpace max="32767" attributes="0"/>
|
||||||
<Group type="103" groupAlignment="1" attributes="0">
|
|
||||||
<Component id="jScrollPane3" max="32767" attributes="0"/>
|
|
||||||
<Group type="102" attributes="0">
|
|
||||||
<EmptySpace min="0" pref="0" max="32767" attributes="0"/>
|
|
||||||
<Component id="unCheckAllAccountTypesButton" min="-2" max="-2" attributes="0"/>
|
<Component id="unCheckAllAccountTypesButton" min="-2" max="-2" attributes="0"/>
|
||||||
<EmptySpace max="-2" attributes="0"/>
|
<EmptySpace max="-2" attributes="0"/>
|
||||||
<Component id="checkAllAccountTypesButton" min="-2" max="-2" attributes="0"/>
|
<Component id="checkAllAccountTypesButton" min="-2" max="-2" attributes="0"/>
|
||||||
</Group>
|
</Group>
|
||||||
</Group>
|
<Group type="102" attributes="0">
|
||||||
|
<EmptySpace min="10" pref="10" max="-2" attributes="0"/>
|
||||||
|
<Component id="accountTypesScrollPane" max="32767" attributes="0"/>
|
||||||
</Group>
|
</Group>
|
||||||
</Group>
|
</Group>
|
||||||
<EmptySpace min="0" pref="0" max="-2" attributes="0"/>
|
<EmptySpace min="0" pref="0" max="-2" attributes="0"/>
|
||||||
@ -114,9 +115,9 @@
|
|||||||
<Component id="accountTypesLabel" alignment="3" min="-2" max="-2" attributes="0"/>
|
<Component id="accountTypesLabel" alignment="3" min="-2" max="-2" attributes="0"/>
|
||||||
<Component id="accountTypeRequiredLabel" alignment="3" min="-2" max="-2" attributes="0"/>
|
<Component id="accountTypeRequiredLabel" alignment="3" min="-2" max="-2" attributes="0"/>
|
||||||
</Group>
|
</Group>
|
||||||
<EmptySpace min="-2" max="-2" attributes="0"/>
|
<EmptySpace max="-2" attributes="0"/>
|
||||||
<Component id="jScrollPane3" pref="243" max="32767" attributes="0"/>
|
<Component id="accountTypesScrollPane" min="-2" max="-2" attributes="0"/>
|
||||||
<EmptySpace min="-2" max="-2" attributes="0"/>
|
<EmptySpace max="32767" attributes="0"/>
|
||||||
<Group type="103" groupAlignment="3" attributes="0">
|
<Group type="103" groupAlignment="3" attributes="0">
|
||||||
<Component id="checkAllAccountTypesButton" alignment="3" min="-2" max="-2" attributes="0"/>
|
<Component id="checkAllAccountTypesButton" alignment="3" min="-2" max="-2" attributes="0"/>
|
||||||
<Component id="unCheckAllAccountTypesButton" alignment="3" min="-2" max="-2" attributes="0"/>
|
<Component id="unCheckAllAccountTypesButton" alignment="3" min="-2" max="-2" attributes="0"/>
|
||||||
@ -156,11 +157,16 @@
|
|||||||
<EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="checkAllAccountTypesButtonActionPerformed"/>
|
<EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="checkAllAccountTypesButtonActionPerformed"/>
|
||||||
</Events>
|
</Events>
|
||||||
</Component>
|
</Component>
|
||||||
<Container class="javax.swing.JScrollPane" name="jScrollPane3">
|
<Container class="javax.swing.JScrollPane" name="accountTypesScrollPane">
|
||||||
|
<Properties>
|
||||||
|
<Property name="preferredSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor">
|
||||||
|
<Dimension value="[2, 200]"/>
|
||||||
|
</Property>
|
||||||
|
</Properties>
|
||||||
|
|
||||||
<Layout class="org.netbeans.modules.form.compat2.layouts.support.JScrollPaneSupportLayout"/>
|
<Layout class="org.netbeans.modules.form.compat2.layouts.support.JScrollPaneSupportLayout"/>
|
||||||
<SubComponents>
|
<SubComponents>
|
||||||
<Container class="javax.swing.JPanel" name="accountTypePane">
|
<Container class="javax.swing.JPanel" name="accountTypeListPane">
|
||||||
|
|
||||||
<Layout class="org.netbeans.modules.form.compat2.layouts.DesignBoxLayout">
|
<Layout class="org.netbeans.modules.form.compat2.layouts.DesignBoxLayout">
|
||||||
<Property name="axis" type="int" value="1"/>
|
<Property name="axis" type="int" value="1"/>
|
||||||
@ -184,7 +190,7 @@
|
|||||||
</Component>
|
</Component>
|
||||||
</SubComponents>
|
</SubComponents>
|
||||||
</Container>
|
</Container>
|
||||||
<Container class="javax.swing.JPanel" name="jPanel3">
|
<Container class="javax.swing.JPanel" name="devicesPane">
|
||||||
|
|
||||||
<Layout>
|
<Layout>
|
||||||
<DimensionLayout dim="0">
|
<DimensionLayout dim="0">
|
||||||
@ -195,16 +201,14 @@
|
|||||||
<Component id="deviceRequiredLabel" min="-2" max="-2" attributes="0"/>
|
<Component id="deviceRequiredLabel" min="-2" max="-2" attributes="0"/>
|
||||||
</Group>
|
</Group>
|
||||||
<Group type="102" attributes="0">
|
<Group type="102" attributes="0">
|
||||||
<EmptySpace max="-2" attributes="0"/>
|
<EmptySpace max="32767" attributes="0"/>
|
||||||
<Group type="103" groupAlignment="0" attributes="0">
|
|
||||||
<Group type="102" attributes="0">
|
|
||||||
<EmptySpace min="0" pref="0" max="32767" attributes="0"/>
|
|
||||||
<Component id="unCheckAllDevicesButton" min="-2" max="-2" attributes="0"/>
|
<Component id="unCheckAllDevicesButton" min="-2" max="-2" attributes="0"/>
|
||||||
<EmptySpace max="-2" attributes="0"/>
|
<EmptySpace max="-2" attributes="0"/>
|
||||||
<Component id="checkAllDevicesButton" min="-2" max="-2" attributes="0"/>
|
<Component id="checkAllDevicesButton" min="-2" max="-2" attributes="0"/>
|
||||||
</Group>
|
</Group>
|
||||||
<Component id="jScrollPane2" alignment="1" max="32767" attributes="0"/>
|
<Group type="102" attributes="0">
|
||||||
</Group>
|
<EmptySpace min="10" pref="10" max="-2" attributes="0"/>
|
||||||
|
<Component id="devicesScrollPane" max="32767" attributes="0"/>
|
||||||
</Group>
|
</Group>
|
||||||
</Group>
|
</Group>
|
||||||
</DimensionLayout>
|
</DimensionLayout>
|
||||||
@ -216,7 +220,7 @@
|
|||||||
<Component id="deviceRequiredLabel" alignment="3" min="-2" max="-2" attributes="0"/>
|
<Component id="deviceRequiredLabel" alignment="3" min="-2" max="-2" attributes="0"/>
|
||||||
</Group>
|
</Group>
|
||||||
<EmptySpace max="-2" attributes="0"/>
|
<EmptySpace max="-2" attributes="0"/>
|
||||||
<Component id="jScrollPane2" pref="94" max="32767" attributes="0"/>
|
<Component id="devicesScrollPane" pref="94" max="32767" attributes="0"/>
|
||||||
<EmptySpace min="-2" max="-2" attributes="0"/>
|
<EmptySpace min="-2" max="-2" attributes="0"/>
|
||||||
<Group type="103" groupAlignment="3" attributes="0">
|
<Group type="103" groupAlignment="3" attributes="0">
|
||||||
<Component id="checkAllDevicesButton" alignment="3" min="-2" max="-2" attributes="0"/>
|
<Component id="checkAllDevicesButton" alignment="3" min="-2" max="-2" attributes="0"/>
|
||||||
@ -258,7 +262,7 @@
|
|||||||
<EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="checkAllDevicesButtonActionPerformed"/>
|
<EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="checkAllDevicesButtonActionPerformed"/>
|
||||||
</Events>
|
</Events>
|
||||||
</Component>
|
</Component>
|
||||||
<Container class="javax.swing.JScrollPane" name="jScrollPane2">
|
<Container class="javax.swing.JScrollPane" name="devicesScrollPane">
|
||||||
<Properties>
|
<Properties>
|
||||||
<Property name="horizontalScrollBarPolicy" type="int" value="31"/>
|
<Property name="horizontalScrollBarPolicy" type="int" value="31"/>
|
||||||
<Property name="minimumSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor">
|
<Property name="minimumSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor">
|
||||||
@ -268,7 +272,7 @@
|
|||||||
|
|
||||||
<Layout class="org.netbeans.modules.form.compat2.layouts.support.JScrollPaneSupportLayout"/>
|
<Layout class="org.netbeans.modules.form.compat2.layouts.support.JScrollPaneSupportLayout"/>
|
||||||
<SubComponents>
|
<SubComponents>
|
||||||
<Container class="javax.swing.JPanel" name="devicesPane">
|
<Container class="javax.swing.JPanel" name="devicesListPane">
|
||||||
<Properties>
|
<Properties>
|
||||||
<Property name="minimumSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor">
|
<Property name="minimumSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor">
|
||||||
<Dimension value="[4, 100]"/>
|
<Dimension value="[4, 100]"/>
|
||||||
@ -297,7 +301,7 @@
|
|||||||
</Component>
|
</Component>
|
||||||
</SubComponents>
|
</SubComponents>
|
||||||
</Container>
|
</Container>
|
||||||
<Container class="javax.swing.JPanel" name="jPanel4">
|
<Container class="javax.swing.JPanel" name="dateRangePane">
|
||||||
|
|
||||||
<Layout>
|
<Layout>
|
||||||
<DimensionLayout dim="0">
|
<DimensionLayout dim="0">
|
||||||
@ -406,5 +410,95 @@
|
|||||||
</Property>
|
</Property>
|
||||||
</Properties>
|
</Properties>
|
||||||
</Component>
|
</Component>
|
||||||
|
<Container class="javax.swing.JPanel" name="limitPane">
|
||||||
|
|
||||||
|
<Layout>
|
||||||
|
<DimensionLayout dim="0">
|
||||||
|
<Group type="103" groupAlignment="0" attributes="0">
|
||||||
|
<Group type="102" alignment="0" attributes="0">
|
||||||
|
<Component id="limitHeaderLabel" min="-2" max="-2" attributes="0"/>
|
||||||
|
<EmptySpace max="32767" attributes="0"/>
|
||||||
|
<Component id="limitErrorMsgLabel" min="-2" max="-2" attributes="0"/>
|
||||||
|
<EmptySpace max="-2" attributes="0"/>
|
||||||
|
</Group>
|
||||||
|
<Group type="102" alignment="0" attributes="0">
|
||||||
|
<EmptySpace max="-2" attributes="0"/>
|
||||||
|
<Component id="mostRecentLabel" min="-2" max="-2" attributes="0"/>
|
||||||
|
<EmptySpace max="-2" attributes="0"/>
|
||||||
|
<Component id="limitComboBox" min="-2" max="-2" attributes="0"/>
|
||||||
|
<EmptySpace max="32767" attributes="0"/>
|
||||||
|
</Group>
|
||||||
|
</Group>
|
||||||
|
</DimensionLayout>
|
||||||
|
<DimensionLayout dim="1">
|
||||||
|
<Group type="103" groupAlignment="0" attributes="0">
|
||||||
|
<Group type="102" alignment="0" attributes="0">
|
||||||
|
<EmptySpace max="-2" attributes="0"/>
|
||||||
|
<Group type="103" groupAlignment="3" attributes="0">
|
||||||
|
<Component id="limitHeaderLabel" alignment="3" min="-2" max="-2" attributes="0"/>
|
||||||
|
<Component id="limitErrorMsgLabel" alignment="3" min="-2" max="-2" attributes="0"/>
|
||||||
|
</Group>
|
||||||
|
<EmptySpace max="-2" attributes="0"/>
|
||||||
|
<Group type="103" groupAlignment="3" attributes="0">
|
||||||
|
<Component id="mostRecentLabel" alignment="3" min="-2" max="-2" attributes="0"/>
|
||||||
|
<Component id="limitComboBox" alignment="3" min="-2" max="-2" attributes="0"/>
|
||||||
|
</Group>
|
||||||
|
<EmptySpace min="0" pref="32" max="32767" attributes="0"/>
|
||||||
|
</Group>
|
||||||
|
</Group>
|
||||||
|
</DimensionLayout>
|
||||||
|
</Layout>
|
||||||
|
<SubComponents>
|
||||||
|
<Component class="javax.swing.JLabel" name="limitHeaderLabel">
|
||||||
|
<Properties>
|
||||||
|
<Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
|
||||||
|
<ResourceString bundle="org/sleuthkit/autopsy/communications/Bundle.properties" key="FiltersPanel.limitHeaderLabel.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/>
|
||||||
|
</Property>
|
||||||
|
</Properties>
|
||||||
|
</Component>
|
||||||
|
<Component class="javax.swing.JLabel" name="mostRecentLabel">
|
||||||
|
<Properties>
|
||||||
|
<Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
|
||||||
|
<ResourceString bundle="org/sleuthkit/autopsy/communications/Bundle.properties" key="FiltersPanel.mostRecentLabel.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/>
|
||||||
|
</Property>
|
||||||
|
</Properties>
|
||||||
|
</Component>
|
||||||
|
<Component class="javax.swing.JComboBox" name="limitComboBox">
|
||||||
|
<Properties>
|
||||||
|
<Property name="editable" type="boolean" value="true"/>
|
||||||
|
<Property name="model" type="javax.swing.ComboBoxModel" editor="org.netbeans.modules.form.editors2.ComboBoxModelEditor">
|
||||||
|
<StringArray count="6">
|
||||||
|
<StringItem index="0" value="All"/>
|
||||||
|
<StringItem index="1" value="10000"/>
|
||||||
|
<StringItem index="2" value="5000"/>
|
||||||
|
<StringItem index="3" value="1000"/>
|
||||||
|
<StringItem index="4" value="500"/>
|
||||||
|
<StringItem index="5" value="100"/>
|
||||||
|
</StringArray>
|
||||||
|
</Property>
|
||||||
|
</Properties>
|
||||||
|
<Events>
|
||||||
|
<EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="limitComboBoxActionPerformed"/>
|
||||||
|
</Events>
|
||||||
|
<AuxValues>
|
||||||
|
<AuxValue name="JavaCodeGenerator_TypeParameters" type="java.lang.String" value="<String>"/>
|
||||||
|
</AuxValues>
|
||||||
|
</Component>
|
||||||
|
<Component class="javax.swing.JLabel" name="limitErrorMsgLabel">
|
||||||
|
<Properties>
|
||||||
|
<Property name="icon" type="javax.swing.Icon" editor="org.netbeans.modules.form.editors2.IconEditor">
|
||||||
|
<Image iconType="3" name="/org/sleuthkit/autopsy/images/error-icon-16.png"/>
|
||||||
|
</Property>
|
||||||
|
<Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
|
||||||
|
<ResourceString bundle="org/sleuthkit/autopsy/communications/Bundle.properties" key="FiltersPanel.limitErrorMsgLabel.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/>
|
||||||
|
</Property>
|
||||||
|
<Property name="foreground" type="java.awt.Color" editor="org.netbeans.beaninfo.editors.ColorEditor">
|
||||||
|
<Color blue="0" green="0" red="ff" type="rgb"/>
|
||||||
|
</Property>
|
||||||
|
<Property name="horizontalTextPosition" type="int" value="10"/>
|
||||||
|
</Properties>
|
||||||
|
</Component>
|
||||||
|
</SubComponents>
|
||||||
|
</Container>
|
||||||
</SubComponents>
|
</SubComponents>
|
||||||
</Form>
|
</Form>
|
||||||
|
@ -37,7 +37,12 @@ import java.util.Map.Entry;
|
|||||||
import java.util.concurrent.ExecutionException;
|
import java.util.concurrent.ExecutionException;
|
||||||
import java.util.logging.Level;
|
import java.util.logging.Level;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
import javax.swing.Box;
|
||||||
|
import javax.swing.BoxLayout;
|
||||||
|
import javax.swing.Icon;
|
||||||
|
import javax.swing.ImageIcon;
|
||||||
import javax.swing.JCheckBox;
|
import javax.swing.JCheckBox;
|
||||||
|
import javax.swing.JLabel;
|
||||||
import javax.swing.JPanel;
|
import javax.swing.JPanel;
|
||||||
import javax.swing.SwingWorker;
|
import javax.swing.SwingWorker;
|
||||||
import org.openide.util.NbBundle;
|
import org.openide.util.NbBundle;
|
||||||
@ -57,6 +62,7 @@ import org.sleuthkit.datamodel.CommunicationsFilter;
|
|||||||
import org.sleuthkit.datamodel.CommunicationsFilter.AccountTypeFilter;
|
import org.sleuthkit.datamodel.CommunicationsFilter.AccountTypeFilter;
|
||||||
import org.sleuthkit.datamodel.CommunicationsFilter.DateRangeFilter;
|
import org.sleuthkit.datamodel.CommunicationsFilter.DateRangeFilter;
|
||||||
import org.sleuthkit.datamodel.CommunicationsFilter.DeviceFilter;
|
import org.sleuthkit.datamodel.CommunicationsFilter.DeviceFilter;
|
||||||
|
import org.sleuthkit.datamodel.CommunicationsFilter.MostRecentFilter;
|
||||||
import org.sleuthkit.datamodel.DataSource;
|
import org.sleuthkit.datamodel.DataSource;
|
||||||
import static org.sleuthkit.datamodel.Relationship.Type.CALL_LOG;
|
import static org.sleuthkit.datamodel.Relationship.Type.CALL_LOG;
|
||||||
import static org.sleuthkit.datamodel.Relationship.Type.CONTACT;
|
import static org.sleuthkit.datamodel.Relationship.Type.CONTACT;
|
||||||
@ -172,15 +178,31 @@ final public class FiltersPanel extends JPanel {
|
|||||||
private void validateFilters() {
|
private void validateFilters() {
|
||||||
boolean someDevice = devicesMap.values().stream().anyMatch(JCheckBox::isSelected);
|
boolean someDevice = devicesMap.values().stream().anyMatch(JCheckBox::isSelected);
|
||||||
boolean someAccountType = accountTypeMap.values().stream().anyMatch(JCheckBox::isSelected);
|
boolean someAccountType = accountTypeMap.values().stream().anyMatch(JCheckBox::isSelected);
|
||||||
|
boolean validLimit = validateLimitValue();
|
||||||
|
|
||||||
deviceRequiredLabel.setVisible(someDevice == false);
|
deviceRequiredLabel.setVisible(someDevice == false);
|
||||||
accountTypeRequiredLabel.setVisible(someAccountType == false);
|
accountTypeRequiredLabel.setVisible(someAccountType == false);
|
||||||
|
limitErrorMsgLabel.setVisible(!validLimit);
|
||||||
|
|
||||||
applyFiltersButton.setEnabled(someDevice && someAccountType);
|
applyFiltersButton.setEnabled(someDevice && someAccountType && validLimit);
|
||||||
refreshButton.setEnabled(someDevice && someAccountType && needsRefresh);
|
refreshButton.setEnabled(someDevice && someAccountType && needsRefresh && validLimit);
|
||||||
needsRefreshLabel.setVisible(needsRefresh);
|
needsRefreshLabel.setVisible(needsRefresh);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private boolean validateLimitValue() {
|
||||||
|
String selectedValue = (String)limitComboBox.getSelectedItem();
|
||||||
|
if(selectedValue.trim().equalsIgnoreCase("all")) {
|
||||||
|
return true;
|
||||||
|
} else {
|
||||||
|
try{
|
||||||
|
int value = Integer.parseInt(selectedValue);
|
||||||
|
return value > 0;
|
||||||
|
} catch( NumberFormatException ex) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Update the filter widgets, and apply them.
|
* Update the filter widgets, and apply them.
|
||||||
*/
|
*/
|
||||||
@ -209,7 +231,7 @@ final public class FiltersPanel extends JPanel {
|
|||||||
Case.addEventTypeSubscriber(EnumSet.of(CURRENT_CASE), evt -> {
|
Case.addEventTypeSubscriber(EnumSet.of(CURRENT_CASE), evt -> {
|
||||||
//clear the device filter widget when the case changes.
|
//clear the device filter widget when the case changes.
|
||||||
devicesMap.clear();
|
devicesMap.clear();
|
||||||
devicesPane.removeAll();
|
devicesListPane.removeAll();
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -234,19 +256,18 @@ final public class FiltersPanel extends JPanel {
|
|||||||
//don't show a check box for credit cards
|
//don't show a check box for credit cards
|
||||||
} else {
|
} else {
|
||||||
accountTypeMap.computeIfAbsent(type, t -> {
|
accountTypeMap.computeIfAbsent(type, t -> {
|
||||||
final JCheckBox jCheckBox = new JCheckBox(
|
|
||||||
"<html><table cellpadding=0><tr><td><img src=\""
|
CheckBoxIconPanel panel = new CheckBoxIconPanel(
|
||||||
+ FiltersPanel.class.getResource(Utils.getIconFilePath(type))
|
type.getDisplayName(),
|
||||||
+ "\"/></td><td width=" + 3 + "><td>" + type.getDisplayName() + "</td></tr></table></html>",
|
new ImageIcon(FiltersPanel.class.getResource(Utils.getIconFilePath(type))));
|
||||||
true
|
panel.setSelected(true);
|
||||||
);
|
panel.addItemListener(validationListener);
|
||||||
jCheckBox.addItemListener(validationListener);
|
accountTypeListPane.add(panel);
|
||||||
accountTypePane.add(jCheckBox);
|
|
||||||
if (t.equals(Account.Type.DEVICE)) {
|
if (t.equals(Account.Type.DEVICE)) {
|
||||||
//Deveice type filter is enabled based on whether we are in table or graph view.
|
//Deveice type filter is enabled based on whether we are in table or graph view.
|
||||||
jCheckBox.setEnabled(deviceAccountTypeEnabled);
|
panel.setEnabled(deviceAccountTypeEnabled);
|
||||||
}
|
}
|
||||||
return jCheckBox;
|
return panel.getCheckBox();
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
@ -265,7 +286,7 @@ final public class FiltersPanel extends JPanel {
|
|||||||
devicesMap.computeIfAbsent(dataSource.getDeviceId(), ds -> {
|
devicesMap.computeIfAbsent(dataSource.getDeviceId(), ds -> {
|
||||||
final JCheckBox jCheckBox = new JCheckBox(dsName, initialState);
|
final JCheckBox jCheckBox = new JCheckBox(dsName, initialState);
|
||||||
jCheckBox.addItemListener(validationListener);
|
jCheckBox.addItemListener(validationListener);
|
||||||
devicesPane.add(jCheckBox);
|
devicesListPane.add(jCheckBox);
|
||||||
return jCheckBox;
|
return jCheckBox;
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
@ -289,6 +310,8 @@ final public class FiltersPanel extends JPanel {
|
|||||||
setDeviceFilter((DeviceFilter)subFilter);
|
setDeviceFilter((DeviceFilter)subFilter);
|
||||||
} else if( subFilter instanceof AccountTypeFilter) {
|
} else if( subFilter instanceof AccountTypeFilter) {
|
||||||
setAccountTypeFilter((AccountTypeFilter) subFilter);
|
setAccountTypeFilter((AccountTypeFilter) subFilter);
|
||||||
|
} else if (subFilter instanceof MostRecentFilter ) {
|
||||||
|
setMostRecentFilter((MostRecentFilter)subFilter);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
@ -341,6 +364,15 @@ final public class FiltersPanel extends JPanel {
|
|||||||
endDatePicker.setEnabled(state.isEnabled());
|
endDatePicker.setEnabled(state.isEnabled());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void setMostRecentFilter(MostRecentFilter filter) {
|
||||||
|
int limit = filter.getLimit();
|
||||||
|
if(limit > 0) {
|
||||||
|
limitComboBox.setSelectedItem(filter.getLimit());
|
||||||
|
} else {
|
||||||
|
limitComboBox.setSelectedItem("All");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@Subscribe
|
@Subscribe
|
||||||
void filtersBack(CVTEvents.StateChangeEvent event) {
|
void filtersBack(CVTEvents.StateChangeEvent event) {
|
||||||
if(event.getCommunicationsState().getCommunicationsFilter() != null){
|
if(event.getCommunicationsState().getCommunicationsFilter() != null){
|
||||||
@ -385,45 +417,46 @@ final public class FiltersPanel extends JPanel {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
accountTypePane.setLayout(new javax.swing.BoxLayout(accountTypePane, javax.swing.BoxLayout.Y_AXIS));
|
accountTypesScrollPane.setPreferredSize(new java.awt.Dimension(2, 200));
|
||||||
jScrollPane3.setViewportView(accountTypePane);
|
|
||||||
|
accountTypeListPane.setLayout(new javax.swing.BoxLayout(accountTypeListPane, javax.swing.BoxLayout.Y_AXIS));
|
||||||
|
accountTypesScrollPane.setViewportView(accountTypeListPane);
|
||||||
|
|
||||||
accountTypeRequiredLabel.setIcon(new javax.swing.ImageIcon(getClass().getResource("/org/sleuthkit/autopsy/images/error-icon-16.png"))); // NOI18N
|
accountTypeRequiredLabel.setIcon(new javax.swing.ImageIcon(getClass().getResource("/org/sleuthkit/autopsy/images/error-icon-16.png"))); // NOI18N
|
||||||
accountTypeRequiredLabel.setText(org.openide.util.NbBundle.getMessage(FiltersPanel.class, "FiltersPanel.accountTypeRequiredLabel.text")); // NOI18N
|
accountTypeRequiredLabel.setText(org.openide.util.NbBundle.getMessage(FiltersPanel.class, "FiltersPanel.accountTypeRequiredLabel.text")); // NOI18N
|
||||||
accountTypeRequiredLabel.setForeground(new java.awt.Color(255, 0, 0));
|
accountTypeRequiredLabel.setForeground(new java.awt.Color(255, 0, 0));
|
||||||
accountTypeRequiredLabel.setHorizontalTextPosition(javax.swing.SwingConstants.LEFT);
|
accountTypeRequiredLabel.setHorizontalTextPosition(javax.swing.SwingConstants.LEFT);
|
||||||
|
|
||||||
javax.swing.GroupLayout jPanel2Layout = new javax.swing.GroupLayout(jPanel2);
|
javax.swing.GroupLayout accountTypesPaneLayout = new javax.swing.GroupLayout(accountTypesPane);
|
||||||
jPanel2.setLayout(jPanel2Layout);
|
accountTypesPane.setLayout(accountTypesPaneLayout);
|
||||||
jPanel2Layout.setHorizontalGroup(
|
accountTypesPaneLayout.setHorizontalGroup(
|
||||||
jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
|
accountTypesPaneLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
|
||||||
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel2Layout.createSequentialGroup()
|
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, accountTypesPaneLayout.createSequentialGroup()
|
||||||
.addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
|
.addGroup(accountTypesPaneLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
|
||||||
.addGroup(jPanel2Layout.createSequentialGroup()
|
.addGroup(accountTypesPaneLayout.createSequentialGroup()
|
||||||
.addComponent(accountTypesLabel)
|
.addComponent(accountTypesLabel)
|
||||||
.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(accountTypeRequiredLabel))
|
.addComponent(accountTypeRequiredLabel))
|
||||||
.addGroup(jPanel2Layout.createSequentialGroup()
|
.addGroup(accountTypesPaneLayout.createSequentialGroup()
|
||||||
.addContainerGap()
|
.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
|
||||||
.addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
|
|
||||||
.addComponent(jScrollPane3)
|
|
||||||
.addGroup(jPanel2Layout.createSequentialGroup()
|
|
||||||
.addGap(0, 0, Short.MAX_VALUE)
|
|
||||||
.addComponent(unCheckAllAccountTypesButton)
|
.addComponent(unCheckAllAccountTypesButton)
|
||||||
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
|
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
|
||||||
.addComponent(checkAllAccountTypesButton)))))
|
.addComponent(checkAllAccountTypesButton))
|
||||||
|
.addGroup(accountTypesPaneLayout.createSequentialGroup()
|
||||||
|
.addGap(10, 10, 10)
|
||||||
|
.addComponent(accountTypesScrollPane, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)))
|
||||||
.addGap(0, 0, 0))
|
.addGap(0, 0, 0))
|
||||||
);
|
);
|
||||||
jPanel2Layout.setVerticalGroup(
|
accountTypesPaneLayout.setVerticalGroup(
|
||||||
jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
|
accountTypesPaneLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
|
||||||
.addGroup(jPanel2Layout.createSequentialGroup()
|
.addGroup(accountTypesPaneLayout.createSequentialGroup()
|
||||||
.addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
|
.addGroup(accountTypesPaneLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
|
||||||
.addComponent(accountTypesLabel)
|
.addComponent(accountTypesLabel)
|
||||||
.addComponent(accountTypeRequiredLabel))
|
.addComponent(accountTypeRequiredLabel))
|
||||||
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
|
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
|
||||||
.addComponent(jScrollPane3, javax.swing.GroupLayout.DEFAULT_SIZE, 243, Short.MAX_VALUE)
|
.addComponent(accountTypesScrollPane, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
|
||||||
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
|
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
|
||||||
.addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
|
.addGroup(accountTypesPaneLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
|
||||||
.addComponent(checkAllAccountTypesButton)
|
.addComponent(checkAllAccountTypesButton)
|
||||||
.addComponent(unCheckAllAccountTypesButton)))
|
.addComponent(unCheckAllAccountTypesButton)))
|
||||||
);
|
);
|
||||||
@ -445,46 +478,45 @@ final public class FiltersPanel extends JPanel {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
jScrollPane2.setHorizontalScrollBarPolicy(javax.swing.ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);
|
devicesScrollPane.setHorizontalScrollBarPolicy(javax.swing.ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);
|
||||||
jScrollPane2.setMinimumSize(new java.awt.Dimension(27, 75));
|
devicesScrollPane.setMinimumSize(new java.awt.Dimension(27, 75));
|
||||||
|
|
||||||
devicesPane.setMinimumSize(new java.awt.Dimension(4, 100));
|
devicesListPane.setMinimumSize(new java.awt.Dimension(4, 100));
|
||||||
devicesPane.setLayout(new javax.swing.BoxLayout(devicesPane, javax.swing.BoxLayout.Y_AXIS));
|
devicesListPane.setLayout(new javax.swing.BoxLayout(devicesListPane, javax.swing.BoxLayout.Y_AXIS));
|
||||||
jScrollPane2.setViewportView(devicesPane);
|
devicesScrollPane.setViewportView(devicesListPane);
|
||||||
|
|
||||||
deviceRequiredLabel.setIcon(new javax.swing.ImageIcon(getClass().getResource("/org/sleuthkit/autopsy/images/error-icon-16.png"))); // NOI18N
|
deviceRequiredLabel.setIcon(new javax.swing.ImageIcon(getClass().getResource("/org/sleuthkit/autopsy/images/error-icon-16.png"))); // NOI18N
|
||||||
deviceRequiredLabel.setText(org.openide.util.NbBundle.getMessage(FiltersPanel.class, "FiltersPanel.deviceRequiredLabel.text")); // NOI18N
|
deviceRequiredLabel.setText(org.openide.util.NbBundle.getMessage(FiltersPanel.class, "FiltersPanel.deviceRequiredLabel.text")); // NOI18N
|
||||||
deviceRequiredLabel.setForeground(new java.awt.Color(255, 0, 0));
|
deviceRequiredLabel.setForeground(new java.awt.Color(255, 0, 0));
|
||||||
deviceRequiredLabel.setHorizontalTextPosition(javax.swing.SwingConstants.LEFT);
|
deviceRequiredLabel.setHorizontalTextPosition(javax.swing.SwingConstants.LEFT);
|
||||||
|
|
||||||
javax.swing.GroupLayout jPanel3Layout = new javax.swing.GroupLayout(jPanel3);
|
javax.swing.GroupLayout devicesPaneLayout = new javax.swing.GroupLayout(devicesPane);
|
||||||
jPanel3.setLayout(jPanel3Layout);
|
devicesPane.setLayout(devicesPaneLayout);
|
||||||
jPanel3Layout.setHorizontalGroup(
|
devicesPaneLayout.setHorizontalGroup(
|
||||||
jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
|
devicesPaneLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
|
||||||
.addGroup(jPanel3Layout.createSequentialGroup()
|
.addGroup(devicesPaneLayout.createSequentialGroup()
|
||||||
.addComponent(devicesLabel)
|
.addComponent(devicesLabel)
|
||||||
.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(deviceRequiredLabel))
|
.addComponent(deviceRequiredLabel))
|
||||||
.addGroup(jPanel3Layout.createSequentialGroup()
|
.addGroup(devicesPaneLayout.createSequentialGroup()
|
||||||
.addContainerGap()
|
.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
|
||||||
.addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
|
|
||||||
.addGroup(jPanel3Layout.createSequentialGroup()
|
|
||||||
.addGap(0, 0, Short.MAX_VALUE)
|
|
||||||
.addComponent(unCheckAllDevicesButton)
|
.addComponent(unCheckAllDevicesButton)
|
||||||
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
|
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
|
||||||
.addComponent(checkAllDevicesButton))
|
.addComponent(checkAllDevicesButton))
|
||||||
.addComponent(jScrollPane2, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)))
|
.addGroup(devicesPaneLayout.createSequentialGroup()
|
||||||
|
.addGap(10, 10, 10)
|
||||||
|
.addComponent(devicesScrollPane, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
|
||||||
);
|
);
|
||||||
jPanel3Layout.setVerticalGroup(
|
devicesPaneLayout.setVerticalGroup(
|
||||||
jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
|
devicesPaneLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
|
||||||
.addGroup(jPanel3Layout.createSequentialGroup()
|
.addGroup(devicesPaneLayout.createSequentialGroup()
|
||||||
.addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
|
.addGroup(devicesPaneLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
|
||||||
.addComponent(devicesLabel)
|
.addComponent(devicesLabel)
|
||||||
.addComponent(deviceRequiredLabel))
|
.addComponent(deviceRequiredLabel))
|
||||||
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
|
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
|
||||||
.addComponent(jScrollPane2, javax.swing.GroupLayout.DEFAULT_SIZE, 94, Short.MAX_VALUE)
|
.addComponent(devicesScrollPane, javax.swing.GroupLayout.DEFAULT_SIZE, 94, Short.MAX_VALUE)
|
||||||
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
|
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
|
||||||
.addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
|
.addGroup(devicesPaneLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
|
||||||
.addComponent(checkAllDevicesButton)
|
.addComponent(checkAllDevicesButton)
|
||||||
.addComponent(unCheckAllDevicesButton))
|
.addComponent(unCheckAllDevicesButton))
|
||||||
.addGap(5, 5, 5))
|
.addGap(5, 5, 5))
|
||||||
@ -511,38 +543,39 @@ final public class FiltersPanel extends JPanel {
|
|||||||
|
|
||||||
endDatePicker.setEnabled(false);
|
endDatePicker.setEnabled(false);
|
||||||
|
|
||||||
javax.swing.GroupLayout jPanel4Layout = new javax.swing.GroupLayout(jPanel4);
|
javax.swing.GroupLayout dateRangePaneLayout = new javax.swing.GroupLayout(dateRangePane);
|
||||||
jPanel4.setLayout(jPanel4Layout);
|
dateRangePane.setLayout(dateRangePaneLayout);
|
||||||
jPanel4Layout.setHorizontalGroup(
|
dateRangePaneLayout.setHorizontalGroup(
|
||||||
jPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
|
dateRangePaneLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
|
||||||
.addGroup(jPanel4Layout.createSequentialGroup()
|
.addGroup(dateRangePaneLayout.createSequentialGroup()
|
||||||
|
.addGroup(dateRangePaneLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
|
||||||
.addComponent(dateRangeLabel)
|
.addComponent(dateRangeLabel)
|
||||||
.addGap(0, 0, Short.MAX_VALUE))
|
.addGroup(dateRangePaneLayout.createSequentialGroup()
|
||||||
.addGroup(jPanel4Layout.createSequentialGroup()
|
|
||||||
.addContainerGap()
|
.addContainerGap()
|
||||||
.addGroup(jPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
|
.addGroup(dateRangePaneLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
|
||||||
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel4Layout.createSequentialGroup()
|
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, dateRangePaneLayout.createSequentialGroup()
|
||||||
.addComponent(endCheckBox)
|
.addComponent(endCheckBox)
|
||||||
.addGap(12, 12, 12)
|
.addGap(12, 12, 12)
|
||||||
.addComponent(endDatePicker, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
|
.addComponent(endDatePicker, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
|
||||||
.addGroup(jPanel4Layout.createSequentialGroup()
|
.addGroup(dateRangePaneLayout.createSequentialGroup()
|
||||||
.addComponent(startCheckBox)
|
.addComponent(startCheckBox)
|
||||||
.addGap(12, 12, 12)
|
.addGap(12, 12, 12)
|
||||||
.addComponent(startDatePicker, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))))
|
.addComponent(startDatePicker, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)))))
|
||||||
|
.addGap(0, 0, Short.MAX_VALUE))
|
||||||
);
|
);
|
||||||
|
|
||||||
jPanel4Layout.linkSize(javax.swing.SwingConstants.HORIZONTAL, new java.awt.Component[] {endCheckBox, startCheckBox});
|
dateRangePaneLayout.linkSize(javax.swing.SwingConstants.HORIZONTAL, new java.awt.Component[] {endCheckBox, startCheckBox});
|
||||||
|
|
||||||
jPanel4Layout.setVerticalGroup(
|
dateRangePaneLayout.setVerticalGroup(
|
||||||
jPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
|
dateRangePaneLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
|
||||||
.addGroup(jPanel4Layout.createSequentialGroup()
|
.addGroup(dateRangePaneLayout.createSequentialGroup()
|
||||||
.addComponent(dateRangeLabel)
|
.addComponent(dateRangeLabel)
|
||||||
.addGap(6, 6, 6)
|
.addGap(6, 6, 6)
|
||||||
.addGroup(jPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
|
.addGroup(dateRangePaneLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
|
||||||
.addComponent(startDatePicker, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
|
.addComponent(startDatePicker, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
|
||||||
.addComponent(startCheckBox))
|
.addComponent(startCheckBox))
|
||||||
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
|
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
|
||||||
.addGroup(jPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
|
.addGroup(dateRangePaneLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
|
||||||
.addComponent(endDatePicker, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
|
.addComponent(endDatePicker, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
|
||||||
.addComponent(endCheckBox)))
|
.addComponent(endCheckBox)))
|
||||||
);
|
);
|
||||||
@ -553,22 +586,70 @@ final public class FiltersPanel extends JPanel {
|
|||||||
needsRefreshLabel.setText(org.openide.util.NbBundle.getMessage(FiltersPanel.class, "FiltersPanel.needsRefreshLabel.text")); // NOI18N
|
needsRefreshLabel.setText(org.openide.util.NbBundle.getMessage(FiltersPanel.class, "FiltersPanel.needsRefreshLabel.text")); // NOI18N
|
||||||
needsRefreshLabel.setForeground(new java.awt.Color(255, 0, 0));
|
needsRefreshLabel.setForeground(new java.awt.Color(255, 0, 0));
|
||||||
|
|
||||||
|
limitHeaderLabel.setText(org.openide.util.NbBundle.getMessage(FiltersPanel.class, "FiltersPanel.limitHeaderLabel.text")); // NOI18N
|
||||||
|
|
||||||
|
mostRecentLabel.setText(org.openide.util.NbBundle.getMessage(FiltersPanel.class, "FiltersPanel.mostRecentLabel.text")); // NOI18N
|
||||||
|
|
||||||
|
limitComboBox.setEditable(true);
|
||||||
|
limitComboBox.setModel(new javax.swing.DefaultComboBoxModel<>(new String[] { "All", "10000", "5000", "1000", "500", "100" }));
|
||||||
|
limitComboBox.addActionListener(new java.awt.event.ActionListener() {
|
||||||
|
public void actionPerformed(java.awt.event.ActionEvent evt) {
|
||||||
|
limitComboBoxActionPerformed(evt);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
limitErrorMsgLabel.setIcon(new javax.swing.ImageIcon(getClass().getResource("/org/sleuthkit/autopsy/images/error-icon-16.png"))); // NOI18N
|
||||||
|
limitErrorMsgLabel.setText(org.openide.util.NbBundle.getMessage(FiltersPanel.class, "FiltersPanel.limitErrorMsgLabel.text")); // NOI18N
|
||||||
|
limitErrorMsgLabel.setForeground(new java.awt.Color(255, 0, 0));
|
||||||
|
limitErrorMsgLabel.setHorizontalTextPosition(javax.swing.SwingConstants.LEADING);
|
||||||
|
|
||||||
|
javax.swing.GroupLayout limitPaneLayout = new javax.swing.GroupLayout(limitPane);
|
||||||
|
limitPane.setLayout(limitPaneLayout);
|
||||||
|
limitPaneLayout.setHorizontalGroup(
|
||||||
|
limitPaneLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
|
||||||
|
.addGroup(limitPaneLayout.createSequentialGroup()
|
||||||
|
.addComponent(limitHeaderLabel)
|
||||||
|
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
|
||||||
|
.addComponent(limitErrorMsgLabel)
|
||||||
|
.addContainerGap())
|
||||||
|
.addGroup(limitPaneLayout.createSequentialGroup()
|
||||||
|
.addContainerGap()
|
||||||
|
.addComponent(mostRecentLabel)
|
||||||
|
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
|
||||||
|
.addComponent(limitComboBox, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
|
||||||
|
.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
|
||||||
|
);
|
||||||
|
limitPaneLayout.setVerticalGroup(
|
||||||
|
limitPaneLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
|
||||||
|
.addGroup(limitPaneLayout.createSequentialGroup()
|
||||||
|
.addContainerGap()
|
||||||
|
.addGroup(limitPaneLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
|
||||||
|
.addComponent(limitHeaderLabel)
|
||||||
|
.addComponent(limitErrorMsgLabel))
|
||||||
|
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
|
||||||
|
.addGroup(limitPaneLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
|
||||||
|
.addComponent(mostRecentLabel)
|
||||||
|
.addComponent(limitComboBox, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
|
||||||
|
.addGap(0, 32, Short.MAX_VALUE))
|
||||||
|
);
|
||||||
|
|
||||||
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(
|
||||||
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
|
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
|
||||||
.addComponent(jPanel3, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
|
.addComponent(devicesPane, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
|
||||||
.addComponent(jPanel2, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
|
.addComponent(accountTypesPane, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
|
||||||
.addGroup(layout.createSequentialGroup()
|
.addGroup(layout.createSequentialGroup()
|
||||||
.addComponent(filtersTitleLabel)
|
.addComponent(filtersTitleLabel)
|
||||||
.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(applyFiltersButton, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
|
.addComponent(applyFiltersButton, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
|
||||||
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
|
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
|
||||||
.addComponent(refreshButton))
|
.addComponent(refreshButton))
|
||||||
.addComponent(jPanel4, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
|
.addComponent(dateRangePane, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
|
||||||
.addGroup(layout.createSequentialGroup()
|
.addGroup(layout.createSequentialGroup()
|
||||||
.addContainerGap()
|
.addContainerGap()
|
||||||
.addComponent(needsRefreshLabel, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
|
.addComponent(needsRefreshLabel, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
|
||||||
|
.addComponent(limitPane, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
|
||||||
);
|
);
|
||||||
layout.setVerticalGroup(
|
layout.setVerticalGroup(
|
||||||
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
|
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
|
||||||
@ -581,12 +662,14 @@ final public class FiltersPanel extends JPanel {
|
|||||||
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
|
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
|
||||||
.addComponent(needsRefreshLabel)
|
.addComponent(needsRefreshLabel)
|
||||||
.addGap(4, 4, 4)
|
.addGap(4, 4, 4)
|
||||||
.addComponent(jPanel3, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
|
.addComponent(devicesPane, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
|
||||||
.addGap(18, 18, 18)
|
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
|
||||||
.addComponent(jPanel2, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
|
.addComponent(accountTypesPane, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
|
||||||
.addGap(18, 18, 18)
|
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
|
||||||
.addComponent(jPanel4, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
|
.addComponent(dateRangePane, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
|
||||||
.addContainerGap(19, Short.MAX_VALUE))
|
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
|
||||||
|
.addComponent(limitPane, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
|
||||||
|
.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
|
||||||
);
|
);
|
||||||
}// </editor-fold>//GEN-END:initComponents
|
}// </editor-fold>//GEN-END:initComponents
|
||||||
|
|
||||||
@ -611,6 +694,7 @@ final public class FiltersPanel extends JPanel {
|
|||||||
commsFilter.addAndFilter(getDateRangeFilter());
|
commsFilter.addAndFilter(getDateRangeFilter());
|
||||||
commsFilter.addAndFilter(new CommunicationsFilter.RelationshipTypeFilter(
|
commsFilter.addAndFilter(new CommunicationsFilter.RelationshipTypeFilter(
|
||||||
ImmutableSet.of(CALL_LOG, MESSAGE, CONTACT)));
|
ImmutableSet.of(CALL_LOG, MESSAGE, CONTACT)));
|
||||||
|
commsFilter.addAndFilter(getMostRecentFilter());
|
||||||
return commsFilter;
|
return commsFilter;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -654,6 +738,20 @@ final public class FiltersPanel extends JPanel {
|
|||||||
endCheckBox.isSelected() ? endDatePicker.getDate().atStartOfDay(zone).toEpochSecond() : 0);
|
endCheckBox.isSelected() ? endDatePicker.getDate().atStartOfDay(zone).toEpochSecond() : 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private MostRecentFilter getMostRecentFilter() {
|
||||||
|
String value = (String)limitComboBox.getSelectedItem();
|
||||||
|
if(value.trim().equalsIgnoreCase("all")){
|
||||||
|
return new MostRecentFilter(-1);
|
||||||
|
} else{
|
||||||
|
try {
|
||||||
|
int count = Integer.parseInt(value);
|
||||||
|
return new MostRecentFilter(count);
|
||||||
|
} catch(NumberFormatException ex) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private DateControlState getStartControlState() {
|
private DateControlState getStartControlState() {
|
||||||
return new DateControlState (startDatePicker.getDate(), startCheckBox.isSelected());
|
return new DateControlState (startDatePicker.getDate(), startCheckBox.isSelected());
|
||||||
}
|
}
|
||||||
@ -811,12 +909,18 @@ final public class FiltersPanel extends JPanel {
|
|||||||
|
|
||||||
private void startCheckBoxStateChanged(javax.swing.event.ChangeEvent evt) {//GEN-FIRST:event_startCheckBoxStateChanged
|
private void startCheckBoxStateChanged(javax.swing.event.ChangeEvent evt) {//GEN-FIRST:event_startCheckBoxStateChanged
|
||||||
startDatePicker.setEnabled(startCheckBox.isSelected());
|
startDatePicker.setEnabled(startCheckBox.isSelected());
|
||||||
|
validateFilters();
|
||||||
}//GEN-LAST:event_startCheckBoxStateChanged
|
}//GEN-LAST:event_startCheckBoxStateChanged
|
||||||
|
|
||||||
private void endCheckBoxStateChanged(javax.swing.event.ChangeEvent evt) {//GEN-FIRST:event_endCheckBoxStateChanged
|
private void endCheckBoxStateChanged(javax.swing.event.ChangeEvent evt) {//GEN-FIRST:event_endCheckBoxStateChanged
|
||||||
endDatePicker.setEnabled(endCheckBox.isSelected());
|
endDatePicker.setEnabled(endCheckBox.isSelected());
|
||||||
|
validateFilters();
|
||||||
}//GEN-LAST:event_endCheckBoxStateChanged
|
}//GEN-LAST:event_endCheckBoxStateChanged
|
||||||
|
|
||||||
|
private void limitComboBoxActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_limitComboBoxActionPerformed
|
||||||
|
validateFilters();
|
||||||
|
}//GEN-LAST:event_limitComboBoxActionPerformed
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* A class to wrap the state of the date controls that consist of a date picker
|
* A class to wrap the state of the date controls that consist of a date picker
|
||||||
* and a checkbox.
|
* and a checkbox.
|
||||||
@ -859,24 +963,29 @@ final public class FiltersPanel extends JPanel {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Variables declaration - do not modify//GEN-BEGIN:variables
|
// Variables declaration - do not modify//GEN-BEGIN:variables
|
||||||
private final javax.swing.JPanel accountTypePane = new javax.swing.JPanel();
|
private final javax.swing.JPanel accountTypeListPane = new javax.swing.JPanel();
|
||||||
private final javax.swing.JLabel accountTypeRequiredLabel = new javax.swing.JLabel();
|
private final javax.swing.JLabel accountTypeRequiredLabel = new javax.swing.JLabel();
|
||||||
private final javax.swing.JLabel accountTypesLabel = new javax.swing.JLabel();
|
private final javax.swing.JLabel accountTypesLabel = new javax.swing.JLabel();
|
||||||
|
private final javax.swing.JPanel accountTypesPane = new javax.swing.JPanel();
|
||||||
|
private final javax.swing.JScrollPane accountTypesScrollPane = new javax.swing.JScrollPane();
|
||||||
private final javax.swing.JButton applyFiltersButton = new javax.swing.JButton();
|
private final javax.swing.JButton applyFiltersButton = new javax.swing.JButton();
|
||||||
private final javax.swing.JButton checkAllAccountTypesButton = new javax.swing.JButton();
|
private final javax.swing.JButton checkAllAccountTypesButton = new javax.swing.JButton();
|
||||||
private final javax.swing.JButton checkAllDevicesButton = new javax.swing.JButton();
|
private final javax.swing.JButton checkAllDevicesButton = new javax.swing.JButton();
|
||||||
private final javax.swing.JLabel dateRangeLabel = new javax.swing.JLabel();
|
private final javax.swing.JLabel dateRangeLabel = new javax.swing.JLabel();
|
||||||
|
private final javax.swing.JPanel dateRangePane = new javax.swing.JPanel();
|
||||||
private final javax.swing.JLabel deviceRequiredLabel = new javax.swing.JLabel();
|
private final javax.swing.JLabel deviceRequiredLabel = new javax.swing.JLabel();
|
||||||
private final javax.swing.JLabel devicesLabel = new javax.swing.JLabel();
|
private final javax.swing.JLabel devicesLabel = new javax.swing.JLabel();
|
||||||
|
private final javax.swing.JPanel devicesListPane = new javax.swing.JPanel();
|
||||||
private final javax.swing.JPanel devicesPane = new javax.swing.JPanel();
|
private final javax.swing.JPanel devicesPane = new javax.swing.JPanel();
|
||||||
|
private final javax.swing.JScrollPane devicesScrollPane = new javax.swing.JScrollPane();
|
||||||
private final javax.swing.JCheckBox endCheckBox = new javax.swing.JCheckBox();
|
private final javax.swing.JCheckBox endCheckBox = new javax.swing.JCheckBox();
|
||||||
private final com.github.lgooddatepicker.components.DatePicker endDatePicker = new com.github.lgooddatepicker.components.DatePicker();
|
private final com.github.lgooddatepicker.components.DatePicker endDatePicker = new com.github.lgooddatepicker.components.DatePicker();
|
||||||
private final javax.swing.JLabel filtersTitleLabel = new javax.swing.JLabel();
|
private final javax.swing.JLabel filtersTitleLabel = new javax.swing.JLabel();
|
||||||
private final javax.swing.JPanel jPanel2 = new javax.swing.JPanel();
|
private final javax.swing.JComboBox<String> limitComboBox = new javax.swing.JComboBox<>();
|
||||||
private final javax.swing.JPanel jPanel3 = new javax.swing.JPanel();
|
private final javax.swing.JLabel limitErrorMsgLabel = new javax.swing.JLabel();
|
||||||
private final javax.swing.JPanel jPanel4 = new javax.swing.JPanel();
|
private final javax.swing.JLabel limitHeaderLabel = new javax.swing.JLabel();
|
||||||
private final javax.swing.JScrollPane jScrollPane2 = new javax.swing.JScrollPane();
|
private final javax.swing.JPanel limitPane = new javax.swing.JPanel();
|
||||||
private final javax.swing.JScrollPane jScrollPane3 = new javax.swing.JScrollPane();
|
private final javax.swing.JLabel mostRecentLabel = new javax.swing.JLabel();
|
||||||
private final javax.swing.JLabel needsRefreshLabel = new javax.swing.JLabel();
|
private final javax.swing.JLabel needsRefreshLabel = new javax.swing.JLabel();
|
||||||
private final javax.swing.JButton refreshButton = new javax.swing.JButton();
|
private final javax.swing.JButton refreshButton = new javax.swing.JButton();
|
||||||
private final javax.swing.JCheckBox startCheckBox = new javax.swing.JCheckBox();
|
private final javax.swing.JCheckBox startCheckBox = new javax.swing.JCheckBox();
|
||||||
@ -885,6 +994,66 @@ final public class FiltersPanel extends JPanel {
|
|||||||
private final javax.swing.JButton unCheckAllDevicesButton = new javax.swing.JButton();
|
private final javax.swing.JButton unCheckAllDevicesButton = new javax.swing.JButton();
|
||||||
// End of variables declaration//GEN-END:variables
|
// End of variables declaration//GEN-END:variables
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This class is a small panel that appears to just be a checkbox but
|
||||||
|
* adds the functionality of being able to show an icon between the checkbox
|
||||||
|
* and label.
|
||||||
|
*/
|
||||||
|
final class CheckBoxIconPanel extends JPanel{
|
||||||
|
private final JCheckBox checkbox;
|
||||||
|
private final JLabel label;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Creates a JPanel instance with the specified label and image.
|
||||||
|
*
|
||||||
|
* @param labelText The text to be displayed by the checkbox label.
|
||||||
|
* @param image The image to be dispayed by the label.
|
||||||
|
*/
|
||||||
|
private CheckBoxIconPanel(String labelText, Icon image) {
|
||||||
|
checkbox = new JCheckBox();
|
||||||
|
label = new JLabel(labelText);
|
||||||
|
label.setIcon(image);
|
||||||
|
setLayout(new BoxLayout(this, BoxLayout.X_AXIS));
|
||||||
|
|
||||||
|
add(checkbox);
|
||||||
|
add(label);
|
||||||
|
add(Box.createHorizontalGlue());
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Sets the state of the checkbox.
|
||||||
|
*
|
||||||
|
* @param selected true if the button is selected, otherwise false
|
||||||
|
*/
|
||||||
|
void setSelected(boolean selected) {
|
||||||
|
checkbox.setSelected(selected);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setEnabled(boolean enabled) {
|
||||||
|
checkbox.setEnabled(enabled);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns the instance of the JCheckBox.
|
||||||
|
*
|
||||||
|
* @return JCheckbox instance
|
||||||
|
*/
|
||||||
|
JCheckBox getCheckBox() {
|
||||||
|
return checkbox;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Adds an ItemListener to the checkbox.
|
||||||
|
*
|
||||||
|
* @param l the ItemListener to be added.
|
||||||
|
*/
|
||||||
|
void addItemListener(ItemListener l) {
|
||||||
|
checkbox.addItemListener(l);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* A simple class that implements CaseDbAccessQueryCallback. Can be used
|
* A simple class that implements CaseDbAccessQueryCallback. Can be used
|
||||||
* as an anonymous innerclass with the CaseDbAccessManager select function.
|
* as an anonymous innerclass with the CaseDbAccessManager select function.
|
||||||
|
Loading…
x
Reference in New Issue
Block a user