From c31aa3ee09176803ba7ea357b05f4d8db9f22f21 Mon Sep 17 00:00:00 2001 From: tangcent Date: Thu, 24 Nov 2022 07:26:11 +0800 Subject: [PATCH] fix: open FileChooser at AWT Thread --- common-api/build.gradle | 2 +- idea-plugin/build.gradle | 8 ++++---- .../itangcent/idea/plugin/rule/ScriptRuleParser.kt | 11 +++++------ .../com/itangcent/idea/utils/IdeaFileChooserHelper.kt | 2 +- 4 files changed, 11 insertions(+), 12 deletions(-) diff --git a/common-api/build.gradle b/common-api/build.gradle index 26ae6c327..d9a025801 100644 --- a/common-api/build.gradle +++ b/common-api/build.gradle @@ -26,7 +26,7 @@ dependencies { implementation "org.jetbrains.kotlin:kotlin-reflect:$kotlin_version" - implementation('com.itangcent:commons:1.4.2') { + implementation('com.itangcent:commons:1.4.32-SNAPSHOT') { exclude group: 'com.google.inject' exclude group: 'com.google.code.gson' } diff --git a/idea-plugin/build.gradle b/idea-plugin/build.gradle index 1903b446b..5edcb9fe7 100644 --- a/idea-plugin/build.gradle +++ b/idea-plugin/build.gradle @@ -78,17 +78,17 @@ dependencies { // implementation fileTree(dir: 'libs', include: ['*.jar']) - implementation('com.itangcent:intellij-idea:1.4.2') { + implementation('com.itangcent:intellij-idea:1.4.32-SNAPSHOT') { exclude group: 'com.google.inject' exclude group: 'com.google.code.gson' } - implementation('com.itangcent:intellij-kotlin-support:1.4.2') { + implementation('com.itangcent:intellij-kotlin-support:1.4.32-SNAPSHOT') { exclude group: 'com.google.inject' exclude group: 'com.google.code.gson' } -// implementation('com.itangcent:intellij-scala-support:1.4.2') { +// implementation('com.itangcent:intellij-scala-support:1.4.32-SNAPSHOT') { // exclude group: 'com.google.inject' // exclude group: 'com.google.code.gson' // } @@ -122,7 +122,7 @@ dependencies { // https://mvnrepository.com/artifact/org.mockito/mockito-inline testImplementation group: 'org.mockito', name: 'mockito-inline', version: '3.11.0' - testImplementation('com.itangcent:intellij-idea-test:1.4.2') { + testImplementation('com.itangcent:intellij-idea-test:1.4.32-SNAPSHOT') { exclude group: 'com.nhaarman.mockitokotlin2', module: 'mockito-kotlin' } } diff --git a/idea-plugin/src/main/kotlin/com/itangcent/idea/plugin/rule/ScriptRuleParser.kt b/idea-plugin/src/main/kotlin/com/itangcent/idea/plugin/rule/ScriptRuleParser.kt index 605676578..ceb6ffc7e 100644 --- a/idea-plugin/src/main/kotlin/com/itangcent/idea/plugin/rule/ScriptRuleParser.kt +++ b/idea-plugin/src/main/kotlin/com/itangcent/idea/plugin/rule/ScriptRuleParser.kt @@ -27,9 +27,8 @@ import com.itangcent.intellij.jvm.element.ExplicitMethod import com.itangcent.intellij.jvm.element.ExplicitParameter import com.itangcent.intellij.logger.Logger import com.itangcent.intellij.psi.ClassRuleConfig -import com.itangcent.intellij.jvm.JsonOption import com.itangcent.intellij.psi.PsiClassUtils -import java.util.LinkedList +import java.util.* import javax.script.ScriptContext import javax.script.ScriptEngine import javax.script.SimpleScriptContext @@ -319,7 +318,7 @@ abstract class ScriptRuleParser : RuleParser { } fun sourceCode(): String? { - return psiElement?.text + return actionContext.callInReadUI { psiElement?.text } } fun defineCode(): String? { @@ -426,11 +425,11 @@ abstract class ScriptRuleParser : RuleParser { } override fun getName(): String? { - return psiClass.qualifiedName + return actionContext.callInReadUI { psiClass.qualifiedName } } override fun getSimpleName(): String? { - return psiClass.name + return actionContext.callInReadUI { psiClass.name } } override fun toJson(): String? { @@ -746,7 +745,7 @@ abstract class ScriptRuleParser : RuleParser { } override fun getName(): String? { - return psiMethod.name + return actionContext.callInReadUI { psiMethod.name } } fun jsonName(): String? { diff --git a/idea-plugin/src/main/kotlin/com/itangcent/idea/utils/IdeaFileChooserHelper.kt b/idea-plugin/src/main/kotlin/com/itangcent/idea/utils/IdeaFileChooserHelper.kt index 01cd0e504..e5387d30f 100644 --- a/idea-plugin/src/main/kotlin/com/itangcent/idea/utils/IdeaFileChooserHelper.kt +++ b/idea-plugin/src/main/kotlin/com/itangcent/idea/utils/IdeaFileChooserHelper.kt @@ -53,7 +53,7 @@ class IdeaFileChooserHelper private constructor( if (lastLocation != null) { toSelect = LocalFileSystem.getInstance().refreshAndFindFileByPath(lastLocation) } - actionContext.runInSwingUI { + actionContext.runInAWT { val chooser = FileChooserFactory.getInstance().createFileChooser(descriptor, project, null) val files = chooser.choose(project, toSelect) if (files.isNotEmpty()) {