*/
package com.intellij.remoteServer.util.importProject;
+import com.intellij.execution.RunManager;
import com.intellij.execution.RunManagerAdapter;
import com.intellij.execution.RunManagerEx;
import com.intellij.execution.RunnerAndConfigurationSettings;
import com.intellij.ide.wizard.Step;
import com.intellij.notification.Notification;
import com.intellij.notification.NotificationListener;
-import com.intellij.openapi.components.ServiceManager;
+import com.intellij.openapi.components.AbstractProjectComponent;
import com.intellij.openapi.module.Module;
import com.intellij.openapi.module.ModuleManager;
-import com.intellij.openapi.project.DumbAware;
import com.intellij.openapi.project.Project;
-import com.intellij.openapi.startup.StartupActivity;
import com.intellij.openapi.ui.MessageType;
import com.intellij.openapi.util.Ref;
import com.intellij.openapi.util.io.FileUtil;
/**
* @author michael.golubev
*/
-public class CloudGitRemoteDetector {
- private final Project myProject;
+public class CloudGitRemoteDetector extends AbstractProjectComponent implements GitRepositoryChangeListener {
+
+ private final GitRepositoryManager myRepositoryManager;
+ private final RunManagerEx myRunManager;
private final CloudNotifier myNotifier;
private final List<CloudTypeDelegate> myDelegates;
- public CloudGitRemoteDetector(@NotNull Project project) {
- myProject = project;
+ public CloudGitRemoteDetector(Project project, GitRepositoryManager repositoryManager, RunManager runManager) {
+ super(project);
+ myRepositoryManager = repositoryManager;
+ myRunManager = (RunManagerEx)runManager;
+
myNotifier = new CloudNotifier("Git remotes detector");
myDelegates = new ArrayList<CloudTypeDelegate>();
}
}
- private static CloudGitRemoteDetector getInstance() {
- return ServiceManager.getService(CloudGitRemoteDetector.class);
- }
-
- static final class MyStartUpActivity implements StartupActivity, DumbAware {
- @Override
- public void runActivity(@NotNull final Project project) {
- if (project.isDefault()) {
- return;
- }
+ @Override
+ public void projectOpened() {
+ myProject.getMessageBus().connect().subscribe(GitRepository.GIT_REPO_CHANGE, this);
- project.getMessageBus().connect().subscribe(GitRepository.GIT_REPO_CHANGE, new GitRepositoryChangeListener() {
- @Override
- public void repositoryChanged(@NotNull GitRepository repository) {
- getInstance().repositoryChanged(repository);
- }
- });
+ myRunManager.addRunManagerListener(new RunManagerAdapter() {
- RunManagerEx.getInstanceEx(project).addRunManagerListener(new RunManagerAdapter() {
- @Override
- public void runConfigurationAdded(@NotNull RunnerAndConfigurationSettings settings) {
- getInstance().onRunConfigurationAddedOrChanged(settings);
- }
+ @Override
+ public void runConfigurationAdded(@NotNull RunnerAndConfigurationSettings settings) {
+ onRunConfigurationAddedOrChanged(settings);
+ }
- @Override
- public void runConfigurationChanged(@NotNull RunnerAndConfigurationSettings settings) {
- getInstance().onRunConfigurationAddedOrChanged(settings);
- }
- });
- }
+ @Override
+ public void runConfigurationChanged(@NotNull RunnerAndConfigurationSettings settings) {
+ onRunConfigurationAddedOrChanged(settings);
+ }
+ });
}
private void onRunConfigurationAddedOrChanged(RunnerAndConfigurationSettings settings) {
}
}
- private void repositoryChanged(@NotNull GitRepository repository) {
+ @Override
+ public void repositoryChanged(@NotNull GitRepository repository) {
for (CloudTypeDelegate delegate : myDelegates) {
delegate.repositoryChanged(repository);
}
private boolean hasRunConfig4Repository(GitRepository repository) {
List<RunConfiguration> runConfigurations
- = RunManagerEx.getInstanceEx(myProject).getConfigurationsList(DeployToServerConfigurationTypesRegistrar.getDeployConfigurationType(getCloudType()));
+ = myRunManager.getConfigurationsList(DeployToServerConfigurationTypesRegistrar.getDeployConfigurationType(getCloudType()));
VirtualFile repositoryRoot = repository.getRoot();
return;
}
- GitRepository repository = GitRepositoryManager.getInstance(myProject).getRepositoryForRoot(contentRoot);
+ GitRepository repository = myRepositoryManager.getRepositoryForRoot(contentRoot);
if (repository == null) {
return;
}
import com.intellij.dvcs.branch.DvcsSyncSettings;
import com.intellij.dvcs.repo.AbstractRepositoryManager;
import com.intellij.dvcs.repo.VcsRepositoryManager;
-import com.intellij.openapi.components.ServiceManager;
import com.intellij.openapi.project.Project;
import git4idea.GitPlatformFacade;
import git4idea.GitUtil;
import java.util.List;
public class GitRepositoryManager extends AbstractRepositoryManager<GitRepository> {
+
@NotNull private final GitPlatformFacade myPlatformFacade;
@NotNull private final Project myProject;
myPlatformFacade = platformFacade;
}
- public static GitRepositoryManager getInstance(@NotNull Project project) {
- return ServiceManager.getService(project, GitRepositoryManager.class);
- }
-
@Override
public boolean isSyncEnabled() {
return myPlatformFacade.getSettings(myProject).getSyncSetting() == DvcsSyncSettings.Value.SYNC &&