[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:
Kirill Likhodedov
2013-01-02 17:23:26 +04:00
parent 72262569e9
commit daec3a55cf
3 changed files with 31 additions and 41 deletions
@@ -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) {
}