From 18a54e041cef5bfeb85d5c0a72eaa72d719a35ff Mon Sep 17 00:00:00 2001 From: Anna Kozlova Date: Fri, 3 Feb 2012 13:36:40 +0400 Subject: [PATCH] rename additional without automatic renamers --- .../inplace/VariableInplaceRenamer.java | 103 ++++++++++-------- .../inplace/GrVariableInplaceRenamer.java | 34 ++---- 2 files changed, 64 insertions(+), 73 deletions(-) diff --git a/platform/lang-impl/src/com/intellij/refactoring/rename/inplace/VariableInplaceRenamer.java b/platform/lang-impl/src/com/intellij/refactoring/rename/inplace/VariableInplaceRenamer.java index dbbc8436de8f..0268a3086787 100644 --- a/platform/lang-impl/src/com/intellij/refactoring/rename/inplace/VariableInplaceRenamer.java +++ b/platform/lang-impl/src/com/intellij/refactoring/rename/inplace/VariableInplaceRenamer.java @@ -84,7 +84,6 @@ public class VariableInplaceRenamer extends InplaceRefactoring { final String initialName, final String oldName) { super(editor, elementToRename, project, initialName, oldName); - } public boolean performInplaceRename() { @@ -115,7 +114,8 @@ public class VariableInplaceRenamer extends InplaceRefactoring { final PsiFile containingFile) { if (appendAdditionalElement(stringUsages)) { return super.buildTemplateAndStart(refs, stringUsages, scope, containingFile); - } else { + } + else { final RenameChooser renameChooser = new RenameChooser(myEditor) { @Override protected void runRenameTemplate(Collection> stringUsages) { @@ -179,10 +179,61 @@ public class VariableInplaceRenamer extends InplaceRefactoring { } } + protected void renameSynthetic(String newName) { + } + protected void performRefactoringRename(final String newName, final StartMarkAction markAction) { try { - performAutomaticRename(newName); + new WriteCommandAction(myProject, getCommandName()) { + @Override + protected void run(Result result) throws Throwable { + renameSynthetic(newName); + } + }.execute(); + + PsiNamedElement elementToRename = getVariable(); + for (AutomaticRenamerFactory renamerFactory : Extensions.getExtensions(AutomaticRenamerFactory.EP_NAME)) { + if (renamerFactory.isApplicable(elementToRename)) { + final List usages = new ArrayList(); + final AutomaticRenamer renamer = + renamerFactory.createRenamer(elementToRename, newName, new ArrayList()); + if (renamer.hasAnythingToRename()) { + if (!ApplicationManager.getApplication().isUnitTestMode()) { + final AutomaticRenamingDialog renamingDialog = new AutomaticRenamingDialog(myProject, renamer); + renamingDialog.show(); + if (!renamingDialog.isOK()) return; + } + + final Runnable runnable = new Runnable() { + public void run() { + renamer.findUsages(usages, false, false); + } + }; + + if (!ProgressManager.getInstance() + .runProcessWithProgressSynchronously(runnable, RefactoringBundle.message("searching.for.variables"), true, myProject)) { + return; + } + + if (!CommonRefactoringUtil.checkReadOnlyStatus(myProject, PsiUtilCore.toPsiElementArray(renamer.getElements()))) return; + final UsageInfo[] usageInfos = usages.toArray(new UsageInfo[usages.size()]); + final MultiMap classified = RenameProcessor.classifyUsages(renamer.getElements(), usageInfos); + for (final PsiNamedElement element : renamer.getElements()) { + new WriteCommandAction(myProject, getCommandName()) { + @Override + protected void run(Result result) throws Throwable { + final String newElementName = renamer.getNewName(element); + if (newElementName != null) { + final Collection infos = classified.get(element); + RenameUtil.doRenameGenericNamedElement(element, newElementName, infos.toArray(new UsageInfo[infos.size()]), null); + } + } + }.execute(); + } + } + } + } } finally { try { @@ -194,50 +245,6 @@ public class VariableInplaceRenamer extends InplaceRefactoring { } } - protected void performAutomaticRename(String newName) { - PsiNamedElement elementToRename = getVariable(); - for (AutomaticRenamerFactory renamerFactory : Extensions.getExtensions(AutomaticRenamerFactory.EP_NAME)) { - if (renamerFactory.isApplicable(elementToRename)) { - final List usages = new ArrayList(); - final AutomaticRenamer renamer = renamerFactory.createRenamer(elementToRename, newName, new ArrayList()); - if (renamer.hasAnythingToRename()) { - if (!ApplicationManager.getApplication().isUnitTestMode()) { - final AutomaticRenamingDialog renamingDialog = new AutomaticRenamingDialog(myProject, renamer); - renamingDialog.show(); - if (!renamingDialog.isOK()) return; - } - - final Runnable runnable = new Runnable() { - public void run() { - renamer.findUsages(usages, false, false); - } - }; - - if (!ProgressManager.getInstance() - .runProcessWithProgressSynchronously(runnable, RefactoringBundle.message("searching.for.variables"), true, myProject)) { - return; - } - - if (!CommonRefactoringUtil.checkReadOnlyStatus(myProject, PsiUtilCore.toPsiElementArray(renamer.getElements()))) return; - final UsageInfo[] usageInfos = usages.toArray(new UsageInfo[usages.size()]); - final MultiMap classified = RenameProcessor.classifyUsages(renamer.getElements(), usageInfos); - for (final PsiNamedElement element : renamer.getElements()) { - new WriteCommandAction(myProject, getCommandName()) { - @Override - protected void run(Result result) throws Throwable { - final String newElementName = renamer.getNewName(element); - if (newElementName != null) { - final Collection infos = classified.get(element); - RenameUtil.doRenameGenericNamedElement(element, newElementName, infos.toArray(new UsageInfo[infos.size()]), null); - } - } - }.execute(); - } - } - } - } - } - @Override protected String getCommandName() { PsiNamedElement variable = getVariable(); @@ -287,7 +294,7 @@ public class VariableInplaceRenamer extends InplaceRefactoring { } private boolean isIdentifier(final String newName) { - + final NamesValidator namesValidator = LanguageNamesValidation.INSTANCE.forLanguage(myLanguage); return namesValidator == null || namesValidator.isIdentifier(newName, myProject); } diff --git a/plugins/groovy/src/org/jetbrains/plugins/groovy/refactoring/rename/inplace/GrVariableInplaceRenamer.java b/plugins/groovy/src/org/jetbrains/plugins/groovy/refactoring/rename/inplace/GrVariableInplaceRenamer.java index 271214f7fc09..688af8e84329 100644 --- a/plugins/groovy/src/org/jetbrains/plugins/groovy/refactoring/rename/inplace/GrVariableInplaceRenamer.java +++ b/plugins/groovy/src/org/jetbrains/plugins/groovy/refactoring/rename/inplace/GrVariableInplaceRenamer.java @@ -15,10 +15,6 @@ */ package org.jetbrains.plugins.groovy.refactoring.rename.inplace; -import com.intellij.openapi.application.Result; -import com.intellij.openapi.command.WriteCommandAction; -import com.intellij.openapi.command.impl.FinishMarkAction; -import com.intellij.openapi.command.impl.StartMarkAction; import com.intellij.openapi.editor.Editor; import com.intellij.psi.PsiNameIdentifierOwner; import com.intellij.psi.PsiNamedElement; @@ -39,27 +35,15 @@ public class GrVariableInplaceRenamer extends VariableInplaceRenamer { super(elementToRename, editor); } - @Override - protected void performRefactoringRename(final String newName, StartMarkAction markAction) { - try { - new WriteCommandAction(myProject, getCommandName()) { - @Override - protected void run(Result result) throws Throwable { - PsiNamedElement elementToRename = getVariable(); - if (elementToRename instanceof ClosureSyntheticParameter && !"it".equals(newName)) { - final GrClosableBlock closure = ((ClosureSyntheticParameter)elementToRename).getClosure(); - final GroovyPsiElementFactory factory = GroovyPsiElementFactory.getInstance(myProject); - final PsiType type = ((ClosureSyntheticParameter)elementToRename).getTypeGroovy(); - final GrParameter newParam = factory.createParameter(newName, TypesUtil.unboxPrimitiveTypeWrapper(type)); - final GrParameter added = closure.addParameter(newParam); - GrReferenceAdjuster.shortenReferences(added); - } - } - }.execute(); - performAutomaticRename(newName); - } - finally { - FinishMarkAction.finish(myProject, myEditor, markAction); + protected void renameSynthetic(String newName) { + PsiNamedElement elementToRename = getVariable(); + if (elementToRename instanceof ClosureSyntheticParameter && !"it".equals(newName)) { + final GrClosableBlock closure = ((ClosureSyntheticParameter)elementToRename).getClosure(); + final GroovyPsiElementFactory factory = GroovyPsiElementFactory.getInstance(myProject); + final PsiType type = ((ClosureSyntheticParameter)elementToRename).getTypeGroovy(); + final GrParameter newParam = factory.createParameter(newName, TypesUtil.unboxPrimitiveTypeWrapper(type)); + final GrParameter added = closure.addParameter(newParam); + GrReferenceAdjuster.shortenReferences(added); } } }