[shelve]: add remove files from patch strategy for multi changelist unshelving

This commit is contained in:
Nadya Zabrodina
2015-11-12 18:44:13 +03:00
parent 72b3fbd338
commit 292333663d
2 changed files with 31 additions and 20 deletions
@@ -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);
@@ -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;
}
}