changelist conflict dialog refactored
[fedora-idea.git] / platform / vcs-impl / src / com / intellij / openapi / vcs / changes / conflicts / ChangelistConflictResolution.java
blobdb5213b957b8a882d66c186eb0d34352633b49df
1 package com.intellij.openapi.vcs.changes.conflicts;
3 import com.intellij.openapi.project.Project;
4 import com.intellij.openapi.vcs.changes.*;
5 import com.intellij.openapi.vcs.changes.shelf.ShelveChangesCommitExecutor;
6 import com.intellij.openapi.vcs.changes.ui.CommitChangeListDialog;
7 import com.intellij.openapi.vfs.VirtualFile;
9 import java.util.Collection;
10 import java.util.HashSet;
11 import java.util.Set;
13 /**
14 * @author Dmitry Avdeev
16 public enum ChangelistConflictResolution {
18 SHELVE {
19 @Override
20 public boolean resolveConflict(Project project, Collection<Change> changes) {
21 LocalChangeList changeList = getManager(project).getChangeList(changes.iterator().next());
22 return CommitChangeListDialog.commitChanges(project, changes, changeList, new ShelveChangesCommitExecutor(project), null);
23 }},
25 MOVE {
26 @Override
27 public boolean resolveConflict(Project project, Collection<Change> changes) {
28 ChangeListManagerImpl manager = getManager(project);
29 Set<ChangeList> changeLists = new HashSet<ChangeList>();
30 for (Change change : changes) {
31 changeLists.add(manager.getChangeList(change));
33 MoveChangesDialog dialog = new MoveChangesDialog(project, changes, changeLists, "Move Changes");
34 dialog.show();
35 if (dialog.isOK()) {
36 manager.moveChangesTo(manager.getDefaultChangeList(), changes.toArray(new Change[changes.size()]));
37 return true;
39 return false;
40 }},
42 SWITCH{
43 @Override
44 public boolean resolveConflict(Project project, Collection<Change> changes) {
45 LocalChangeList changeList = getManager(project).getChangeList(changes.iterator().next());
46 assert changeList != null;
47 getManager(project).setDefaultChangeList(changeList);
48 return true;
49 }},
51 IGNORE {
52 @Override
53 public boolean resolveConflict(Project project, Collection<Change> changes) {
54 ChangeListManagerImpl manager = getManager(project);
55 for (Change change : changes) {
56 VirtualFile file = change.getVirtualFile();
57 if (file != null) {
58 manager.getConflictTracker().ignoreConflict(file, true);
61 return true;
62 }};
64 public abstract boolean resolveConflict(Project project, Collection<Change> changes);
66 private static ChangeListManagerImpl getManager(Project project) {
67 return (ChangeListManagerImpl)ChangeListManager.getInstance(project);