diff --git a/platform/vcs-impl/src/com/intellij/openapi/vcs/changes/shelf/ShelvedChangesViewManager.java b/platform/vcs-impl/src/com/intellij/openapi/vcs/changes/shelf/ShelvedChangesViewManager.java index 8446ad424f6a..219d00b2b078 100644 --- a/platform/vcs-impl/src/com/intellij/openapi/vcs/changes/shelf/ShelvedChangesViewManager.java +++ b/platform/vcs-impl/src/com/intellij/openapi/vcs/changes/shelf/ShelvedChangesViewManager.java @@ -78,6 +78,7 @@ import java.util.*; import java.util.List; import static com.intellij.util.FontUtil.spaceAndThinSpace; +import static com.intellij.util.containers.ContainerUtil.notNullize; public class ShelvedChangesViewManager implements ProjectComponent { @@ -525,11 +526,13 @@ public class ShelvedChangesViewManager implements ProjectComponent { ArrayList shelvedListsFromChanges = ContainerUtil.newArrayList(getLists(dataContext)); // filter changes shelvedListsFromChanges.removeAll(shelvedListsToDelete); - List filteredChanges = getFilteredChanges(shelvedListsToDelete, SHELVED_CHANGE_KEY.getData(dataContext)); - List filteredBinaries = getFilteredBinaries(shelvedListsToDelete, SHELVED_BINARY_FILE_KEY.getData(dataContext)); + List changesToDelete = + getChangesNotInLists(shelvedListsToDelete, notNullize(SHELVED_CHANGE_KEY.getData(dataContext))); + List binariesToDelete = + getBinariesNotInLists(shelvedListsToDelete, notNullize(SHELVED_BINARY_FILE_KEY.getData(dataContext))); int changeListSize = shelvedListsToDelete.size(); - int fileListSize = filteredBinaries.size() + filteredChanges.size(); + int fileListSize = binariesToDelete.size() + changesToDelete.size(); if (fileListSize == 0 && changeListSize == 0) return; String message = VcsBundle.message("shelve.changes.delete.items.confirm", constructDeleteFilesInfoMessage(fileListSize), @@ -543,13 +546,12 @@ public class ShelvedChangesViewManager implements ProjectComponent { ShelveChangesManager.getInstance(myProject).deleteChangeList(changeList); } for (ShelvedChangeList list : shelvedListsFromChanges) { - removeChangesFromChangeList(project, list, filteredChanges, filteredBinaries); + removeChangesFromChangeList(project, list, changesToDelete, binariesToDelete); } } - private List getFilteredBinaries(@NotNull List listsToDelete, - @Nullable List binaryFiles) { - if (binaryFiles == null) return Collections.emptyList(); + private List getBinariesNotInLists(@NotNull List listsToDelete, + @NotNull List binaryFiles) { List result = new ArrayList<>(binaryFiles); for (ShelvedChangeList list : listsToDelete) { result.removeAll(list.getBinaryFiles()); @@ -558,9 +560,8 @@ public class ShelvedChangesViewManager implements ProjectComponent { } @NotNull - private List getFilteredChanges(@NotNull List listsToDelete, - @Nullable List shelvedChanges) { - if (shelvedChanges == null) return Collections.emptyList(); + private List getChangesNotInLists(@NotNull List listsToDelete, + @NotNull List shelvedChanges) { List result = new ArrayList<>(shelvedChanges); for (ShelvedChangeList list : listsToDelete) { result.removeAll(list.getChanges(myProject)); @@ -625,12 +626,12 @@ public class ShelvedChangesViewManager implements ProjectComponent { return !getLists(dataContext).isEmpty(); } + @NotNull private List getLists(@NotNull final DataContext dataContext) { final ShelvedChangeList[] shelved = SHELVED_CHANGELIST_KEY.getData(dataContext); final ShelvedChangeList[] recycled = SHELVED_RECYCLED_CHANGELIST_KEY.getData(dataContext); - - final List shelvedChangeLists = (shelved == null && recycled == null) ? - Collections.emptyList() : new ArrayList(); + if (shelved == null && recycled == null) return Collections.emptyList(); + List shelvedChangeLists = ContainerUtil.newArrayList(); if (shelved != null) { ContainerUtil.addAll(shelvedChangeLists, shelved); }