error messages

This commit is contained in:
Brian Sweeney 2018-05-18 12:31:41 -06:00
parent ee6837d5d4
commit ed15f81a97
5 changed files with 106 additions and 20 deletions

View File

@ -17,5 +17,5 @@ CommonFilesPanel.intraCaseRadio.label=Correlate within current case only
CommonFilesPanel.interCaseRadio.label=Correlate amongst all known cases (uses Central Repo) CommonFilesPanel.interCaseRadio.label=Correlate amongst all known cases (uses Central Repo)
IntraCasePanel.allDataSourcesRadioButton.text=Matches may be from any data source IntraCasePanel.allDataSourcesRadioButton.text=Matches may be from any data source
IntraCasePanel.withinDataSourceRadioButton.text=At least one match must appear in the data source selected below: IntraCasePanel.withinDataSourceRadioButton.text=At least one match must appear in the data source selected below:
InterCasePanel.anCentralRepoCaseRadio.text=Matches may be from any Central Repo case
InterCasePanel.specificCentralRepoCaseRadio.text=Matches must be from the following Central Repo case: InterCasePanel.specificCentralRepoCaseRadio.text=Matches must be from the following Central Repo case:
InterCasePanel.anyCentralRepoCaseRadio.text=Matches may be from any Central Repo case

View File

