diff --git a/plugins/svn4idea/src/org/jetbrains/idea/svn/dialogs/CopiesPanel.java b/plugins/svn4idea/src/org/jetbrains/idea/svn/dialogs/CopiesPanel.java index e53136fe2c85..d40e91cd1c90 100644 --- a/plugins/svn4idea/src/org/jetbrains/idea/svn/dialogs/CopiesPanel.java +++ b/plugins/svn4idea/src/org/jetbrains/idea/svn/dialogs/CopiesPanel.java @@ -369,7 +369,7 @@ public class CopiesPanel { String workingCopyUrlInSelectedBranch = getCorrespondingUrlInOtherBranch(configuration, wcInfo.getUrl(), branchUrl); MergeContext mergeContext = new MergeContext(myVcs, workingCopyUrlInSelectedBranch, wcInfo, SVNPathUtil.tail(branchUrl), root); - new QuickMerge(mergeContext).execute(new QuickMergeInteractionImpl(myProject)); + new QuickMerge(mergeContext).execute(new QuickMergeInteractionImpl(mergeContext)); } }, "Select branch", mergeLabel); } diff --git a/plugins/svn4idea/src/org/jetbrains/idea/svn/integrate/LocalChangesAction.java b/plugins/svn4idea/src/org/jetbrains/idea/svn/integrate/LocalChangesAction.java index 4dfe3fabc4a0..f41ccd572e31 100644 --- a/plugins/svn4idea/src/org/jetbrains/idea/svn/integrate/LocalChangesAction.java +++ b/plugins/svn4idea/src/org/jetbrains/idea/svn/integrate/LocalChangesAction.java @@ -15,15 +15,22 @@ */ package org.jetbrains.idea.svn.integrate; -/** -* Created with IntelliJ IDEA. -* User: Irina.Chernushina -* Date: 3/27/13 -* Time: 12:37 PM -*/ +import org.jetbrains.annotations.NotNull; + public enum LocalChangesAction { - cancel, - continueMerge, - shelve, - inspect + cancel("Cancel"), + continueMerge("Continue merge"), + shelve("Shelve local changes"), + inspect("Inspect changes"); + + @NotNull private final String myTitle; + + LocalChangesAction(@NotNull String title) { + myTitle = title; + } + + @Override + public String toString() { + return myTitle; + } } diff --git a/plugins/svn4idea/src/org/jetbrains/idea/svn/integrate/MergeAllWithBranchCopyPointTask.java b/plugins/svn4idea/src/org/jetbrains/idea/svn/integrate/MergeAllWithBranchCopyPointTask.java index 9536f38262ce..5951998131df 100644 --- a/plugins/svn4idea/src/org/jetbrains/idea/svn/integrate/MergeAllWithBranchCopyPointTask.java +++ b/plugins/svn4idea/src/org/jetbrains/idea/svn/integrate/MergeAllWithBranchCopyPointTask.java @@ -80,7 +80,7 @@ public class MergeAllWithBranchCopyPointTask extends BaseMergeTask private void runMerge(@NotNull ContinuationContext context, @NotNull SvnBranchPointsCalculator.WrapperInvertor inverter) { boolean reintegrate = inverter.isInvertedSense(); - if (reintegrate && !myInteraction.shouldReintegrate(myMergeContext.getSourceUrl(), inverter.inverted().getTarget())) { + if (reintegrate && !myInteraction.shouldReintegrate(inverter.inverted().getTarget())) { context.cancelEverything(); } else { diff --git a/plugins/svn4idea/src/org/jetbrains/idea/svn/integrate/QuickMerge.java b/plugins/svn4idea/src/org/jetbrains/idea/svn/integrate/QuickMerge.java index 717bcd548af0..462683f78e8f 100644 --- a/plugins/svn4idea/src/org/jetbrains/idea/svn/integrate/QuickMerge.java +++ b/plugins/svn4idea/src/org/jetbrains/idea/svn/integrate/QuickMerge.java @@ -45,7 +45,6 @@ public class QuickMerge { @CalledInAwt public void execute(@NotNull final QuickMergeInteraction interaction, @NotNull final TaskDescriptor... finalTasks) { myInteraction = interaction; - myInteraction.setTitle(myMergeContext.getTitle()); FileDocumentManager.getInstance().saveAllDocuments(); diff --git a/plugins/svn4idea/src/org/jetbrains/idea/svn/integrate/QuickMergeInteraction.java b/plugins/svn4idea/src/org/jetbrains/idea/svn/integrate/QuickMergeInteraction.java index abf196bf61e1..d6c885994f6e 100644 --- a/plugins/svn4idea/src/org/jetbrains/idea/svn/integrate/QuickMergeInteraction.java +++ b/plugins/svn4idea/src/org/jetbrains/idea/svn/integrate/QuickMergeInteraction.java @@ -26,14 +26,13 @@ import org.jetbrains.idea.svn.mergeinfo.MergeChecker; import java.util.List; public interface QuickMergeInteraction { - void setTitle(@NotNull String title); @NotNull QuickMergeContentsVariants selectMergeVariant(); boolean shouldContinueSwitchedRootFound(); - boolean shouldReintegrate(@NotNull String sourceUrl, @NotNull String targetUrl); + boolean shouldReintegrate(@NotNull String targetUrl); @NotNull SelectMergeItemsResult selectMergeItems(@NotNull List lists, @@ -51,7 +50,6 @@ public interface QuickMergeInteraction { @NotNull List showRecentListsForSelection(@NotNull List list, - @NotNull String mergeTitle, @NotNull MergeChecker mergeChecker, @NotNull PairConsumer loader, boolean everyThingLoaded); diff --git a/plugins/svn4idea/src/org/jetbrains/idea/svn/integrate/QuickMergeInteractionImpl.java b/plugins/svn4idea/src/org/jetbrains/idea/svn/integrate/QuickMergeInteractionImpl.java index 4ec773794e52..ce62a167924f 100644 --- a/plugins/svn4idea/src/org/jetbrains/idea/svn/integrate/QuickMergeInteractionImpl.java +++ b/plugins/svn4idea/src/org/jetbrains/idea/svn/integrate/QuickMergeInteractionImpl.java @@ -19,7 +19,6 @@ import com.intellij.openapi.project.Project; import com.intellij.openapi.ui.DialogBuilder; import com.intellij.openapi.ui.DialogWrapper; import com.intellij.openapi.ui.MessageType; -import com.intellij.openapi.ui.Messages; import com.intellij.openapi.vcs.AbstractVcsHelper; import com.intellij.openapi.vcs.FilePath; import com.intellij.openapi.vcs.VcsException; @@ -33,35 +32,31 @@ import org.jetbrains.idea.svn.mergeinfo.MergeChecker; import java.util.List; -import static java.util.Collections.emptyList; +import static com.intellij.openapi.ui.Messages.*; +import static com.intellij.util.Functions.TO_STRING; +import static com.intellij.util.containers.ContainerUtil.emptyList; +import static com.intellij.util.containers.ContainerUtil.map2Array; +import static org.jetbrains.idea.svn.integrate.LocalChangesAction.*; -/** - * Created with IntelliJ IDEA. - * User: Irina.Chernushina - * Date: 3/27/13 - * Time: 11:40 AM - */ public class QuickMergeInteractionImpl implements QuickMergeInteraction { - private final Project myProject; - private String myTitle; - public QuickMergeInteractionImpl(Project project) { - myProject = project; - } + @NotNull private final MergeContext myMergeContext; + @NotNull private final Project myProject; + @NotNull private final String myTitle; - @Override - public void setTitle(@NotNull String title) { - myTitle = title; + public QuickMergeInteractionImpl(@NotNull MergeContext mergeContext) { + myMergeContext = mergeContext; + myProject = mergeContext.getProject(); + myTitle = mergeContext.getTitle(); } @NotNull @Override public QuickMergeContentsVariants selectMergeVariant() { - final QuickMergeWayOptionsPanel panel = new QuickMergeWayOptionsPanel(); - final DialogBuilder builder = new DialogBuilder(myProject); - builder.removeAllActions(); - builder.setTitle("Select Merge Variant"); - builder.setCenterPanel(panel.getMainPanel()); + QuickMergeWayOptionsPanel panel = new QuickMergeWayOptionsPanel(); + DialogBuilder builder = new DialogBuilder(myProject); + + builder.title("Select Merge Variant").centerPanel(panel.getMainPanel()).removeAllActions(); panel.setWrapper(builder.getDialogWrapper()); builder.show(); @@ -74,8 +69,9 @@ public class QuickMergeInteractionImpl implements QuickMergeInteraction { } @Override - public boolean shouldReintegrate(@NotNull String sourceUrl, @NotNull String targetUrl) { - return prompt("You are going to reintegrate changes.

This will make branch '" + sourceUrl + + public boolean shouldReintegrate(@NotNull String targetUrl) { + return prompt("You are going to reintegrate changes.

This will make branch '" + + myMergeContext.getSourceUrl() + "' no longer usable for further work." + "
It will not be able to correctly absorb new trunk (" + targetUrl + ") changes,
nor can this branch be properly reintegrated to trunk again.

Are you sure?"); @@ -86,17 +82,21 @@ public class QuickMergeInteractionImpl implements QuickMergeInteraction { public SelectMergeItemsResult selectMergeItems(@NotNull List lists, @NotNull String mergeTitle, @NotNull MergeChecker mergeChecker) { - final ToBeMergedDialog dialog = new ToBeMergedDialog(myProject, lists, mergeTitle, mergeChecker, null); + ToBeMergedDialog dialog = new ToBeMergedDialog(myProject, lists, mergeTitle, mergeChecker, null); dialog.show(); + return new SelectMergeItemsResult() { @NotNull @Override public QuickMergeContentsVariants getResultCode() { - final int code = dialog.getExitCode(); - if (ToBeMergedDialog.MERGE_ALL_CODE == code) { - return QuickMergeContentsVariants.all; + switch (dialog.getExitCode()) { + case ToBeMergedDialog.MERGE_ALL_CODE: + return QuickMergeContentsVariants.all; + case DialogWrapper.OK_EXIT_CODE: + return QuickMergeContentsVariants.select; + default: + return QuickMergeContentsVariants.cancel; } - return DialogWrapper.OK_EXIT_CODE == code ? QuickMergeContentsVariants.select : QuickMergeContentsVariants.cancel; } @NotNull @@ -109,21 +109,20 @@ public class QuickMergeInteractionImpl implements QuickMergeInteraction { @NotNull @Override - public LocalChangesAction selectLocalChangesAction(final boolean mergeAll) { - if (! mergeAll) { - final LocalChangesAction[] possibleResults = {LocalChangesAction.shelve, LocalChangesAction.inspect, - LocalChangesAction.continueMerge, LocalChangesAction.cancel}; - final int result = Messages.showDialog("There are local changes that will intersect with merge changes.\nDo you want to continue?", myTitle, - new String[]{"Shelve local changes", "Inspect changes", "Continue merge", "Cancel"}, - 0, Messages.getQuestionIcon()); - return possibleResults[result]; + public LocalChangesAction selectLocalChangesAction(boolean mergeAll) { + LocalChangesAction[] possibleResults; + String message; + + if (!mergeAll) { + possibleResults = new LocalChangesAction[]{shelve, inspect, continueMerge, cancel}; + message = "There are local changes that will intersect with merge changes.\nDo you want to continue?"; } else { - final LocalChangesAction[] possibleResults = {LocalChangesAction.shelve, LocalChangesAction.continueMerge, LocalChangesAction.cancel}; - final int result = Messages.showDialog("There are local changes that can potentially intersect with merge changes.\nDo you want to continue?", myTitle, - new String[]{"Shelve local changes", "Continue merge", "Cancel"}, - 0, Messages.getQuestionIcon()); - return possibleResults[result]; + possibleResults = new LocalChangesAction[]{shelve, continueMerge, cancel}; + message = "There are local changes that can potentially intersect with merge changes.\nDo you want to continue?"; } + + int result = showDialog(message, myTitle, map2Array(possibleResults, String.class, TO_STRING()), 0, getQuestionIcon()); + return possibleResults[result]; } @Override @@ -145,22 +144,17 @@ public class QuickMergeInteractionImpl implements QuickMergeInteraction { @NotNull @Override public List showRecentListsForSelection(@NotNull List list, - @NotNull String mergeTitle, @NotNull MergeChecker mergeChecker, @NotNull PairConsumer loader, boolean everyThingLoaded) { - final ToBeMergedDialog dialog = new ToBeMergedDialog(myProject, list, mergeTitle, mergeChecker, loader); + ToBeMergedDialog dialog = new ToBeMergedDialog(myProject, list, myMergeContext.getTitle(), mergeChecker, loader); if (everyThingLoaded) { dialog.setEverythingLoaded(true); } - dialog.show(); - if (DialogWrapper.OK_EXIT_CODE == dialog.getExitCode()) { - return dialog.getSelected(); - } - return emptyList(); + return dialog.showAndGet() ? dialog.getSelected() : emptyList(); } private boolean prompt(@NotNull String question) { - return Messages.showOkCancelDialog(myProject, question, myTitle, Messages.getQuestionIcon()) == Messages.OK; + return showOkCancelDialog(myProject, question, myTitle, getQuestionIcon()) == OK; } } diff --git a/plugins/svn4idea/src/org/jetbrains/idea/svn/integrate/ShowRecentInDialogTask.java b/plugins/svn4idea/src/org/jetbrains/idea/svn/integrate/ShowRecentInDialogTask.java index 718f7145132c..ddd1be144bb9 100644 --- a/plugins/svn4idea/src/org/jetbrains/idea/svn/integrate/ShowRecentInDialogTask.java +++ b/plugins/svn4idea/src/org/jetbrains/idea/svn/integrate/ShowRecentInDialogTask.java @@ -49,7 +49,6 @@ public class ShowRecentInDialogTask extends BaseMergeTask { @Override public void run(ContinuationContext context) { List lists = myInteraction.showRecentListsForSelection(myInitialChangeListsLoader.getCommittedChangeLists(), - myMergeContext.getTitle(), myInitialChangeListsLoader.getHelper(), createMoreChangeListsLoader(), myInitialChangeListsLoader.isLastLoaded()); diff --git a/plugins/svn4idea/testSource/org/jetbrains/idea/svn/QuickMergeTestInteraction.java b/plugins/svn4idea/testSource/org/jetbrains/idea/svn/QuickMergeTestInteraction.java index 15dd10b9abb3..7e9ccf67a9ce 100644 --- a/plugins/svn4idea/testSource/org/jetbrains/idea/svn/QuickMergeTestInteraction.java +++ b/plugins/svn4idea/testSource/org/jetbrains/idea/svn/QuickMergeTestInteraction.java @@ -43,10 +43,6 @@ public class QuickMergeTestInteraction implements QuickMergeInteraction { myExceptions = newArrayList(); } - @Override - public void setTitle(@NotNull String title) { - } - @NotNull @Override public QuickMergeContentsVariants selectMergeVariant() { @@ -63,7 +59,7 @@ public class QuickMergeTestInteraction implements QuickMergeInteraction { } @Override - public boolean shouldReintegrate(@NotNull String sourceUrl, @NotNull String targetUrl) { + public boolean shouldReintegrate(@NotNull String targetUrl) { return myReintegrateAnswer; } @@ -90,7 +86,6 @@ public class QuickMergeTestInteraction implements QuickMergeInteraction { @NotNull @Override public List showRecentListsForSelection(@NotNull List list, - @NotNull String mergeTitle, @NotNull MergeChecker mergeChecker, @NotNull PairConsumer loader, boolean everyThingLoaded) { diff --git a/plugins/svn4idea/testSource/org/jetbrains/idea/svn/SvnQuickMergeTest.java b/plugins/svn4idea/testSource/org/jetbrains/idea/svn/SvnQuickMergeTest.java index 632a83c95214..e0aa340e5924 100644 --- a/plugins/svn4idea/testSource/org/jetbrains/idea/svn/SvnQuickMergeTest.java +++ b/plugins/svn4idea/testSource/org/jetbrains/idea/svn/SvnQuickMergeTest.java @@ -177,7 +177,6 @@ public class SvnQuickMergeTest extends Svn17TestCase { @NotNull @Override public List showRecentListsForSelection(@NotNull List list, - @NotNull String mergeTitle, @NotNull MergeChecker mergeChecker, @NotNull PairConsumer loader, boolean everyThingLoaded) { @@ -265,7 +264,6 @@ public class SvnQuickMergeTest extends Svn17TestCase { @NotNull @Override public List showRecentListsForSelection(@NotNull List list, - @NotNull String mergeTitle, @NotNull MergeChecker mergeChecker, @NotNull PairConsumer loader, boolean everyThingLoaded) {