mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
svn: Refactored "QuickMergeInteraction" - @NotNull
This commit is contained in:
@@ -16,13 +16,13 @@
|
||||
package org.jetbrains.idea.svn.integrate;
|
||||
|
||||
import com.intellij.openapi.diagnostic.Logger;
|
||||
import org.jetbrains.annotations.CalledInAny;
|
||||
import com.intellij.openapi.vcs.VcsException;
|
||||
import com.intellij.openapi.vcs.versionBrowser.CommittedChangeList;
|
||||
import com.intellij.util.containers.ContainerUtil;
|
||||
import com.intellij.util.continuation.ContinuationContext;
|
||||
import com.intellij.util.continuation.TaskDescriptor;
|
||||
import com.intellij.util.continuation.Where;
|
||||
import org.jetbrains.annotations.CalledInAny;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
import org.jetbrains.idea.svn.SvnUtil;
|
||||
@@ -87,7 +87,7 @@ public abstract class BaseMergeTask extends TaskDescriptor {
|
||||
}
|
||||
|
||||
@CalledInAny
|
||||
protected void finishWithError(@NotNull ContinuationContext context, @NotNull final String message, final boolean isError) {
|
||||
protected void finishWithError(@NotNull ContinuationContext context, @NotNull String message, boolean isError) {
|
||||
LOG.info((isError ? "Error: " : "Info: ") + message);
|
||||
context.next(new TaskDescriptor(message, Where.AWT) {
|
||||
@Override
|
||||
@@ -99,9 +99,7 @@ public abstract class BaseMergeTask extends TaskDescriptor {
|
||||
}
|
||||
|
||||
@CalledInAny
|
||||
protected void finishWithError(@NotNull ContinuationContext context,
|
||||
final String message,
|
||||
@Nullable final List<VcsException> exceptions) {
|
||||
protected void finishWithError(@NotNull ContinuationContext context, @NotNull String message, @NotNull List<VcsException> exceptions) {
|
||||
log(message, exceptions);
|
||||
|
||||
context.cancelEverything();
|
||||
@@ -113,11 +111,9 @@ public abstract class BaseMergeTask extends TaskDescriptor {
|
||||
});
|
||||
}
|
||||
|
||||
private static void log(String message, @Nullable List<VcsException> exceptions) {
|
||||
if (exceptions != null) {
|
||||
for (VcsException exception : exceptions) {
|
||||
LOG.info(message, exception);
|
||||
}
|
||||
private static void log(@NotNull String message, @NotNull List<VcsException> exceptions) {
|
||||
for (VcsException exception : exceptions) {
|
||||
LOG.info(message, exception);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -25,37 +25,42 @@ import org.jetbrains.idea.svn.mergeinfo.MergeChecker;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* Created with IntelliJ IDEA.
|
||||
* User: Irina.Chernushina
|
||||
* Date: 3/26/13
|
||||
* Time: 8:29 PM
|
||||
*/
|
||||
public interface QuickMergeInteraction {
|
||||
void setTitle(@NotNull final String title);
|
||||
QuickMergeContentsVariants selectMergeVariant();
|
||||
boolean shouldContinueSwitchedRootFound();
|
||||
|
||||
boolean shouldReintegrate(@NotNull final String sourceUrl, @NotNull final String targetUrl);
|
||||
void setTitle(@NotNull String title);
|
||||
|
||||
@NotNull
|
||||
SelectMergeItemsResult selectMergeItems(final List<CommittedChangeList> lists, final String mergeTitle, final MergeChecker mergeChecker);
|
||||
QuickMergeContentsVariants selectMergeVariant();
|
||||
|
||||
boolean shouldContinueSwitchedRootFound();
|
||||
|
||||
boolean shouldReintegrate(@NotNull String sourceUrl, @NotNull String targetUrl);
|
||||
|
||||
@NotNull
|
||||
SelectMergeItemsResult selectMergeItems(@NotNull List<CommittedChangeList> lists,
|
||||
@NotNull String mergeTitle,
|
||||
@NotNull MergeChecker mergeChecker);
|
||||
|
||||
@NotNull
|
||||
LocalChangesAction selectLocalChangesAction(boolean mergeAll);
|
||||
|
||||
void showIntersectedLocalPaths(final List<FilePath> paths);
|
||||
void showIntersectedLocalPaths(@NotNull List<FilePath> paths);
|
||||
|
||||
void showErrors(final String message, final List<VcsException> exceptions);
|
||||
void showErrors(final String message, final boolean isError);
|
||||
void showErrors(@NotNull String message, @NotNull List<VcsException> exceptions);
|
||||
|
||||
void showErrors(@NotNull String message, boolean isError);
|
||||
|
||||
@NotNull
|
||||
List<CommittedChangeList> showRecentListsForSelection(@NotNull List<CommittedChangeList> list,
|
||||
@NotNull String mergeTitle,
|
||||
@NotNull MergeChecker mergeChecker,
|
||||
@NotNull PairConsumer<Long, MergeDialogI> loader, boolean everyThingLoaded);
|
||||
@NotNull PairConsumer<Long, MergeDialogI> loader,
|
||||
boolean everyThingLoaded);
|
||||
|
||||
interface SelectMergeItemsResult {
|
||||
@NotNull
|
||||
QuickMergeContentsVariants getResultCode();
|
||||
|
||||
@NotNull
|
||||
List<CommittedChangeList> getSelectedLists();
|
||||
}
|
||||
}
|
||||
|
||||
+20
-11
@@ -27,11 +27,14 @@ import com.intellij.openapi.vcs.ui.VcsBalloonProblemNotifier;
|
||||
import com.intellij.openapi.vcs.versionBrowser.CommittedChangeList;
|
||||
import com.intellij.util.PairConsumer;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.idea.svn.dialogs.*;
|
||||
import org.jetbrains.idea.svn.dialogs.IntersectingLocalChangesPanel;
|
||||
import org.jetbrains.idea.svn.dialogs.MergeDialogI;
|
||||
import org.jetbrains.idea.svn.mergeinfo.MergeChecker;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import static java.util.Collections.emptyList;
|
||||
|
||||
/**
|
||||
* Created with IntelliJ IDEA.
|
||||
* User: Irina.Chernushina
|
||||
@@ -51,6 +54,7 @@ public class QuickMergeInteractionImpl implements QuickMergeInteraction {
|
||||
myTitle = title;
|
||||
}
|
||||
|
||||
@NotNull
|
||||
@Override
|
||||
public QuickMergeContentsVariants selectMergeVariant() {
|
||||
final QuickMergeWayOptionsPanel panel = new QuickMergeWayOptionsPanel();
|
||||
@@ -70,19 +74,22 @@ public class QuickMergeInteractionImpl implements QuickMergeInteraction {
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean shouldReintegrate(@NotNull final String sourceUrl, @NotNull final String targetUrl) {
|
||||
public boolean shouldReintegrate(@NotNull String sourceUrl, @NotNull String targetUrl) {
|
||||
return prompt("<html><body>You are going to reintegrate changes.<br><br>This will make branch '" + sourceUrl +
|
||||
"' <b>no longer usable for further work</b>." +
|
||||
"<br>It will not be able to correctly absorb new trunk (" + targetUrl +
|
||||
") changes,<br>nor can this branch be properly reintegrated to trunk again.<br><br>Are you sure?</body></html>");
|
||||
"' <b>no longer usable for further work</b>." +
|
||||
"<br>It will not be able to correctly absorb new trunk (" + targetUrl +
|
||||
") changes,<br>nor can this branch be properly reintegrated to trunk again.<br><br>Are you sure?</body></html>");
|
||||
}
|
||||
|
||||
@NotNull
|
||||
@Override
|
||||
public SelectMergeItemsResult selectMergeItems(List<CommittedChangeList> lists, String mergeTitle, MergeChecker mergeChecker) {
|
||||
public SelectMergeItemsResult selectMergeItems(@NotNull List<CommittedChangeList> lists,
|
||||
@NotNull String mergeTitle,
|
||||
@NotNull MergeChecker mergeChecker) {
|
||||
final ToBeMergedDialog dialog = new ToBeMergedDialog(myProject, lists, mergeTitle, mergeChecker, null);
|
||||
dialog.show();
|
||||
return new SelectMergeItemsResult() {
|
||||
@NotNull
|
||||
@Override
|
||||
public QuickMergeContentsVariants getResultCode() {
|
||||
final int code = dialog.getExitCode();
|
||||
@@ -92,6 +99,7 @@ public class QuickMergeInteractionImpl implements QuickMergeInteraction {
|
||||
return DialogWrapper.OK_EXIT_CODE == code ? QuickMergeContentsVariants.select : QuickMergeContentsVariants.cancel;
|
||||
}
|
||||
|
||||
@NotNull
|
||||
@Override
|
||||
public List<CommittedChangeList> getSelectedLists() {
|
||||
return dialog.getSelected();
|
||||
@@ -119,21 +127,22 @@ public class QuickMergeInteractionImpl implements QuickMergeInteraction {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void showIntersectedLocalPaths(final List<FilePath> paths) {
|
||||
public void showIntersectedLocalPaths(@NotNull List<FilePath> paths) {
|
||||
IntersectingLocalChangesPanel.showInVersionControlToolWindow(myProject, myTitle + ", local changes intersection",
|
||||
paths, "The following file(s) have local changes that will intersect with merge changes:");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void showErrors(String message, List<VcsException> exceptions) {
|
||||
public void showErrors(@NotNull String message, @NotNull List<VcsException> exceptions) {
|
||||
AbstractVcsHelper.getInstance(myProject).showErrors(exceptions, message);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void showErrors(String message, boolean isError) {
|
||||
public void showErrors(@NotNull String message, boolean isError) {
|
||||
VcsBalloonProblemNotifier.showOverChangesView(myProject, message, isError ? MessageType.ERROR : MessageType.WARNING);
|
||||
}
|
||||
|
||||
@NotNull
|
||||
@Override
|
||||
public List<CommittedChangeList> showRecentListsForSelection(@NotNull List<CommittedChangeList> list,
|
||||
@NotNull String mergeTitle,
|
||||
@@ -148,10 +157,10 @@ public class QuickMergeInteractionImpl implements QuickMergeInteraction {
|
||||
if (DialogWrapper.OK_EXIT_CODE == dialog.getExitCode()) {
|
||||
return dialog.getSelected();
|
||||
}
|
||||
return null;
|
||||
return emptyList();
|
||||
}
|
||||
|
||||
private boolean prompt(final String question) {
|
||||
private boolean prompt(@NotNull String question) {
|
||||
return Messages.showOkCancelDialog(myProject, question, myTitle, Messages.getQuestionIcon()) == Messages.OK;
|
||||
}
|
||||
}
|
||||
|
||||
+3
-1
@@ -18,6 +18,7 @@ package org.jetbrains.idea.svn.integrate;
|
||||
import com.intellij.openapi.ui.DialogWrapper;
|
||||
import com.intellij.openapi.ui.MultiLineLabelUI;
|
||||
import com.intellij.util.ui.JBUI;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
import javax.swing.*;
|
||||
import java.awt.event.ActionEvent;
|
||||
@@ -57,7 +58,7 @@ public class QuickMergeWayOptionsPanel {
|
||||
myFindsWhereOneOfLabel.setBorder(JBUI.Borders.emptyBottom(10));
|
||||
}
|
||||
|
||||
private ActionListener setCodeAndClose(final QuickMergeContentsVariants variant) {
|
||||
private ActionListener setCodeAndClose(@NotNull QuickMergeContentsVariants variant) {
|
||||
return new ActionListener() {
|
||||
@Override
|
||||
public void actionPerformed(ActionEvent e) {
|
||||
@@ -75,6 +76,7 @@ public class QuickMergeWayOptionsPanel {
|
||||
myWrapper = wrapper;
|
||||
}
|
||||
|
||||
@NotNull
|
||||
public QuickMergeContentsVariants getVariant() {
|
||||
return myVariant;
|
||||
}
|
||||
|
||||
@@ -54,7 +54,7 @@ public class ShowRecentInDialogTask extends BaseMergeTask {
|
||||
createMoreChangeListsLoader(),
|
||||
myInitialChangeListsLoader.isLastLoaded());
|
||||
|
||||
if (lists != null && !lists.isEmpty()) {
|
||||
if (!lists.isEmpty()) {
|
||||
runChangeListsMerge(context, lists, createBranchCopyPoint(), myMergeContext.getTitle());
|
||||
}
|
||||
else {
|
||||
|
||||
@@ -96,9 +96,9 @@ public class ToBeMergedDialog extends DialogWrapper implements MergeDialogI {
|
||||
private ToBeMergedDialog.MoreXAction myMore500Action;
|
||||
|
||||
public ToBeMergedDialog(final Project project,
|
||||
final List<CommittedChangeList> lists,
|
||||
@NotNull List<CommittedChangeList> lists,
|
||||
final String title,
|
||||
final MergeChecker mergeChecker,
|
||||
@NotNull MergeChecker mergeChecker,
|
||||
final PairConsumer<Long, MergeDialogI> moreLoader) {
|
||||
super(project, true);
|
||||
myMoreLoader = moreLoader;
|
||||
|
||||
@@ -30,6 +30,7 @@ import java.util.List;
|
||||
|
||||
import static com.intellij.util.containers.ContainerUtil.isEmpty;
|
||||
import static com.intellij.util.containers.ContainerUtil.newArrayList;
|
||||
import static com.intellij.util.containers.ContainerUtilRt.emptyList;
|
||||
|
||||
public class QuickMergeTestInteraction implements QuickMergeInteraction {
|
||||
|
||||
@@ -46,12 +47,13 @@ public class QuickMergeTestInteraction implements QuickMergeInteraction {
|
||||
public void setTitle(@NotNull String title) {
|
||||
}
|
||||
|
||||
@NotNull
|
||||
@Override
|
||||
public QuickMergeContentsVariants selectMergeVariant() {
|
||||
return myMergeVariant;
|
||||
}
|
||||
|
||||
public void setMergeVariant(QuickMergeContentsVariants mergeVariant) {
|
||||
public void setMergeVariant(@NotNull QuickMergeContentsVariants mergeVariant) {
|
||||
myMergeVariant = mergeVariant;
|
||||
}
|
||||
|
||||
@@ -67,27 +69,32 @@ public class QuickMergeTestInteraction implements QuickMergeInteraction {
|
||||
|
||||
@NotNull
|
||||
@Override
|
||||
public SelectMergeItemsResult selectMergeItems(List<CommittedChangeList> lists, String mergeTitle, MergeChecker mergeChecker) {
|
||||
public SelectMergeItemsResult selectMergeItems(@NotNull List<CommittedChangeList> lists,
|
||||
@NotNull String mergeTitle,
|
||||
@NotNull MergeChecker mergeChecker) {
|
||||
return new SelectMergeItemsResult() {
|
||||
@NotNull
|
||||
@Override
|
||||
public QuickMergeContentsVariants getResultCode() {
|
||||
return QuickMergeContentsVariants.all;
|
||||
}
|
||||
|
||||
@NotNull
|
||||
@Override
|
||||
public List<CommittedChangeList> getSelectedLists() {
|
||||
return null;
|
||||
return emptyList();
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
@NotNull
|
||||
@Override
|
||||
public List<CommittedChangeList> showRecentListsForSelection(@NotNull List<CommittedChangeList> list,
|
||||
@NotNull String mergeTitle,
|
||||
@NotNull MergeChecker mergeChecker,
|
||||
@NotNull PairConsumer<Long, MergeDialogI> loader,
|
||||
boolean everyThingLoaded) {
|
||||
return null;
|
||||
return emptyList();
|
||||
}
|
||||
|
||||
@NotNull
|
||||
@@ -97,11 +104,11 @@ public class QuickMergeTestInteraction implements QuickMergeInteraction {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void showIntersectedLocalPaths(List<FilePath> paths) {
|
||||
public void showIntersectedLocalPaths(@NotNull List<FilePath> paths) {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void showErrors(String message, List<VcsException> exceptions) {
|
||||
public void showErrors(@NotNull String message, @NotNull List<VcsException> exceptions) {
|
||||
if (!isEmpty(exceptions)) {
|
||||
myExceptions.addAll(exceptions);
|
||||
}
|
||||
@@ -111,7 +118,7 @@ public class QuickMergeTestInteraction implements QuickMergeInteraction {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void showErrors(String message, boolean isError) {
|
||||
public void showErrors(@NotNull String message, boolean isError) {
|
||||
if (isError) {
|
||||
myExceptions.add(new RuntimeException(message));
|
||||
} else {
|
||||
|
||||
@@ -57,6 +57,8 @@ import java.util.List;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
import java.util.concurrent.atomic.AtomicReference;
|
||||
|
||||
import static java.util.stream.Collectors.toList;
|
||||
|
||||
/**
|
||||
* Created with IntelliJ IDEA.
|
||||
* User: Irina.Chernushina
|
||||
@@ -172,6 +174,7 @@ public class SvnQuickMergeTest extends Svn17TestCase {
|
||||
// by default merges all
|
||||
final AtomicReference<String> selectionError = new AtomicReference<>();
|
||||
QuickMergeTestInteraction testInteraction = new QuickMergeTestInteraction(true) {
|
||||
@NotNull
|
||||
@Override
|
||||
public List<CommittedChangeList> showRecentListsForSelection(@NotNull List<CommittedChangeList> list,
|
||||
@NotNull String mergeTitle,
|
||||
@@ -259,6 +262,7 @@ public class SvnQuickMergeTest extends Svn17TestCase {
|
||||
// by default merges all
|
||||
final AtomicReference<String> selectionError = new AtomicReference<>();
|
||||
QuickMergeTestInteraction testInteraction = new QuickMergeTestInteraction(true) {
|
||||
@NotNull
|
||||
@Override
|
||||
public List<CommittedChangeList> showRecentListsForSelection(@NotNull List<CommittedChangeList> list,
|
||||
@NotNull String mergeTitle,
|
||||
@@ -329,24 +333,22 @@ public class SvnQuickMergeTest extends Svn17TestCase {
|
||||
QuickMergeTestInteraction testInteraction = new QuickMergeTestInteraction(true) {
|
||||
@NotNull
|
||||
@Override
|
||||
public SelectMergeItemsResult selectMergeItems(final List<CommittedChangeList> lists,
|
||||
String mergeTitle,
|
||||
MergeChecker mergeChecker) {
|
||||
public SelectMergeItemsResult selectMergeItems(@NotNull List<CommittedChangeList> lists,
|
||||
@NotNull String mergeTitle,
|
||||
@NotNull MergeChecker mergeChecker) {
|
||||
return new SelectMergeItemsResult() {
|
||||
@NotNull
|
||||
@Override
|
||||
public QuickMergeContentsVariants getResultCode() {
|
||||
return QuickMergeContentsVariants.select;
|
||||
}
|
||||
|
||||
@NotNull
|
||||
@Override
|
||||
public List<CommittedChangeList> getSelectedLists() {
|
||||
final List<CommittedChangeList> result = new ArrayList<>();
|
||||
for (CommittedChangeList list : lists) {
|
||||
if (numberBefore + 1 == list.getNumber() || numberBefore + 2 == list.getNumber()) {
|
||||
result.add(list);
|
||||
}
|
||||
}
|
||||
return result;
|
||||
return lists.stream()
|
||||
.filter(list -> numberBefore + 1 == list.getNumber() || numberBefore + 2 == list.getNumber())
|
||||
.collect(toList());
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user