diff --git a/platform/vcs-impl/src/com/intellij/openapi/vcs/changes/shelf/ShelveChangesManager.java b/platform/vcs-impl/src/com/intellij/openapi/vcs/changes/shelf/ShelveChangesManager.java index d7dc62d14c7d..38225bfab730 100644 --- a/platform/vcs-impl/src/com/intellij/openapi/vcs/changes/shelf/ShelveChangesManager.java +++ b/platform/vcs-impl/src/com/intellij/openapi/vcs/changes/shelf/ShelveChangesManager.java @@ -564,14 +564,14 @@ public class ShelveChangesManager extends AbstractProjectComponent implements JD patches, targetChangeList, binaryPatchApplier, commitContext, reverse, leftConflictTitle, rightConflictTitle); patchApplier.setIsSystemOperation(systemOperation); - - remainingPatches.addAll(patchApplier.getRemainingPatches()); - - if (remainingPatches.isEmpty() && remainingBinaries.isEmpty()) { - recycleChangeList(changeList); - } - else { - saveRemainingPatches(changeList, remainingPatches, remainingBinaries, commitContext); + if (isRemoveFilesFromShelf()) { + remainingPatches.addAll(patchApplier.getRemainingPatches()); + if (remainingPatches.isEmpty() && remainingBinaries.isEmpty()) { + recycleChangeList(changeList); + } + else { + saveRemainingPatches(changeList, remainingPatches, remainingBinaries, commitContext); + } } patchApplier.execute(showSuccessNotification, systemOperation); diff --git a/platform/vcs-impl/src/com/intellij/openapi/vcs/changes/shelf/UnshelveWithDialogAction.java b/platform/vcs-impl/src/com/intellij/openapi/vcs/changes/shelf/UnshelveWithDialogAction.java index 2bbe80083914..44856c2e877c 100644 --- a/platform/vcs-impl/src/com/intellij/openapi/vcs/changes/shelf/UnshelveWithDialogAction.java +++ b/platform/vcs-impl/src/com/intellij/openapi/vcs/changes/shelf/UnshelveWithDialogAction.java @@ -95,7 +95,14 @@ public class UnshelveWithDialogAction extends DumbAwareAction { final ChangeListManager changeListManager = ChangeListManager.getInstance(project); final ChangeListChooser chooser = new ChangeListChooser(project, changeListManager.getChangeListsCopy(), changeListManager.getDefaultChangeList(), - VcsBundle.message("unshelve.changelist.chooser.title"), defaultName); + VcsBundle.message("unshelve.changelist.chooser.title"), defaultName) { + @Nullable + @Override + protected JComponent createSouthPanel() { + return addDoNotShowCheckBox(ObjectUtils.assertNotNull(super.createSouthPanel()), createRemoveFilesStrategyCheckbox(project)); + } + }; + if (!chooser.showAndGet()) return; //todo accept empty collections as a nullable to avoid ugly checks and reassignments @@ -140,17 +147,21 @@ public class UnshelveWithDialogAction extends DumbAwareAction { @Nullable @Override protected JComponent createSouthPanel() { - JComponent southPanel = ObjectUtils.assertNotNull(super.createSouthPanel()); - final JCheckBox removeOptionCheckBox = new JCheckBox("Remove successfully applied files from shelf"); - final ShelveChangesManager shelveChangesManager = ShelveChangesManager.getInstance(myProject); - removeOptionCheckBox.setSelected(shelveChangesManager.isRemoveFilesFromShelf()); - removeOptionCheckBox.addActionListener(new ActionListener() { - @Override - public void actionPerformed(ActionEvent e) { - shelveChangesManager.setRemoveFilesFromShelf(removeOptionCheckBox.isSelected()); - } - }); - return addDoNotShowCheckBox(southPanel, removeOptionCheckBox); + return addDoNotShowCheckBox(ObjectUtils.assertNotNull(super.createSouthPanel()), createRemoveFilesStrategyCheckbox(myProject)); } } + + @NotNull + private static JCheckBox createRemoveFilesStrategyCheckbox(@NotNull Project project) { + final JCheckBox removeOptionCheckBox = new JCheckBox("Remove successfully applied files from shelf"); + final ShelveChangesManager shelveChangesManager = ShelveChangesManager.getInstance(project); + removeOptionCheckBox.setSelected(shelveChangesManager.isRemoveFilesFromShelf()); + removeOptionCheckBox.addActionListener(new ActionListener() { + @Override + public void actionPerformed(ActionEvent e) { + shelveChangesManager.setRemoveFilesFromShelf(removeOptionCheckBox.isSelected()); + } + }); + return removeOptionCheckBox; + } }