mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
[vcs] clone dialog: call modal task in the common code, thus simplifying implementations
+ simplify Git code by using Git.class.
This commit is contained in:
@@ -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<Boolean, RuntimeException>() {
|
||||
@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),
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user