mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
run check for required plugins when list of required plugins is reloaded (e.g. after 'Update Project')
This commit is contained in:
+5
@@ -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;
|
||||
|
||||
|
||||
+18
@@ -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 {
|
||||
|
||||
Reference in New Issue
Block a user