From d6fb4038db82d782109dc7f3afd1ca69f37cdd36 Mon Sep 17 00:00:00 2001 From: peter Date: Mon, 20 Mar 2017 16:52:23 +0100 Subject: [PATCH] cucumber: show step definition creation dialogs outside write action (EA-91966 - assert: NoSwingUnderWriteAction.lambda$watchForEvents$) --- .../groovy/actions/GroovyTemplatesFactory.java | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/plugins/groovy/src/org/jetbrains/plugins/groovy/actions/GroovyTemplatesFactory.java b/plugins/groovy/src/org/jetbrains/plugins/groovy/actions/GroovyTemplatesFactory.java index f9d2e811adaf..1f41d37db57f 100644 --- a/plugins/groovy/src/org/jetbrains/plugins/groovy/actions/GroovyTemplatesFactory.java +++ b/plugins/groovy/src/org/jetbrains/plugins/groovy/actions/GroovyTemplatesFactory.java @@ -20,6 +20,7 @@ import com.intellij.codeInsight.actions.ReformatCodeProcessor; import com.intellij.ide.fileTemplates.FileTemplate; import com.intellij.ide.fileTemplates.FileTemplateManager; import com.intellij.ide.fileTemplates.JavaTemplateUtil; +import com.intellij.openapi.application.WriteAction; import com.intellij.openapi.project.Project; import com.intellij.openapi.util.text.StringUtil; import com.intellij.psi.PsiDirectory; @@ -64,15 +65,17 @@ public class GroovyTemplatesFactory { throw new RuntimeException(message, e); } - final PsiFileFactory factory = PsiFileFactory.getInstance(project); - PsiFile file = factory.createFileFromText(fileName, GroovyFileType.GROOVY_FILE_TYPE, text); + return WriteAction.compute(() -> { + final PsiFileFactory factory = PsiFileFactory.getInstance(project); + PsiFile file = factory.createFileFromText(fileName, GroovyFileType.GROOVY_FILE_TYPE, text); - file = (PsiFile)directory.add(file); + file = (PsiFile)directory.add(file); - if (file != null && allowReformatting && template.isReformatCode()) { - new ReformatCodeProcessor(project, file, null, false).run(); - } + if (file != null && allowReformatting && template.isReformatCode()) { + new ReformatCodeProcessor(project, file, null, false).run(); + } - return file; + return file; + }); } }