From 4f83f03fae5f75ddc1a7df71935cfa50d7039af0 Mon Sep 17 00:00:00 2001 From: Anna Kozlova Date: Mon, 23 Mar 2015 17:36:09 +0100 Subject: [PATCH] extract parameter object: make change signature command invisible for user (IDEA-138024) --- .../usageInfo/MergeMethodArguments.java | 22 +++++++++++++------ 1 file changed, 15 insertions(+), 7 deletions(-) diff --git a/java/java-impl/src/com/intellij/refactoring/introduceparameterobject/usageInfo/MergeMethodArguments.java b/java/java-impl/src/com/intellij/refactoring/introduceparameterobject/usageInfo/MergeMethodArguments.java index f127efd9f450..0aecd58be007 100644 --- a/java/java-impl/src/com/intellij/refactoring/introduceparameterobject/usageInfo/MergeMethodArguments.java +++ b/java/java-impl/src/com/intellij/refactoring/introduceparameterobject/usageInfo/MergeMethodArguments.java @@ -16,6 +16,8 @@ package com.intellij.refactoring.introduceparameterobject.usageInfo; import com.intellij.openapi.application.ApplicationManager; +import com.intellij.openapi.command.CommandProcessor; +import com.intellij.openapi.project.Project; import com.intellij.openapi.util.Comparing; import com.intellij.openapi.util.text.StringUtil; import com.intellij.psi.*; @@ -66,14 +68,15 @@ public class MergeMethodArguments extends FixableUsageInfo { } public void fixUsage() throws IncorrectOperationException { - final JavaPsiFacade psiFacade = JavaPsiFacade.getInstance(method.getProject()); + final Project project = method.getProject(); + final JavaPsiFacade psiFacade = JavaPsiFacade.getInstance(project); final PsiMethod deepestSuperMethod = method.findDeepestSuperMethod(); final PsiClass psiClass; if (myContainingClass != null) { psiClass = myContainingClass.findInnerClassByName(className, false); } else { - psiClass = psiFacade.findClass(StringUtil.getQualifiedName(packageName, className), GlobalSearchScope.allScope(getProject())); + psiClass = psiFacade.findClass(StringUtil.getQualifiedName(packageName, className), GlobalSearchScope.allScope(project)); } assert psiClass != null; PsiSubstitutor subst = PsiSubstitutor.EMPTY; @@ -93,12 +96,12 @@ public class MergeMethodArguments extends FixableUsageInfo { } } final List parametersInfo = new ArrayList(); - final PsiClassType classType = JavaPsiFacade.getElementFactory(getProject()).createType(psiClass, subst); + final PsiClassType classType = JavaPsiFacade.getElementFactory(project).createType(psiClass, subst); final ParameterInfoImpl mergedParamInfo = new ParameterInfoImpl(-1, parameterName, classType, null) { @Override public PsiExpression getValue(final PsiCallExpression expr) throws IncorrectOperationException { - return (PsiExpression)JavaCodeStyleManager.getInstance(getProject()) + return (PsiExpression)JavaCodeStyleManager.getInstance(project) .shortenClassReferences(psiFacade.getElementFactory().createExpressionFromText(getMergedParam(expr), expr)); } }; @@ -114,9 +117,9 @@ public class MergeMethodArguments extends FixableUsageInfo { } parametersInfo.add(firstIncludedIdx == -1 ? 0 : firstIncludedIdx, mergedParamInfo); - final SmartPsiElementPointer meth = SmartPointerManager.getInstance(getProject()).createSmartPsiElementPointer(method); + final SmartPsiElementPointer meth = SmartPointerManager.getInstance(project).createSmartPsiElementPointer(method); - Runnable performChangeSignatureRunnable = new Runnable() { + final Runnable performChangeSignatureRunnable = new Runnable() { @Override public void run() { final PsiMethod psiMethod = meth.getElement(); @@ -134,7 +137,12 @@ public class MergeMethodArguments extends FixableUsageInfo { if (ApplicationManager.getApplication().isUnitTestMode()) { performChangeSignatureRunnable.run(); } else { - ApplicationManager.getApplication().invokeLater(performChangeSignatureRunnable); + ApplicationManager.getApplication().invokeLater(new Runnable() { + @Override + public void run() { + CommandProcessor.getInstance().runUndoTransparentAction(performChangeSignatureRunnable); + } + }); } }