From 2b11f13afca9ac86e404ed72c776335a26c544f8 Mon Sep 17 00:00:00 2001 From: anna Date: Mon, 6 Feb 2012 20:56:33 +0100 Subject: [PATCH] IDEA-80889 AE at com.intellij.psi.impl.PsiDocumentManagerImpl.a --- .../impl/quickfix/CreateClassFromNewFix.java | 27 ++++++++++++++----- 1 file changed, 20 insertions(+), 7 deletions(-) diff --git a/java/java-impl/src/com/intellij/codeInsight/daemon/impl/quickfix/CreateClassFromNewFix.java b/java/java-impl/src/com/intellij/codeInsight/daemon/impl/quickfix/CreateClassFromNewFix.java index 3165e7e01aad..49b37d9b9b2a 100644 --- a/java/java-impl/src/com/intellij/codeInsight/daemon/impl/quickfix/CreateClassFromNewFix.java +++ b/java/java-impl/src/com/intellij/codeInsight/daemon/impl/quickfix/CreateClassFromNewFix.java @@ -89,7 +89,7 @@ public class CreateClassFromNewFix extends CreateFromUsageBaseFix { setupInheritance(newExpression, aClass); PsiExpressionList argList = newExpression.getArgumentList(); - Project project = aClass.getProject(); + final Project project = aClass.getProject(); if (argList != null && argList.getExpressions().length > 0) { PsiMethod constructor = elementFactory.createConstructor(); constructor = (PsiMethod) aClass.add(constructor); @@ -101,14 +101,27 @@ public class CreateClassFromNewFix extends CreateFromUsageBaseFix { getReferenceElement(newExpression).bindToElement(aClass); aClass = CodeInsightUtilBase.forcePsiPostprocessAndRestoreElement(aClass); - Template template = templateBuilder.buildTemplate(); + final Template template = templateBuilder.buildTemplate(); template.setToReformat(true); - Editor editor = positionCursor(project, aClass.getContainingFile(), aClass); - TextRange textRange = aClass.getTextRange(); - editor.getDocument().deleteString(textRange.getStartOffset(), textRange.getEndOffset()); - - startTemplate(editor, template, project, null, getText()); + final Editor editor = positionCursor(project, aClass.getContainingFile(), aClass); + final TextRange textRange = aClass.getTextRange(); + final Runnable runnable = new Runnable() { + public void run() { + new WriteCommandAction(project, getText(), getText()) { + @Override + protected void run(Result result) throws Throwable { + editor.getDocument().deleteString(textRange.getStartOffset(), textRange.getEndOffset()); + } + }.execute(); + startTemplate(editor, template, project, null, getText()); + } + }; + if (ApplicationManager.getApplication().isUnitTestMode()) { + runnable.run(); + } else { + ApplicationManager.getApplication().invokeLater(runnable); + } } else { positionCursor(project, aClass.getContainingFile(), aClass);