From 829af376c698e7f6718e70b78edcea98da602d83 Mon Sep 17 00:00:00 2001 From: nik Date: Thu, 1 Oct 2015 12:17:06 +0300 Subject: [PATCH] run check for required plugins when list of required plugins is reloaded (e.g. after 'Update Project') --- .../impl/CheckRequiredPluginsActivity.java | 5 +++++ .../impl/ExternalDependenciesManagerImpl.java | 18 ++++++++++++++++++ 2 files changed, 23 insertions(+) diff --git a/platform/platform-impl/src/com/intellij/externalDependencies/impl/CheckRequiredPluginsActivity.java b/platform/platform-impl/src/com/intellij/externalDependencies/impl/CheckRequiredPluginsActivity.java index eee2b3ad340e..a85400460c81 100644 --- a/platform/platform-impl/src/com/intellij/externalDependencies/impl/CheckRequiredPluginsActivity.java +++ b/platform/platform-impl/src/com/intellij/externalDependencies/impl/CheckRequiredPluginsActivity.java @@ -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 dependencies = ExternalDependenciesManager.getInstance(project).getDependencies(DependencyOnPlugin.class); if (dependencies.isEmpty()) return; diff --git a/platform/platform-impl/src/com/intellij/externalDependencies/impl/ExternalDependenciesManagerImpl.java b/platform/platform-impl/src/com/intellij/externalDependencies/impl/ExternalDependenciesManagerImpl.java index 54798d035759..38990458cf5c 100644 --- a/platform/platform-impl/src/com/intellij/externalDependencies/impl/ExternalDependenciesManagerImpl.java +++ b/platform/platform-impl/src/com/intellij/externalDependencies/impl/ExternalDependenciesManagerImpl.java @@ -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 { + private final Project myProject; + + public ExternalDependenciesManagerImpl(Project project) { + myProject = project; + } + private static final Comparator DEPENDENCY_COMPARATOR = new Comparator() { @Override public int compare(ProjectExternalDependency o1, ProjectExternalDependency o2) { @@ -84,10 +93,19 @@ public class ExternalDependenciesManagerImpl extends ExternalDependenciesManager @Override public void loadState(ExternalDependenciesState state) { + ArrayList oldDependencies = new ArrayList(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 {