mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
[vcs] Move showMergeDialog overloading method to the base class
showMergeDialog(files, provider) and (files) are just handy wrapper for the "main" method with (files, provider, customizer). Move their implementation to AbstractVcsHelper not to force inheritors implement them.
This commit is contained in:
@@ -36,15 +36,20 @@ import org.jetbrains.annotations.Nullable;
|
||||
|
||||
import java.awt.*;
|
||||
import java.io.File;
|
||||
import java.util.Arrays;
|
||||
import java.util.Collection;
|
||||
import java.util.*;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* Component which provides means to invoke different VCS-related services.
|
||||
*/
|
||||
public abstract class AbstractVcsHelper {
|
||||
|
||||
protected final Project myProject;
|
||||
|
||||
protected AbstractVcsHelper(@NotNull Project project) {
|
||||
myProject = project;
|
||||
}
|
||||
|
||||
public static AbstractVcsHelper getInstance(Project project) {
|
||||
return PeriodicalTasksCloser.getInstance().safeGetService(project, AbstractVcsHelper.class);
|
||||
}
|
||||
@@ -115,14 +120,28 @@ public abstract class AbstractVcsHelper {
|
||||
* {@link #showMergeDialog(java.util.List, com.intellij.openapi.vcs.merge.MergeProvider)} without description.
|
||||
*/
|
||||
@NotNull
|
||||
public abstract List<VirtualFile> showMergeDialog(List<VirtualFile> files, MergeProvider provider);
|
||||
public final List<VirtualFile> showMergeDialog(List<VirtualFile> files, MergeProvider provider) {
|
||||
return showMergeDialog(files, provider, new MergeDialogCustomizer());
|
||||
}
|
||||
|
||||
/**
|
||||
* {@link #showMergeDialog(java.util.List, com.intellij.openapi.vcs.merge.MergeProvider)} without description and with default merge provider
|
||||
* for the current VCS.
|
||||
*/
|
||||
@NotNull
|
||||
public abstract List<VirtualFile> showMergeDialog(List<VirtualFile> files);
|
||||
public final List<VirtualFile> showMergeDialog(List<VirtualFile> files) {
|
||||
if (files.isEmpty()) return Collections.emptyList();
|
||||
MergeProvider provider = null;
|
||||
for (VirtualFile virtualFile : files) {
|
||||
final AbstractVcs vcs = ProjectLevelVcsManager.getInstance(myProject).getVcsFor(virtualFile);
|
||||
if (vcs != null) {
|
||||
provider = vcs.getMergeProvider();
|
||||
if (provider != null) break;
|
||||
}
|
||||
}
|
||||
if (provider == null) return Collections.emptyList();
|
||||
return showMergeDialog(files, provider);
|
||||
}
|
||||
|
||||
public abstract void showFileHistory(VcsHistoryProvider vcsHistoryProvider, FilePath path, final AbstractVcs vcs,
|
||||
final String repositoryPath);
|
||||
|
||||
@@ -88,11 +88,10 @@ import java.util.List;
|
||||
public class AbstractVcsHelperImpl extends AbstractVcsHelper {
|
||||
private static final Logger LOG = Logger.getInstance("#com.intellij.openapi.vcs.impl.AbstractVcsHelperImpl");
|
||||
|
||||
private final Project myProject;
|
||||
private Consumer<VcsException> myCustomHandler = null;
|
||||
|
||||
public AbstractVcsHelperImpl(Project project) {
|
||||
myProject = project;
|
||||
protected AbstractVcsHelperImpl(@NotNull Project project) {
|
||||
super(project);
|
||||
}
|
||||
|
||||
public void openMessagesView(final VcsErrorViewPanel errorTreeView, final String tabDisplayName) {
|
||||
@@ -567,12 +566,6 @@ public class AbstractVcsHelperImpl extends AbstractVcsHelper {
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
@NotNull
|
||||
public List<VirtualFile> showMergeDialog(List<VirtualFile> files, MergeProvider provider) {
|
||||
return showMergeDialog(files, provider, new MergeDialogCustomizer());
|
||||
}
|
||||
|
||||
@Override
|
||||
@NotNull
|
||||
public List<VirtualFile> showMergeDialog(List<VirtualFile> files, MergeProvider provider, @NotNull MergeDialogCustomizer mergeDialogCustomizer) {
|
||||
@@ -582,21 +575,6 @@ public class AbstractVcsHelperImpl extends AbstractVcsHelper {
|
||||
return fileMergeDialog.getProcessedFiles();
|
||||
}
|
||||
|
||||
@NotNull
|
||||
public List<VirtualFile> showMergeDialog(final List<VirtualFile> files) {
|
||||
if (files.isEmpty()) return Collections.emptyList();
|
||||
MergeProvider provider = null;
|
||||
for (VirtualFile virtualFile : files) {
|
||||
final AbstractVcs vcs = ProjectLevelVcsManager.getInstance(myProject).getVcsFor(virtualFile);
|
||||
if (vcs != null) {
|
||||
provider = vcs.getMergeProvider();
|
||||
if (provider != null) break;
|
||||
}
|
||||
}
|
||||
if (provider == null) return Collections.emptyList();
|
||||
return showMergeDialog(files, provider);
|
||||
}
|
||||
|
||||
private static DiffContent getContentForVersion(final VcsFileRevision version, final File file) throws IOException, VcsException {
|
||||
VirtualFile vFile = LocalFileSystem.getInstance().findFileByIoFile(file);
|
||||
if (vFile != null && (version instanceof CurrentRevision) && !vFile.getFileType().isBinary()) {
|
||||
|
||||
@@ -16,6 +16,7 @@
|
||||
package org.zmlx.hg4idea.test;
|
||||
|
||||
import com.intellij.ide.errorTreeView.HotfixData;
|
||||
import com.intellij.openapi.project.Project;
|
||||
import com.intellij.openapi.vcs.*;
|
||||
import com.intellij.openapi.vcs.annotate.AnnotationProvider;
|
||||
import com.intellij.openapi.vcs.annotate.FileAnnotation;
|
||||
@@ -50,6 +51,10 @@ public class HgMockVcsHelper extends AbstractVcsHelper {
|
||||
|
||||
private Collection<VcsHelperListener> myListeners = new THashSet<VcsHelperListener>();
|
||||
|
||||
public HgMockVcsHelper(@NotNull Project project) {
|
||||
super(project);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void showErrors(List<VcsException> abstractVcsExceptions, @NotNull String tabDisplayName) {
|
||||
}
|
||||
@@ -118,18 +123,6 @@ public class HgMockVcsHelper extends AbstractVcsHelper {
|
||||
return null;
|
||||
}
|
||||
|
||||
@NotNull
|
||||
@Override
|
||||
public List<VirtualFile> showMergeDialog(List<VirtualFile> files, MergeProvider provider) {
|
||||
return null;
|
||||
}
|
||||
|
||||
@NotNull
|
||||
@Override
|
||||
public List<VirtualFile> showMergeDialog(List<VirtualFile> files) {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void showFileHistory(VcsHistoryProvider vcsHistoryProvider, FilePath path, AbstractVcs vcs, String repositoryPath) {
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user