diff --git a/Core/src/org/sleuthkit/autopsy/casemodule/LocalFilesPanel.java b/Core/src/org/sleuthkit/autopsy/casemodule/LocalFilesPanel.java index 0bdb52b4fd124cd25833250377ea27991a80c86c..ac38a6d3e908c04c68a90cee165c76786010ef5c 100644 --- a/Core/src/org/sleuthkit/autopsy/casemodule/LocalFilesPanel.java +++ b/Core/src/org/sleuthkit/autopsy/casemodule/LocalFilesPanel.java @@ -19,6 +19,7 @@ package org.sleuthkit.autopsy.casemodule; import java.io.File; +import java.util.Arrays; import java.util.Collections; import java.util.Comparator; import java.util.List; @@ -330,12 +331,7 @@ private void changeNameButtonActionPerformed(java.awt.event.ActionEvent evt) {// }//GEN-LAST:event_changeNameButtonActionPerformed private void deleteButonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_deleteButonActionPerformed - int minIdx = this.fileList.getMinSelectionIndex(); - int maxIdx = this.fileList.getMaxSelectionIndex(); - - if (minIdx >= 0 && maxIdx >= minIdx) { - this.listModel.remove(minIdx, maxIdx); - } + this.listModel.remove(this.fileList.getSelectedIndices()); this.fileList.clearSelection(); enableNext = !this.listModel.getFiles().isEmpty(); @@ -516,16 +512,26 @@ void add(File... files) { } /** - * Removes files in the list starting at minIdx going to maxIdx. - * - * @param minIdx The minimum index of items to be removed. - * @param maxIdx The maximum index to be removed. + * Removes the selected indices. + * @param selectedIndices The selected indices. */ - void remove(int minIdx, int maxIdx) { - for (int i = maxIdx; i >= minIdx; i--) { - items.remove(i); + void remove(int[] selectedIndices) { + if (selectedIndices != null) { + Iterable<Integer> sortedIndices = (Iterable<Integer>) () -> Arrays.stream(selectedIndices) + .mapToObj(i -> i) + // reverse order to remove highest index to lowest index + .sorted((a,b) -> Integer.compare(b, a)) + .iterator(); + + int prevIdxMax = items.size() - 1; + for (Integer idx: sortedIndices) { + if (idx != null && idx >= 0 && idx < this.items.size()) { + this.items.remove((int) idx); + } + } + + this.fireContentsChanged(this, 0, prevIdxMax); } - this.fireContentsChanged(this, 0, items.size() - 1); } /**