From db5675dd4ea7f6eb2821b18692e419110b8aecc8 Mon Sep 17 00:00:00 2001 From: Tagir Valeev Date: Fri, 24 Jul 2026 16:36:12 +0200 Subject: [PATCH] IDEA-391989 [java-injection-ui] "Select annotation class" window is not showing up in 2026.2 (cherry picked from commit e68d16e423df853c53d134dab143bdb94a778993) IJ-CR-215387 GitOrigin-RevId: 61b2f2d43ab21c3f9137d9c5253683ec9bc60dc7 --- .../intelliLang/AdvancedSettingsUI.java | 29 ++++++++++++------- 1 file changed, 19 insertions(+), 10 deletions(-) diff --git a/java/langInjection/src/org/intellij/plugins/intelliLang/AdvancedSettingsUI.java b/java/langInjection/src/org/intellij/plugins/intelliLang/AdvancedSettingsUI.java index ed544530f574..4dde37dd7861 100644 --- a/java/langInjection/src/org/intellij/plugins/intelliLang/AdvancedSettingsUI.java +++ b/java/langInjection/src/org/intellij/plugins/intelliLang/AdvancedSettingsUI.java @@ -4,6 +4,8 @@ package org.intellij.plugins.intelliLang; import com.intellij.ide.util.TreeClassChooser; import com.intellij.ide.util.TreeClassChooserFactory; +import com.intellij.openapi.application.ModalityState; +import com.intellij.openapi.application.ReadAction; import com.intellij.openapi.options.ConfigurationException; import com.intellij.openapi.options.SearchableConfigurable; import com.intellij.openapi.project.Project; @@ -11,6 +13,7 @@ import com.intellij.psi.JavaPsiFacade; import com.intellij.psi.PsiClass; import com.intellij.psi.search.GlobalSearchScope; import com.intellij.ui.ReferenceEditorWithBrowseButton; +import com.intellij.util.concurrency.AppExecutorUtil; import org.jetbrains.annotations.NotNull; import javax.swing.JComponent; @@ -85,16 +88,22 @@ public class AdvancedSettingsUI implements SearchableConfigurable { final TreeClassChooserFactory factory = TreeClassChooserFactory.getInstance(myProject); final GlobalSearchScope scope = GlobalSearchScope.allScope(myProject); - final PsiClass aClass = JavaPsiFacade.getInstance(myProject).findClass(myField.getText(), scope); - final TreeClassChooser chooser = - factory.createNoInnerClassesScopeChooser(IntelliLangBundle.message("dialog.title.select.annotation.class"), scope, - PsiClass::isAnnotationType, aClass); - - chooser.showDialog(); - final PsiClass psiClass = chooser.getSelected(); - if (psiClass != null) { - myField.setText(psiClass.getQualifiedName()); - } + ReadAction.nonBlocking(() -> JavaPsiFacade.getInstance(myProject).findClass(myField.getText(), scope)) + .expireWhen(() -> myProject.isDisposed()) + .finishOnUiThread(ModalityState.current(), aClass -> { + final TreeClassChooser chooser = + factory.createNoInnerClassesScopeChooser(IntelliLangBundle.message("dialog.title.select.annotation.class"), scope, + PsiClass::isAnnotationType, aClass); + chooser.showDialog(); + final PsiClass psiClass = chooser.getSelected(); + if (psiClass != null) { + String name = psiClass.getQualifiedName(); + if (name != null) { + myField.setText(name); + } + } + }) + .submit(AppExecutorUtil.getAppExecutorService()); } } }