diff --git a/platform/dvcs-impl/src/com/intellij/dvcs/ui/CloneDvcsDialog.java b/platform/dvcs-impl/src/com/intellij/dvcs/ui/CloneDvcsDialog.java index 01a0a7e4b5aa..74de6d239f15 100644 --- a/platform/dvcs-impl/src/com/intellij/dvcs/ui/CloneDvcsDialog.java +++ b/platform/dvcs-impl/src/com/intellij/dvcs/ui/CloneDvcsDialog.java @@ -19,8 +19,10 @@ import com.intellij.dvcs.DvcsRememberedInputs; import com.intellij.ide.impl.ProjectUtil; import com.intellij.openapi.fileChooser.FileChooserDescriptor; import com.intellij.openapi.fileChooser.FileChooserDescriptorFactory; +import com.intellij.openapi.progress.ProgressManager; import com.intellij.openapi.project.Project; import com.intellij.openapi.ui.*; +import com.intellij.openapi.util.ThrowableComputable; import com.intellij.openapi.util.io.FileUtil; import com.intellij.openapi.util.text.StringUtil; import com.intellij.openapi.vfs.VirtualFile; @@ -158,7 +160,12 @@ public abstract class CloneDvcsDialog extends DialogWrapper { private void test() { myTestURL = getCurrentUrlText(); - boolean testResult = test(myTestURL); + boolean testResult = ProgressManager.getInstance().runProcessWithProgressSynchronously(new ThrowableComputable() { + @Override + public Boolean compute() { + return test(myTestURL); + } + }, DvcsBundle.message("clone.testing", myTestURL), true, myProject); if (testResult) { Messages.showInfoMessage(myTestButton, DvcsBundle.message("clone.test.success.message", myTestURL), diff --git a/plugins/git4idea/src/git4idea/checkout/GitCloneDialog.java b/plugins/git4idea/src/git4idea/checkout/GitCloneDialog.java index 8d44d34b6b29..92af15393d5f 100644 --- a/plugins/git4idea/src/git4idea/checkout/GitCloneDialog.java +++ b/plugins/git4idea/src/git4idea/checkout/GitCloneDialog.java @@ -17,14 +17,11 @@ package git4idea.checkout; import com.intellij.dvcs.DvcsRememberedInputs; import com.intellij.dvcs.ui.CloneDvcsDialog; -import com.intellij.dvcs.ui.DvcsBundle; +import com.intellij.openapi.components.ServiceManager; import com.intellij.openapi.project.Project; import git4idea.GitUtil; import git4idea.GitVcs; -import git4idea.commands.GitCommand; -import git4idea.commands.GitLineHandler; -import git4idea.commands.GitTask; -import git4idea.commands.GitTaskResult; +import git4idea.commands.Git; import git4idea.remote.GitRememberedInputs; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -33,21 +30,19 @@ import java.io.File; public class GitCloneDialog extends CloneDvcsDialog { + @NotNull private final Git myGit; + public GitCloneDialog(@NotNull Project project) { this(project, null); } public GitCloneDialog(@NotNull Project project, @Nullable String defaultUrl) { super(project, GitVcs.NAME, GitUtil.DOT_GIT, defaultUrl); + myGit = ServiceManager.getService(Git.class); } protected boolean test(@NotNull String url) { - final GitLineHandler handler = new GitLineHandler(myProject, new File("."), GitCommand.LS_REMOTE); - handler.setUrl(url); - handler.addParameters(url, "master"); - GitTask task = new GitTask(myProject, handler, DvcsBundle.message("clone.testing", url)); - GitTaskResult result = task.executeModal(); - return result.isOK(); + return myGit.lsRemote(myProject, new File("."), url).success(); } @NotNull diff --git a/plugins/hg4idea/src/org/zmlx/hg4idea/ui/HgCloneDialog.java b/plugins/hg4idea/src/org/zmlx/hg4idea/ui/HgCloneDialog.java index 8b5064aa97e7..a9e397e4f360 100644 --- a/plugins/hg4idea/src/org/zmlx/hg4idea/ui/HgCloneDialog.java +++ b/plugins/hg4idea/src/org/zmlx/hg4idea/ui/HgCloneDialog.java @@ -17,12 +17,8 @@ package org.zmlx.hg4idea.ui; import com.intellij.dvcs.DvcsRememberedInputs; import com.intellij.dvcs.ui.CloneDvcsDialog; -import com.intellij.dvcs.ui.DvcsBundle; import com.intellij.openapi.application.ModalityState; import com.intellij.openapi.components.ServiceManager; -import com.intellij.openapi.progress.ProgressIndicator; -import com.intellij.openapi.progress.ProgressManager; -import com.intellij.openapi.progress.Task; import com.intellij.openapi.project.Project; import org.jetbrains.annotations.NotNull; import org.zmlx.hg4idea.HgRememberedInputs; @@ -58,16 +54,9 @@ public class HgCloneDialog extends CloneDvcsDialog { @Override protected boolean test(@NotNull final String url) { - final boolean[] testResult = new boolean[1]; - ProgressManager.getInstance().run(new Task.Modal(myProject, DvcsBundle.message("clone.testing", url), true) { - @Override - public void run(@NotNull ProgressIndicator indicator) { - final HgIdentifyCommand identifyCommand = new HgIdentifyCommand(myProject); - identifyCommand.setSource(url); - final HgCommandResult result = identifyCommand.execute(ModalityState.stateForComponent(getRootPane())); - testResult[0] = result != null && result.getExitValue() == 0; - } - }); - return testResult[0]; + HgIdentifyCommand identifyCommand = new HgIdentifyCommand(myProject); + identifyCommand.setSource(url); + HgCommandResult result = identifyCommand.execute(ModalityState.stateForComponent(getRootPane())); + return result != null && result.getExitValue() == 0; } }