diff --git a/java/java-impl/src/com/intellij/codeInsight/daemon/impl/actions/AddImportAction.java b/java/java-impl/src/com/intellij/codeInsight/daemon/impl/actions/AddImportAction.java index c0cec3b47088..dabbbd097fff 100644 --- a/java/java-impl/src/com/intellij/codeInsight/daemon/impl/actions/AddImportAction.java +++ b/java/java-impl/src/com/intellij/codeInsight/daemon/impl/actions/AddImportAction.java @@ -116,9 +116,10 @@ public class AddImportAction implements QuestionAction { } if (finalChoice) { - PsiDocumentManager.getInstance(myProject).commitAllDocuments(); - addImport(myReference, selectedValue); - return FINAL_CHOICE; + return doFinalStep(() -> { + PsiDocumentManager.getInstance(myProject).commitAllDocuments(); + addImport(myReference, selectedValue); + }); } return getExcludesStep(selectedValue.getQualifiedName(), myProject); diff --git a/java/java-impl/src/com/intellij/codeInsight/daemon/impl/quickfix/StaticImportMethodQuestionAction.java b/java/java-impl/src/com/intellij/codeInsight/daemon/impl/quickfix/StaticImportMethodQuestionAction.java index 3ca732bfa4d9..7087c0fb08e5 100644 --- a/java/java-impl/src/com/intellij/codeInsight/daemon/impl/quickfix/StaticImportMethodQuestionAction.java +++ b/java/java-impl/src/com/intellij/codeInsight/daemon/impl/quickfix/StaticImportMethodQuestionAction.java @@ -15,6 +15,7 @@ */ package com.intellij.codeInsight.daemon.impl.quickfix; +import com.intellij.codeInsight.FileModificationService; import com.intellij.codeInsight.daemon.QuickFixBundle; import com.intellij.codeInsight.daemon.impl.actions.AddImportAction; import com.intellij.codeInsight.hint.QuestionAction; @@ -22,7 +23,7 @@ import com.intellij.codeInsight.intention.impl.AddSingleMemberStaticImportAction import com.intellij.ide.util.PsiClassListCellRenderer; import com.intellij.ide.util.PsiElementListCellRenderer; import com.intellij.openapi.application.ApplicationManager; -import com.intellij.openapi.command.CommandProcessor; +import com.intellij.openapi.command.WriteCommandAction; import com.intellij.openapi.diagnostic.Logger; import com.intellij.openapi.editor.Editor; import com.intellij.openapi.editor.markup.TextAttributes; @@ -91,27 +92,18 @@ public class StaticImportMethodQuestionAction implements Qu private void doImport(final T toImport) { final Project project = toImport.getProject(); - CommandProcessor.getInstance().executeCommand(project, new Runnable(){ - @Override - public void run() { - ApplicationManager.getApplication().runWriteAction(new Runnable() { - @Override - public void run() { - try { - PsiElement element = myRef.getElement(); - if (element != null) { - AddSingleMemberStaticImportAction.bindAllClassRefs(element.getContainingFile(), toImport, toImport.getName(), toImport.getContainingClass()); - } - } - catch (IncorrectOperationException e) { - LOG.error(e); - } - } - }); - + final PsiElement element = myRef.getElement(); + if (element == null) return; + if (!FileModificationService.getInstance().prepareFileForWrite(element.getContainingFile())) return; + WriteCommandAction.runWriteCommandAction(project, QuickFixBundle.message("add.import"), null, () -> { + try { + AddSingleMemberStaticImportAction + .bindAllClassRefs(element.getContainingFile(), toImport, toImport.getName(), toImport.getContainingClass()); } - }, QuickFixBundle.message("add.import"), this); - + catch (IncorrectOperationException e) { + LOG.error(e); + } + }); } private void chooseAndImport(final Editor editor, final Project project) { @@ -139,10 +131,11 @@ public class StaticImportMethodQuestionAction implements Qu } if (finalChoice) { - PsiDocumentManager.getInstance(project).commitAllDocuments(); - LOG.assertTrue(selectedValue.isValid()); - doImport(selectedValue); - return FINAL_CHOICE; + return doFinalStep(() -> { + PsiDocumentManager.getInstance(project).commitAllDocuments(); + LOG.assertTrue(selectedValue.isValid()); + doImport(selectedValue); + }); } return AddImportAction.getExcludesStep(PsiUtil.getMemberQualifiedName(selectedValue), project);