mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
CloudGitRemoteDetector should be lazy
This commit is contained in:
@@ -59,7 +59,7 @@ public class VcsRepositoryManager {
|
||||
return ServiceManager.getService(project, VcsRepositoryManager.class);
|
||||
}
|
||||
|
||||
public static final class MyStartUpActivity implements StartupActivity, DumbAware {
|
||||
static final class MyStartUpActivity implements StartupActivity, DumbAware {
|
||||
@Override
|
||||
public void runActivity(@NotNull final Project project) {
|
||||
if (!project.isDefault() && !ApplicationManager.getApplication().isUnitTestMode()) {
|
||||
|
||||
@@ -7,12 +7,7 @@
|
||||
|
||||
<extensions defaultExtensionNs="com.intellij">
|
||||
<projectStructureDetector implementation="com.intellij.remoteServer.util.importProject.CloudGitProjectStructureDetector"/>
|
||||
<postStartupActivity implementation="com.intellij.remoteServer.util.importProject.CloudGitRemoteDetector$MyStartUpActivity"/>
|
||||
<projectService serviceImplementation="com.intellij.remoteServer.util.importProject.CloudGitRemoteDetector"/>
|
||||
</extensions>
|
||||
|
||||
<project-components>
|
||||
<component>
|
||||
<implementation-class>com.intellij.remoteServer.util.importProject.CloudGitRemoteDetector</implementation-class>
|
||||
</component>
|
||||
</project-components>
|
||||
|
||||
</idea-plugin>
|
||||
|
||||
+38
-29
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2000-2014 JetBrains s.r.o.
|
||||
* Copyright 2000-2015 JetBrains s.r.o.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
@@ -15,7 +15,6 @@
|
||||
*/
|
||||
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;
|
||||
@@ -29,10 +28,12 @@ import com.intellij.ide.util.projectWizard.ImportFromSourcesProvider;
|
||||
import com.intellij.ide.wizard.Step;
|
||||
import com.intellij.notification.Notification;
|
||||
import com.intellij.notification.NotificationListener;
|
||||
import com.intellij.openapi.components.AbstractProjectComponent;
|
||||
import com.intellij.openapi.components.ServiceManager;
|
||||
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;
|
||||
@@ -61,20 +62,15 @@ import java.util.Map;
|
||||
/**
|
||||
* @author michael.golubev
|
||||
*/
|
||||
public class CloudGitRemoteDetector extends AbstractProjectComponent implements GitRepositoryChangeListener {
|
||||
|
||||
private final GitRepositoryManager myRepositoryManager;
|
||||
private final RunManagerEx myRunManager;
|
||||
public class CloudGitRemoteDetector {
|
||||
private final Project myProject;
|
||||
|
||||
private final CloudNotifier myNotifier;
|
||||
|
||||
private final List<CloudTypeDelegate> myDelegates;
|
||||
|
||||
public CloudGitRemoteDetector(Project project, GitRepositoryManager repositoryManager, RunManager runManager) {
|
||||
super(project);
|
||||
myRepositoryManager = repositoryManager;
|
||||
myRunManager = (RunManagerEx)runManager;
|
||||
|
||||
public CloudGitRemoteDetector(@NotNull Project project) {
|
||||
myProject = project;
|
||||
myNotifier = new CloudNotifier("Git remotes detector");
|
||||
|
||||
myDelegates = new ArrayList<CloudTypeDelegate>();
|
||||
@@ -83,22 +79,36 @@ public class CloudGitRemoteDetector extends AbstractProjectComponent implements
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void projectOpened() {
|
||||
myProject.getMessageBus().connect().subscribe(GitRepository.GIT_REPO_CHANGE, this);
|
||||
private static CloudGitRemoteDetector getInstance() {
|
||||
return ServiceManager.getService(CloudGitRemoteDetector.class);
|
||||
}
|
||||
|
||||
myRunManager.addRunManagerListener(new RunManagerAdapter() {
|
||||
|
||||
@Override
|
||||
public void runConfigurationAdded(@NotNull RunnerAndConfigurationSettings settings) {
|
||||
onRunConfigurationAddedOrChanged(settings);
|
||||
static final class MyStartUpActivity implements StartupActivity, DumbAware {
|
||||
@Override
|
||||
public void runActivity(@NotNull final Project project) {
|
||||
if (project.isDefault()) {
|
||||
return;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void runConfigurationChanged(@NotNull RunnerAndConfigurationSettings settings) {
|
||||
onRunConfigurationAddedOrChanged(settings);
|
||||
}
|
||||
});
|
||||
project.getMessageBus().connect().subscribe(GitRepository.GIT_REPO_CHANGE, new GitRepositoryChangeListener() {
|
||||
@Override
|
||||
public void repositoryChanged(@NotNull GitRepository repository) {
|
||||
getInstance().repositoryChanged(repository);
|
||||
}
|
||||
});
|
||||
|
||||
RunManagerEx.getInstanceEx(project).addRunManagerListener(new RunManagerAdapter() {
|
||||
@Override
|
||||
public void runConfigurationAdded(@NotNull RunnerAndConfigurationSettings settings) {
|
||||
getInstance().onRunConfigurationAddedOrChanged(settings);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void runConfigurationChanged(@NotNull RunnerAndConfigurationSettings settings) {
|
||||
getInstance().onRunConfigurationAddedOrChanged(settings);
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
private void onRunConfigurationAddedOrChanged(RunnerAndConfigurationSettings settings) {
|
||||
@@ -108,8 +118,7 @@ public class CloudGitRemoteDetector extends AbstractProjectComponent implements
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void repositoryChanged(@NotNull GitRepository repository) {
|
||||
private void repositoryChanged(@NotNull GitRepository repository) {
|
||||
for (CloudTypeDelegate delegate : myDelegates) {
|
||||
delegate.repositoryChanged(repository);
|
||||
}
|
||||
@@ -148,7 +157,7 @@ public class CloudGitRemoteDetector extends AbstractProjectComponent implements
|
||||
|
||||
private boolean hasRunConfig4Repository(GitRepository repository) {
|
||||
List<RunConfiguration> runConfigurations
|
||||
= myRunManager.getConfigurationsList(DeployToServerConfigurationTypesRegistrar.getDeployConfigurationType(getCloudType()));
|
||||
= RunManagerEx.getInstanceEx(myProject).getConfigurationsList(DeployToServerConfigurationTypesRegistrar.getDeployConfigurationType(getCloudType()));
|
||||
|
||||
VirtualFile repositoryRoot = repository.getRoot();
|
||||
|
||||
@@ -184,7 +193,7 @@ public class CloudGitRemoteDetector extends AbstractProjectComponent implements
|
||||
return;
|
||||
}
|
||||
|
||||
GitRepository repository = myRepositoryManager.getRepositoryForRoot(contentRoot);
|
||||
GitRepository repository = GitRepositoryManager.getInstance(myProject).getRepositoryForRoot(contentRoot);
|
||||
if (repository == null) {
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2000-2012 JetBrains s.r.o.
|
||||
* Copyright 2000-2015 JetBrains s.r.o.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
@@ -18,6 +18,7 @@ package git4idea.repo;
|
||||
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;
|
||||
@@ -27,7 +28,6 @@ import org.jetbrains.annotations.NotNull;
|
||||
import java.util.List;
|
||||
|
||||
public class GitRepositoryManager extends AbstractRepositoryManager<GitRepository> {
|
||||
|
||||
@NotNull private final GitPlatformFacade myPlatformFacade;
|
||||
@NotNull private final Project myProject;
|
||||
|
||||
@@ -38,6 +38,10 @@ public class GitRepositoryManager extends AbstractRepositoryManager<GitRepositor
|
||||
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 &&
|
||||
|
||||
Reference in New Issue
Block a user