run check for required plugins when list of required plugins is reloaded (e.g. after 'Update Project')

This commit is contained in:
nik
2015-10-01 13:08:15 +03:00
parent 584d551eb0
commit 829af376c6
2 changed files with 23 additions and 0 deletions
@@ -45,6 +45,11 @@ public class CheckRequiredPluginsActivity implements StartupActivity, DumbAware
@Override
public void runActivity(@NotNull final Project project) {
//will trigger 'loadState' and run check if required plugins are specified
ExternalDependenciesManager.getInstance(project);
}
public static void runCheck(@NotNull final Project project) {
List<DependencyOnPlugin> dependencies = ExternalDependenciesManager.getInstance(project).getDependencies(DependencyOnPlugin.class);
if (dependencies.isEmpty()) return;
@@ -19,6 +19,9 @@ import com.intellij.externalDependencies.DependencyOnPlugin;
import com.intellij.externalDependencies.ExternalDependenciesManager;
import com.intellij.externalDependencies.ProjectExternalDependency;
import com.intellij.openapi.components.*;
import com.intellij.openapi.project.DumbAwareRunnable;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.startup.StartupManager;
import com.intellij.util.containers.ContainerUtil;
import com.intellij.util.containers.FilteringIterator;
import com.intellij.util.xmlb.annotations.AbstractCollection;
@@ -42,6 +45,12 @@ import java.util.List;
}
)
public class ExternalDependenciesManagerImpl extends ExternalDependenciesManager implements PersistentStateComponent<ExternalDependenciesManagerImpl.ExternalDependenciesState> {
private final Project myProject;
public ExternalDependenciesManagerImpl(Project project) {
myProject = project;
}
private static final Comparator<ProjectExternalDependency> DEPENDENCY_COMPARATOR = new Comparator<ProjectExternalDependency>() {
@Override
public int compare(ProjectExternalDependency o1, ProjectExternalDependency o2) {
@@ -84,10 +93,19 @@ public class ExternalDependenciesManagerImpl extends ExternalDependenciesManager
@Override
public void loadState(ExternalDependenciesState state) {
ArrayList<ProjectExternalDependency> oldDependencies = new ArrayList<ProjectExternalDependency>(myDependencies);
myDependencies.clear();
for (DependencyOnPluginState dependency : state.myDependencies) {
myDependencies.add(new DependencyOnPlugin(dependency.myId, dependency.myMinVersion, dependency.myMaxVersion));
}
if (!oldDependencies.equals(myDependencies) && !myDependencies.isEmpty()) {
StartupManager.getInstance(myProject).runWhenProjectIsInitialized(new DumbAwareRunnable() {
@Override
public void run() {
CheckRequiredPluginsActivity.runCheck(myProject);
}
});
}
}
public static class ExternalDependenciesState {