IDEA-319883 Move AnalyzeModuleDependencyAction.findUsedScopes to a BGT

Hijack the result class by allowing to extend it and put the result there.
It's OK, as this class is internal and was introduced exactly for this purpose:
storing various precomputed stuff to be used in the EDT later.

GitOrigin-RevId: 4801518afa4aef8a383a0fb19c7f0bd79076f05d
This commit is contained in:
Sergei Tachenov
2023-08-30 16:19:33 +00:00
committed by intellij-monorepo-bot
parent 7076f54b6b
commit 18ac9b3822
3 changed files with 28 additions and 4 deletions
@@ -68,7 +68,7 @@ class AnalyzeModuleDependencyAction extends AnAction {
GlobalSearchScope.union(scopes.toArray(GlobalSearchScope.EMPTY_ARRAY))) {
@Override
protected boolean shouldShowDependenciesPanel(@NotNull DependencyAnalysisResult result) {
Set<GlobalSearchScope> usedScopes = findUsedScopes(result.getBuilders(), scopes);
Set<GlobalSearchScope> usedScopes = ((MyAnalyzeResult)result).usedScopes;
if (usedScopes.contains(mainScope)) {
Messages.showInfoMessage(myProject,
JavaUiBundle
@@ -126,6 +126,17 @@ class AnalyzeModuleDependencyAction extends AnAction {
};
}
@Override
protected @NotNull DependencyAnalysisResult createAnalysisResult() {
return new MyAnalyzeResult();
}
@Override
protected void bgtPostAnalyze(DependencyAnalysisResult result) {
super.bgtPostAnalyze(result);
((MyAnalyzeResult)result).usedScopes = findUsedScopes(result.getBuilders(), scopes);
}
@Override
protected boolean canStartInBackground() {
return false;
@@ -186,4 +197,8 @@ class AnalyzeModuleDependencyAction extends AnAction {
public @NotNull ActionUpdateThread getActionUpdateThread() {
return ActionUpdateThread.EDT;
}
private static class MyAnalyzeResult extends DependencyAnalysisResult {
Set<GlobalSearchScope> usedScopes;
}
}
@@ -5,7 +5,7 @@ import com.intellij.openapi.util.NlsContexts
import org.jetbrains.annotations.ApiStatus.Internal
@Internal
class DependencyAnalysisResult(
open class DependencyAnalysisResult(
val builders: MutableList<DependenciesBuilder> = arrayListOf()
) {
@@ -40,7 +40,7 @@ public abstract class DependenciesHandlerBase {
}
public void analyze() {
final DependencyAnalysisResult result = new DependencyAnalysisResult();
final DependencyAnalysisResult result = createAnalysisResult();
final Task task;
if (canStartInBackground()) {
@@ -73,6 +73,11 @@ public abstract class DependenciesHandlerBase {
ProgressManager.getInstance().run(task);
}
@NotNull
protected DependencyAnalysisResult createAnalysisResult() {
return new DependencyAnalysisResult();
}
protected boolean canStartInBackground() {
return true;
}
@@ -96,7 +101,7 @@ public abstract class DependenciesHandlerBase {
for (DependenciesBuilder builder : result.getBuilders()) {
builder.analyze();
}
result.panelDisplayName = getPanelDisplayName(result.getBuilders().get(0).getScope());
bgtPostAnalyze(result);
snapshot.logResponsivenessSinceCreation("Dependency analysis");
}
catch (IndexNotReadyException e) {
@@ -106,6 +111,10 @@ public abstract class DependenciesHandlerBase {
}
}
protected void bgtPostAnalyze(DependencyAnalysisResult result) {
result.panelDisplayName = getPanelDisplayName(result.getBuilders().get(0).getScope());
}
private void onSuccess(final DependencyAnalysisResult result) {
//noinspection SSBasedInspection
SwingUtilities.invokeLater(() -> {