@ -304,7 +304,6 @@ public final class CommonFilesPanel extends javax.swing.JPanel {
try { try {
CommonFilesPanel.this.intraCasePanel.setDataSourceMap(this.get()); CommonFilesPanel.this.intraCasePanel.setDataSourceMap(this.get());
updateUi(); updateUi();
} catch (InterruptedException ex) { } catch (InterruptedException ex) {
@ -602,12 +601,36 @@ public final class CommonFilesPanel extends javax.swing.JPanel {
private void intraCaseRadioActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_intraCaseRadioActionPerformed private void intraCaseRadioActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_intraCaseRadioActionPerformed
((java.awt.CardLayout)this.layoutPanel.getLayout()).last(this.layoutPanel); ((java.awt.CardLayout)this.layoutPanel.getLayout()).last(this.layoutPanel);
handleIntraCaseSearchCriteriaChanged();
}//GEN-LAST:event_intraCaseRadioActionPerformed }//GEN-LAST:event_intraCaseRadioActionPerformed
public void handleIntraCaseSearchCriteriaChanged() {
if(this.areIntraCaseSearchCriteriaMet()){
this.searchButton.setEnabled(true);
this.hideErrorMessages();
} else {
this.searchButton.setEnabled(false);
this.hideErrorMessages();
this.showIntraCaseErrorMessage();
}
}
private void interCaseRadioActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_interCaseRadioActionPerformed private void interCaseRadioActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_interCaseRadioActionPerformed
((java.awt.CardLayout)this.layoutPanel.getLayout()).first(this.layoutPanel); ((java.awt.CardLayout)this.layoutPanel.getLayout()).first(this.layoutPanel);
handleInterCaseSearchCriteriaChanged();
}//GEN-LAST:event_interCaseRadioActionPerformed }//GEN-LAST:event_interCaseRadioActionPerformed
public void handleInterCaseSearchCriteriaChanged() {
if(this.areInterCaseSearchCriteriaMet()){
this.searchButton.setEnabled(true);
this.hideErrorMessages();
} else {
this.searchButton.setEnabled(false);
this.hideErrorMessages();
this.showInterCaseErrorMessage();
}
}
private void toggleErrorTextAndSearchBox() { private void toggleErrorTextAndSearchBox() {
if (!this.pictureVideoCheckbox.isSelected() && !this.documentsCheckbox.isSelected() && !this.allFileCategoriesRadioButton.isSelected()) { if (!this.pictureVideoCheckbox.isSelected() && !this.documentsCheckbox.isSelected() && !this.allFileCategoriesRadioButton.isSelected()) {
this.searchButton.setEnabled(false); this.searchButton.setEnabled(false);
@ -663,4 +686,26 @@ public final class CommonFilesPanel extends javax.swing.JPanel {
void setSearchButtonEnabled(boolean enabled) { void setSearchButtonEnabled(boolean enabled) {
this.searchButton.setEnabled(enabled); this.searchButton.setEnabled(enabled);
} }
private boolean areIntraCaseSearchCriteriaMet() {
return this.intraCasePanel.areSearchCriteriaMet();
}
private boolean areInterCaseSearchCriteriaMet() {
return this.interCasePanel.areSearchCriteriaMet();
}
private void hideErrorMessages() {
this.errorText.setVisible(false);
}
private void showIntraCaseErrorMessage() {
this.errorText.setText(Bundle.CommonFilesPanel_showIntraCaseErrorMessage_message());
this.errorText.setVisible(true);
}
private void showInterCaseErrorMessage() {
this.errorText.setText(this.interCasePanel.getErrorMessage());
this.errorText.setVisible(true);
}
} }

View File

@ -23,7 +23,7 @@
<Group type="102" alignment="0" attributes="0"> <Group type="102" alignment="0" attributes="0">
<EmptySpace max="-2" attributes="0"/> <EmptySpace max="-2" attributes="0"/>
<Group type="103" groupAlignment="0" attributes="0"> <Group type="103" groupAlignment="0" attributes="0">
<Component id="anCentralRepoCaseRadio" alignment="0" min="-2" max="-2" attributes="0"/> <Component id="anyCentralRepoCaseRadio" alignment="0" min="-2" max="-2" attributes="0"/>
<Component id="specificCentralRepoCaseRadio" alignment="0" min="-2" max="-2" attributes="0"/> <Component id="specificCentralRepoCaseRadio" alignment="0" min="-2" max="-2" attributes="0"/>
<Group type="102" alignment="0" attributes="0"> <Group type="102" alignment="0" attributes="0">
<EmptySpace min="-2" pref="21" max="-2" attributes="0"/> <EmptySpace min="-2" pref="21" max="-2" attributes="0"/>
@ -38,7 +38,7 @@
<Group type="103" groupAlignment="0" attributes="0"> <Group type="103" groupAlignment="0" 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="anCentralRepoCaseRadio" min="-2" max="-2" attributes="0"/> <Component id="anyCentralRepoCaseRadio" min="-2" max="-2" attributes="0"/>
<EmptySpace max="-2" attributes="0"/> <EmptySpace max="-2" attributes="0"/>
<Component id="specificCentralRepoCaseRadio" min="-2" max="-2" attributes="0"/> <Component id="specificCentralRepoCaseRadio" min="-2" max="-2" attributes="0"/>
<EmptySpace max="-2" attributes="0"/> <EmptySpace max="-2" attributes="0"/>
@ -49,18 +49,18 @@
</DimensionLayout> </DimensionLayout>
</Layout> </Layout>
<SubComponents> <SubComponents>
<Component class="javax.swing.JRadioButton" name="anCentralRepoCaseRadio"> <Component class="javax.swing.JRadioButton" name="anyCentralRepoCaseRadio">
<Properties> <Properties>
<Property name="buttonGroup" type="javax.swing.ButtonGroup" editor="org.netbeans.modules.form.RADComponent$ButtonGroupPropertyEditor"> <Property name="buttonGroup" type="javax.swing.ButtonGroup" editor="org.netbeans.modules.form.RADComponent$ButtonGroupPropertyEditor">
<ComponentRef name="buttonGroup"/> <ComponentRef name="buttonGroup"/>
</Property> </Property>
<Property name="selected" type="boolean" value="true"/> <Property name="selected" type="boolean" value="true"/>
<Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor"> <Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
<ResourceString bundle="org/sleuthkit/autopsy/commonfilesearch/Bundle.properties" key="InterCasePanel.anCentralRepoCaseRadio.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, &quot;{key}&quot;)"/> <ResourceString bundle="org/sleuthkit/autopsy/commonfilesearch/Bundle.properties" key="InterCasePanel.anyCentralRepoCaseRadio.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, &quot;{key}&quot;)"/>
</Property> </Property>
</Properties> </Properties>
<Events> <Events>
<EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="anCentralRepoCaseRadioActionPerformed"/> <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="anyCentralRepoCaseRadioActionPerformed"/>
</Events> </Events>
</Component> </Component>
<Component class="javax.swing.JRadioButton" name="specificCentralRepoCaseRadio"> <Component class="javax.swing.JRadioButton" name="specificCentralRepoCaseRadio">

View File

@ -51,11 +51,14 @@ public class InterCasePanel extends javax.swing.JPanel {
private CommonFilesPanel parent; private CommonFilesPanel parent;
private String errorMessage;
/** /**
* Creates new form InterCasePanel * Creates new form InterCasePanel
*/ */
public InterCasePanel() { public InterCasePanel() {
initComponents(); initComponents();
this.errorMessage = "";
} }
private void specificCaseSelected(boolean selected) { private void specificCaseSelected(boolean selected) {
@ -70,6 +73,10 @@ public class InterCasePanel extends javax.swing.JPanel {
this.parent = parent; this.parent = parent;
} }
String getErrorMessage(){
return this.errorMessage;
}
/** /**
* 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
@ -80,16 +87,16 @@ public class InterCasePanel extends javax.swing.JPanel {
private void initComponents() { private void initComponents() {
buttonGroup = new javax.swing.ButtonGroup(); buttonGroup = new javax.swing.ButtonGroup();
anCentralRepoCaseRadio = new javax.swing.JRadioButton(); anyCentralRepoCaseRadio = new javax.swing.JRadioButton();
specificCentralRepoCaseRadio = new javax.swing.JRadioButton(); specificCentralRepoCaseRadio = new javax.swing.JRadioButton();
caseComboBox = new javax.swing.JComboBox<>(); caseComboBox = new javax.swing.JComboBox<>();
buttonGroup.add(anCentralRepoCaseRadio); buttonGroup.add(anyCentralRepoCaseRadio);
anCentralRepoCaseRadio.setSelected(true); anyCentralRepoCaseRadio.setSelected(true);
org.openide.awt.Mnemonics.setLocalizedText(anCentralRepoCaseRadio, org.openide.util.NbBundle.getMessage(InterCasePanel.class, "InterCasePanel.anCentralRepoCaseRadio.text")); // NOI18N org.openide.awt.Mnemonics.setLocalizedText(anyCentralRepoCaseRadio, org.openide.util.NbBundle.getMessage(InterCasePanel.class, "InterCasePanel.anyCentralRepoCaseRadio.text")); // NOI18N
anCentralRepoCaseRadio.addActionListener(new java.awt.event.ActionListener() { anyCentralRepoCaseRadio.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) { public void actionPerformed(java.awt.event.ActionEvent evt) {
anCentralRepoCaseRadioActionPerformed(evt); anyCentralRepoCaseRadioActionPerformed(evt);
} }
}); });
@ -111,7 +118,7 @@ public class InterCasePanel extends javax.swing.JPanel {
.addGroup(layout.createSequentialGroup() .addGroup(layout.createSequentialGroup()
.addContainerGap() .addContainerGap()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(anCentralRepoCaseRadio) .addComponent(anyCentralRepoCaseRadio)
.addComponent(specificCentralRepoCaseRadio) .addComponent(specificCentralRepoCaseRadio)
.addGroup(layout.createSequentialGroup() .addGroup(layout.createSequentialGroup()
.addGap(21, 21, 21) .addGap(21, 21, 21)
@ -122,7 +129,7 @@ public class InterCasePanel extends javax.swing.JPanel {
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup() .addGroup(layout.createSequentialGroup()
.addContainerGap() .addContainerGap()
.addComponent(anCentralRepoCaseRadio) .addComponent(anyCentralRepoCaseRadio)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(specificCentralRepoCaseRadio) .addComponent(specificCentralRepoCaseRadio)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
@ -133,15 +140,20 @@ public class InterCasePanel extends javax.swing.JPanel {
private void specificCentralRepoCaseRadioActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_specificCentralRepoCaseRadioActionPerformed private void specificCentralRepoCaseRadioActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_specificCentralRepoCaseRadioActionPerformed
this.caseComboBox.setEnabled(true); this.caseComboBox.setEnabled(true);
if(this.caseComboBox.getSelectedItem() == null){
this.caseComboBox.setSelectedIndex(0);
}
this.parent.handleInterCaseSearchCriteriaChanged();
}//GEN-LAST:event_specificCentralRepoCaseRadioActionPerformed }//GEN-LAST:event_specificCentralRepoCaseRadioActionPerformed
private void anCentralRepoCaseRadioActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_anCentralRepoCaseRadioActionPerformed private void anyCentralRepoCaseRadioActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_anyCentralRepoCaseRadioActionPerformed
this.caseComboBox.setEnabled(false); this.caseComboBox.setEnabled(false);
}//GEN-LAST:event_anCentralRepoCaseRadioActionPerformed this.parent.handleInterCaseSearchCriteriaChanged();
}//GEN-LAST:event_anyCentralRepoCaseRadioActionPerformed
// Variables declaration - do not modify//GEN-BEGIN:variables // Variables declaration - do not modify//GEN-BEGIN:variables
private javax.swing.JRadioButton anCentralRepoCaseRadio; private javax.swing.JRadioButton anyCentralRepoCaseRadio;
private javax.swing.ButtonGroup buttonGroup; private javax.swing.ButtonGroup buttonGroup;
private javax.swing.JComboBox<String> caseComboBox; private javax.swing.JComboBox<String> caseComboBox;
private javax.swing.JRadioButton specificCentralRepoCaseRadio; private javax.swing.JRadioButton specificCentralRepoCaseRadio;
@ -157,8 +169,8 @@ public class InterCasePanel extends javax.swing.JPanel {
} }
void rigForMultipleCases(boolean multipleCases) { void rigForMultipleCases(boolean multipleCases) {
this.anCentralRepoCaseRadio.setEnabled(multipleCases); this.anyCentralRepoCaseRadio.setEnabled(multipleCases);
this.anCentralRepoCaseRadio.setEnabled(multipleCases); this.anyCentralRepoCaseRadio.setEnabled(multipleCases);
if(!multipleCases){ if(!multipleCases){
this.specificCentralRepoCaseRadio.setSelected(true); this.specificCentralRepoCaseRadio.setSelected(true);
@ -173,4 +185,16 @@ public class InterCasePanel extends javax.swing.JPanel {
boolean centralRepoHasMultipleCases() { boolean centralRepoHasMultipleCases() {
return this.caseMap.size() >= 2; return this.caseMap.size() >= 2;
} }
@NbBundle.Messages({
"CommonFilesPanel.showInterCaseErrorMessage.message=Cannot run intercase correlation search: no cases in Central Repository."
})
boolean areSearchCriteriaMet() {
if(this.caseMap.isEmpty()){
this.errorMessage = Bundle.CommonFilesPanel_showInterCaseErrorMessage_message();
return false;
} else {
return true;
}
}
} }

View File

@ -52,12 +52,15 @@ public class IntraCasePanel extends javax.swing.JPanel {
private ComboBoxModel<String> dataSourcesList = new DataSourceComboBoxModel(); private ComboBoxModel<String> dataSourcesList = new DataSourceComboBoxModel();
private Map<Long, String> dataSourceMap; private Map<Long, String> dataSourceMap;
private CommonFilesPanel parent; private CommonFilesPanel parent;
private String errorMessage;
/** /**
* Creates new form IntraCasePanel * Creates new form IntraCasePanel
*/ */
public IntraCasePanel() { public IntraCasePanel() {
initComponents(); initComponents();
this.errorMessage = "";
} }
public void setParent(CommonFilesPanel parent){ public void setParent(CommonFilesPanel parent){
@ -152,10 +155,12 @@ public class IntraCasePanel extends javax.swing.JPanel {
private void allDataSourcesRadioButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_allDataSourcesRadioButtonActionPerformed private void allDataSourcesRadioButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_allDataSourcesRadioButtonActionPerformed
selectDataSourceComboBox.setEnabled(!allDataSourcesRadioButton.isSelected()); selectDataSourceComboBox.setEnabled(!allDataSourcesRadioButton.isSelected());
singleDataSource = false; singleDataSource = false;
this.parent.handleIntraCaseSearchCriteriaChanged();
}//GEN-LAST:event_allDataSourcesRadioButtonActionPerformed }//GEN-LAST:event_allDataSourcesRadioButtonActionPerformed
private void withinDataSourceRadioButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_withinDataSourceRadioButtonActionPerformed private void withinDataSourceRadioButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_withinDataSourceRadioButtonActionPerformed
withinDataSourceSelected(withinDataSourceRadioButton.isSelected()); withinDataSourceSelected(withinDataSourceRadioButton.isSelected());
this.parent.handleIntraCaseSearchCriteriaChanged();
}//GEN-LAST:event_withinDataSourceRadioButtonActionPerformed }//GEN-LAST:event_withinDataSourceRadioButtonActionPerformed
private void selectDataSourceComboBoxActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_selectDataSourceComboBoxActionPerformed private void selectDataSourceComboBoxActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_selectDataSourceComboBoxActionPerformed
@ -200,4 +205,16 @@ public class IntraCasePanel extends javax.swing.JPanel {
void setDataSourceMap(Map<Long, String> dataSourceMap) { void setDataSourceMap(Map<Long, String> dataSourceMap) {
this.dataSourceMap = dataSourceMap; this.dataSourceMap = dataSourceMap;
} }
@NbBundle.Messages({
"IntraCasePanel.areSearchCriteriaMet.message=Cannot run intra-case correlation search."
})
boolean areSearchCriteriaMet() {
if(this.dataSourceMap.isEmpty()){
this.errorMessage = Bundle.IntraCasePanel_areSearchCriteriaMet_message();
return false;
} else {
return true;
}
}
} }