From a18974d5ccadd11b014e8712cc77de065909d0b0 Mon Sep 17 00:00:00 2001 From: "Samuel H. Kenyon" Date: Wed, 18 Dec 2013 18:20:47 -0500 Subject: [PATCH] Implemented the removal functions in Mismatch Options. --- .../autopsy/fileextmismatch/Bundle.properties | 2 + .../FileExtMismatchConfigPanel.form | 38 ++++- .../FileExtMismatchConfigPanel.java | 136 ++++++++++++++++-- .../autopsy/fileextmismatch/save16.png | Bin 0 -> 609 bytes .../netbeans/core/startup/Bundle.properties | 2 +- .../core/windows/view/ui/Bundle.properties | 2 +- 6 files changed, 162 insertions(+), 18 deletions(-) create mode 100644 FileExtMismatch/src/org/sleuthkit/autopsy/fileextmismatch/save16.png diff --git a/FileExtMismatch/src/org/sleuthkit/autopsy/fileextmismatch/Bundle.properties b/FileExtMismatch/src/org/sleuthkit/autopsy/fileextmismatch/Bundle.properties index e96e52be7c..d628379ae2 100644 --- a/FileExtMismatch/src/org/sleuthkit/autopsy/fileextmismatch/Bundle.properties +++ b/FileExtMismatch/src/org/sleuthkit/autopsy/fileextmismatch/Bundle.properties @@ -12,3 +12,5 @@ FileExtMismatchConfigPanel.addTypeButton.text=Add Type FileExtMismatchConfigPanel.userTypeTextField.text= FileExtMismatchConfigPanel.extErrorLabel.text=\ FileExtMismatchConfigPanel.mimeErrLabel.text=\ +FileExtMismatchConfigPanel.mimeRemoveErrLabel.text=\ +FileExtMismatchConfigPanel.extRemoveErrLabel.text=\ diff --git a/FileExtMismatch/src/org/sleuthkit/autopsy/fileextmismatch/FileExtMismatchConfigPanel.form b/FileExtMismatch/src/org/sleuthkit/autopsy/fileextmismatch/FileExtMismatchConfigPanel.form index 66ea75f7eb..a0b78ffb78 100644 --- a/FileExtMismatch/src/org/sleuthkit/autopsy/fileextmismatch/FileExtMismatchConfigPanel.form +++ b/FileExtMismatch/src/org/sleuthkit/autopsy/fileextmismatch/FileExtMismatchConfigPanel.form @@ -20,9 +20,9 @@ - - + + @@ -44,6 +44,9 @@ + + + @@ -84,6 +87,7 @@ + @@ -108,7 +112,9 @@ - + + + @@ -160,6 +166,9 @@ + + + @@ -171,6 +180,13 @@ + + + + + + + @@ -197,6 +213,7 @@ + @@ -211,7 +228,7 @@ - + @@ -221,6 +238,9 @@ + + + @@ -265,6 +285,9 @@ + + + @@ -283,6 +306,13 @@ + + + + + + + diff --git a/FileExtMismatch/src/org/sleuthkit/autopsy/fileextmismatch/FileExtMismatchConfigPanel.java b/FileExtMismatch/src/org/sleuthkit/autopsy/fileextmismatch/FileExtMismatchConfigPanel.java index 7f5ecef3ba..4cac9255f0 100644 --- a/FileExtMismatch/src/org/sleuthkit/autopsy/fileextmismatch/FileExtMismatchConfigPanel.java +++ b/FileExtMismatch/src/org/sleuthkit/autopsy/fileextmismatch/FileExtMismatchConfigPanel.java @@ -43,7 +43,8 @@ public final class FileExtMismatchConfigPanel extends javax.swing.JPanel impleme private MimeTableModel mimeTableModel; private ExtTableModel extTableModel; private final String EXT_HEADER_LABEL = "Allowed Extensions for "; - private String selectedMime; + private String selectedMime = ""; + private String selectedExt = ""; ListSelectionModel lsm = null; public FileExtMismatchConfigPanel() { @@ -56,6 +57,8 @@ public final class FileExtMismatchConfigPanel extends javax.swing.JPanel impleme private void customizeComponents() { setName("Advanced File Extension Mismatch Configuration"); + + // Handle selections on the left table lsm = mimeTable.getSelectionModel(); lsm.addListSelectionListener(new ListSelectionListener() { @@ -73,7 +76,6 @@ public final class FileExtMismatchConfigPanel extends javax.swing.JPanel impleme } extHeaderLabel.setText(labelStr); currentExtensions = editableMap.get(selectedMime); - //listSelectionModel.setSelectionInterval(index, index); extTableModel.resync(); //initButtons(); @@ -81,10 +83,36 @@ public final class FileExtMismatchConfigPanel extends javax.swing.JPanel impleme selectedMime = ""; currentExtensions = null; extTableModel.resync(); - //initButtons(); } + + mimeErrLabel.setText(" "); + mimeRemoveErrLabel.setText(" "); + extRemoveErrLabel.setText(" "); + extErrorLabel.setText(" "); } }); + + // Handle selections on the right table + ListSelectionModel extLsm = extTable.getSelectionModel(); + extLsm.addListSelectionListener(new ListSelectionListener() { + + @Override + public void valueChanged(ListSelectionEvent e) { + ListSelectionModel listSelectionModel = (ListSelectionModel) e.getSource(); + if (!listSelectionModel.isSelectionEmpty()) { + int index = listSelectionModel.getMinSelectionIndex(); + listSelectionModel.setSelectionInterval(index, index); + + selectedExt = currentExtensions[index]; + } else { + selectedExt = ""; + } + + extRemoveErrLabel.setText(" "); + + } + }); + } /** @@ -105,6 +133,7 @@ public final class FileExtMismatchConfigPanel extends javax.swing.JPanel impleme addTypeButton = new javax.swing.JButton(); removeTypeButton = new javax.swing.JButton(); mimeErrLabel = new javax.swing.JLabel(); + mimeRemoveErrLabel = new javax.swing.JLabel(); extensionPanel = new javax.swing.JPanel(); userExtTextField = new javax.swing.JTextField(); addExtButton = new javax.swing.JButton(); @@ -113,7 +142,9 @@ public final class FileExtMismatchConfigPanel extends javax.swing.JPanel impleme removeExtButton = new javax.swing.JButton(); extHeaderLabel = new javax.swing.JLabel(); extErrorLabel = new javax.swing.JLabel(); + extRemoveErrLabel = new javax.swing.JLabel(); + saveButton.setIcon(new javax.swing.ImageIcon(getClass().getResource("/org/sleuthkit/autopsy/fileextmismatch/save16.png"))); // NOI18N saveButton.setText(org.openide.util.NbBundle.getMessage(FileExtMismatchConfigPanel.class, "FileExtMismatchConfigPanel.saveButton.text")); // NOI18N saveButton.setEnabled(false); saveButton.addActionListener(new java.awt.event.ActionListener() { @@ -144,10 +175,17 @@ public final class FileExtMismatchConfigPanel extends javax.swing.JPanel impleme }); removeTypeButton.setText(org.openide.util.NbBundle.getMessage(FileExtMismatchConfigPanel.class, "FileExtMismatchConfigPanel.removeTypeButton.text")); // NOI18N + removeTypeButton.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + removeTypeButtonActionPerformed(evt); + } + }); mimeErrLabel.setForeground(new java.awt.Color(255, 0, 0)); mimeErrLabel.setText(org.openide.util.NbBundle.getMessage(FileExtMismatchConfigPanel.class, "FileExtMismatchConfigPanel.mimeErrLabel.text")); // NOI18N + mimeRemoveErrLabel.setText(org.openide.util.NbBundle.getMessage(FileExtMismatchConfigPanel.class, "FileExtMismatchConfigPanel.mimeRemoveErrLabel.text")); // NOI18N + javax.swing.GroupLayout mimePanelLayout = new javax.swing.GroupLayout(mimePanel); mimePanel.setLayout(mimePanelLayout); mimePanelLayout.setHorizontalGroup( @@ -164,7 +202,8 @@ public final class FileExtMismatchConfigPanel extends javax.swing.JPanel impleme .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(addTypeButton)) .addComponent(removeTypeButton) - .addComponent(mimeErrLabel, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) + .addComponent(mimeErrLabel, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addComponent(mimeRemoveErrLabel, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) .addGap(0, 66, Short.MAX_VALUE))) .addContainerGap()) ); @@ -183,7 +222,9 @@ public final class FileExtMismatchConfigPanel extends javax.swing.JPanel impleme .addComponent(mimeErrLabel) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(removeTypeButton) - .addContainerGap(54, Short.MAX_VALUE)) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(mimeRemoveErrLabel) + .addContainerGap(73, Short.MAX_VALUE)) ); jSplitPane1.setLeftComponent(mimePanel); @@ -206,12 +247,19 @@ public final class FileExtMismatchConfigPanel extends javax.swing.JPanel impleme jScrollPane3.setViewportView(extTable); removeExtButton.setText(org.openide.util.NbBundle.getMessage(FileExtMismatchConfigPanel.class, "FileExtMismatchConfigPanel.removeExtButton.text")); // NOI18N + removeExtButton.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + removeExtButtonActionPerformed(evt); + } + }); extHeaderLabel.setText(org.openide.util.NbBundle.getMessage(FileExtMismatchConfigPanel.class, "FileExtMismatchConfigPanel.extHeaderLabel.text")); // NOI18N extErrorLabel.setForeground(new java.awt.Color(255, 0, 0)); extErrorLabel.setText(org.openide.util.NbBundle.getMessage(FileExtMismatchConfigPanel.class, "FileExtMismatchConfigPanel.extErrorLabel.text")); // NOI18N + extRemoveErrLabel.setText(org.openide.util.NbBundle.getMessage(FileExtMismatchConfigPanel.class, "FileExtMismatchConfigPanel.extRemoveErrLabel.text")); // NOI18N + javax.swing.GroupLayout extensionPanelLayout = new javax.swing.GroupLayout(extensionPanel); extensionPanel.setLayout(extensionPanelLayout); extensionPanelLayout.setHorizontalGroup( @@ -228,7 +276,8 @@ public final class FileExtMismatchConfigPanel extends javax.swing.JPanel impleme .addComponent(userExtTextField, javax.swing.GroupLayout.PREFERRED_SIZE, 48, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(addExtButton, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) - .addComponent(extErrorLabel, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) + .addComponent(extErrorLabel, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addComponent(extRemoveErrLabel, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) .addGap(0, 31, Short.MAX_VALUE))) .addContainerGap()) ); @@ -238,7 +287,7 @@ public final class FileExtMismatchConfigPanel extends javax.swing.JPanel impleme .addContainerGap() .addComponent(extHeaderLabel) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(jScrollPane3, javax.swing.GroupLayout.DEFAULT_SIZE, 305, Short.MAX_VALUE) + .addComponent(jScrollPane3, javax.swing.GroupLayout.PREFERRED_SIZE, 313, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) .addGroup(extensionPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(userExtTextField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) @@ -246,7 +295,10 @@ public final class FileExtMismatchConfigPanel extends javax.swing.JPanel impleme .addGap(2, 2, 2) .addComponent(extErrorLabel) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(removeExtButton)) + .addComponent(removeExtButton) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(extRemoveErrLabel) + .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) ); jSplitPane1.setRightComponent(extensionPanel); @@ -259,9 +311,9 @@ public final class FileExtMismatchConfigPanel extends javax.swing.JPanel impleme .addContainerGap() .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(jSplitPane1) - .addGroup(layout.createSequentialGroup() - .addComponent(saveButton) - .addGap(0, 0, Short.MAX_VALUE))) + .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup() + .addGap(0, 0, Short.MAX_VALUE) + .addComponent(saveButton))) .addContainerGap()) ); layout.setVerticalGroup( @@ -284,6 +336,12 @@ public final class FileExtMismatchConfigPanel extends javax.swing.JPanel impleme return; } + if (selectedMime.isEmpty()) { + extErrorLabel.setForeground(Color.red); + extErrorLabel.setText("No MIME type selected!"); + return; + } + ArrayList editedExtensions = new ArrayList<>(Arrays.asList(editableMap.get(selectedMime))); editedExtensions.add(newExt); @@ -296,7 +354,8 @@ public final class FileExtMismatchConfigPanel extends javax.swing.JPanel impleme // user feedback for successful add extErrorLabel.setForeground(Color.blue); - extErrorLabel.setText("Extension " + newExt + " added."); + extErrorLabel.setText("Extension " + newExt + " added."); + extRemoveErrLabel.setText(" "); userExtTextField.setText(""); }//GEN-LAST:event_addExtButtonActionPerformed @@ -322,6 +381,7 @@ public final class FileExtMismatchConfigPanel extends javax.swing.JPanel impleme //selectByMimeString(newMime); mimeErrLabel.setForeground(Color.blue); mimeErrLabel.setText("MIME type " + newMime + " added."); + mimeRemoveErrLabel.setText(" "); userTypeTextField.setText(""); saveButton.setEnabled(true); }//GEN-LAST:event_addTypeButtonActionPerformed @@ -334,6 +394,56 @@ public final class FileExtMismatchConfigPanel extends javax.swing.JPanel impleme mimeErrLabel.setText(" "); //space so Swing doesn't mess up vertical spacing }//GEN-LAST:event_userTypeTextFieldFocusGained + private void removeTypeButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_removeTypeButtonActionPerformed + if (selectedMime.isEmpty()) { + mimeRemoveErrLabel.setForeground(Color.red); + mimeRemoveErrLabel.setText("No MIME type selected!"); + return; + } + + editableMap.remove(selectedMime); + String deadMime = selectedMime; + + // Refresh table + updateMimeList(); + mimeTableModel.resync(); + + // user feedback for successful add + mimeRemoveErrLabel.setForeground(Color.blue); + mimeRemoveErrLabel.setText("MIME type " + deadMime + " deleted."); + saveButton.setEnabled(true); + }//GEN-LAST:event_removeTypeButtonActionPerformed + + private void removeExtButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_removeExtButtonActionPerformed + if (selectedExt.isEmpty()) { + extRemoveErrLabel.setForeground(Color.red); + extRemoveErrLabel.setText("No extension selected!"); + return; + } + + if (selectedMime.isEmpty()) { + extErrorLabel.setForeground(Color.red); + extErrorLabel.setText("No MIME type selected!"); + return; + } + + ArrayList editedExtensions = new ArrayList<>(Arrays.asList(editableMap.get(selectedMime))); + editedExtensions.remove(selectedExt); + String deadExt = selectedExt; + + // Old array will be replaced by new array for this key + editableMap.put(selectedMime, editedExtensions.toArray(new String[0])); + + // Refresh tables + //mimeTableModel.resync(); + extTableModel.resync(); + + // user feedback for successful add + extRemoveErrLabel.setForeground(Color.blue); + extRemoveErrLabel.setText("Extension " + deadExt + " deleted."); + saveButton.setEnabled(true); + }//GEN-LAST:event_removeExtButtonActionPerformed + private void updateMimeList() { mimeList = editableMap.keySet().toArray(new String[0]); } @@ -370,6 +480,7 @@ public final class FileExtMismatchConfigPanel extends javax.swing.JPanel impleme private javax.swing.JButton addTypeButton; private javax.swing.JLabel extErrorLabel; private javax.swing.JLabel extHeaderLabel; + private javax.swing.JLabel extRemoveErrLabel; private javax.swing.JTable extTable; private javax.swing.JPanel extensionPanel; private javax.swing.JLabel jLabel1; @@ -378,6 +489,7 @@ public final class FileExtMismatchConfigPanel extends javax.swing.JPanel impleme private javax.swing.JSplitPane jSplitPane1; private javax.swing.JLabel mimeErrLabel; private javax.swing.JPanel mimePanel; + private javax.swing.JLabel mimeRemoveErrLabel; private javax.swing.JTable mimeTable; private javax.swing.JButton removeExtButton; private javax.swing.JButton removeTypeButton; diff --git a/FileExtMismatch/src/org/sleuthkit/autopsy/fileextmismatch/save16.png b/FileExtMismatch/src/org/sleuthkit/autopsy/fileextmismatch/save16.png new file mode 100644 index 0000000000000000000000000000000000000000..1f0caa834614caa44f648436bdb36118617423c8 GIT binary patch literal 609 zcmV-n0-pVeP)f6~h-JEfSXc=bDa8~jqJN5=g*J9pA(dLFq!3YK z>(5;9lDl_rXLrWp-Wdgxfn|qf=KG!Rch+^gvyU%bS-5=h!ufFO#9T-zv0FGCjYM9& zTGQ2)=a1gMTU#o!>P(Ds;M&zijvqU+Yx6Wlb;HW)D~_K$y#Oo~05L{X70JqY-0a%y zodf5{Ib)^(6qu1xLQNUgk!Bosm*5;#Ss;=~A}s)rM9A5w$C0Ml8z2OSNJLt%3TpvO zm2o39jqC}~DGNk|ENMqV6hRHV3n(7U{?iQ}kKqszB+1SMX3B?;A31mS44tl@(&5}B zHRBKH=k;~A1_P$+E~W&_%Xd&Ug7?h!W+{ppVx0J)s^pv}W^1ObDsuiyg2<$Bw%6n4 zjq9A5pC{#v!w6x*@oD`NPo6&G&D%93MS}M`5=0_~qpO*tbBDRLe3vg@zwzMSZT9cq zhpKYu-~r02#0+vuXsd5xVmoTnl=S<3Bt|r623rHnCgXQH74>LDj15HyIPZ2mNFt~i z5+ik8GaL;W4ksr#M^