diff --git a/platform/lang-impl/src/com/intellij/refactoring/rename/RenameDialog.java b/platform/lang-impl/src/com/intellij/refactoring/rename/RenameDialog.java index f0ab079efd7d..903be013b716 100644 --- a/platform/lang-impl/src/com/intellij/refactoring/rename/RenameDialog.java +++ b/platform/lang-impl/src/com/intellij/refactoring/rename/RenameDialog.java @@ -31,6 +31,7 @@ import com.intellij.psi.PsiElement; import com.intellij.psi.PsiFile; import com.intellij.psi.codeStyle.SuggestedNameInfo; import com.intellij.refactoring.RefactoringBundle; +import com.intellij.refactoring.rename.inplace.VariableInplaceRenameHandler; import com.intellij.refactoring.rename.naming.AutomaticRenamerFactory; import com.intellij.refactoring.ui.NameSuggestionsField; import com.intellij.refactoring.ui.RefactoringDialog; @@ -143,7 +144,7 @@ public class RenameDialog extends RefactoringDialog { protected void createNewNameComponent() { String[] suggestedNames = getSuggestedNames(); - myOldName = suggestedNames.length > 0 ? suggestedNames[0] : null; + myOldName = UsageViewUtil.getShortName(myPsiElement); myNameSuggestionsField = new NameSuggestionsField(suggestedNames, myProject, FileTypes.PLAIN_TEXT, myEditor) { @Override protected boolean shouldSelectAll() { @@ -173,6 +174,10 @@ public class RenameDialog extends RefactoringDialog { public String[] getSuggestedNames() { final LinkedHashSet result = new LinkedHashSet(); + final String initialName = VariableInplaceRenameHandler.getInitialName(); + if (initialName != null) { + result.add(initialName); + } result.add(UsageViewUtil.getShortName(myPsiElement)); final NameSuggestionProvider[] providers = Extensions.getExtensions(NameSuggestionProvider.EP_NAME); for(NameSuggestionProvider provider: providers) { diff --git a/platform/lang-impl/src/com/intellij/refactoring/rename/inplace/MemberInplaceRenameHandler.java b/platform/lang-impl/src/com/intellij/refactoring/rename/inplace/MemberInplaceRenameHandler.java index 1b4a4c23d40b..6f67f2473ca8 100644 --- a/platform/lang-impl/src/com/intellij/refactoring/rename/inplace/MemberInplaceRenameHandler.java +++ b/platform/lang-impl/src/com/intellij/refactoring/rename/inplace/MemberInplaceRenameHandler.java @@ -68,7 +68,7 @@ public class MemberInplaceRenameHandler extends VariableInplaceRenameHandler { final MemberInplaceRenamer renamer = createMemberRenamer(element, (PsiNameIdentifierOwner)elementToRename, editor); boolean startedRename = renamer.performInplaceRename(); if (!startedRename) { - performDialogRename(elementToRename, editor, dataContext); + performDialogRename(elementToRename, editor, dataContext, renamer.myInitialName); } } }); @@ -85,7 +85,7 @@ public class MemberInplaceRenameHandler extends VariableInplaceRenameHandler { } } } - performDialogRename(elementToRename, editor, dataContext); + performDialogRename(elementToRename, editor, dataContext, null); return null; } diff --git a/platform/lang-impl/src/com/intellij/refactoring/rename/inplace/VariableInplaceRenameHandler.java b/platform/lang-impl/src/com/intellij/refactoring/rename/inplace/VariableInplaceRenameHandler.java index b10f576163f7..0af0131a2a21 100644 --- a/platform/lang-impl/src/com/intellij/refactoring/rename/inplace/VariableInplaceRenameHandler.java +++ b/platform/lang-impl/src/com/intellij/refactoring/rename/inplace/VariableInplaceRenameHandler.java @@ -21,12 +21,11 @@ import com.intellij.lang.LanguageRefactoringSupport; import com.intellij.lang.refactoring.RefactoringSupportProvider; import com.intellij.openapi.actionSystem.CommonDataKeys; import com.intellij.openapi.actionSystem.DataContext; -import com.intellij.openapi.actionSystem.LangDataKeys; -import com.intellij.openapi.actionSystem.PlatformDataKeys; import com.intellij.openapi.diagnostic.Logger; import com.intellij.openapi.editor.Editor; import com.intellij.openapi.editor.ScrollType; import com.intellij.openapi.project.Project; +import com.intellij.openapi.util.text.StringUtil; import com.intellij.psi.*; import com.intellij.psi.util.PsiTreeUtil; import com.intellij.refactoring.rename.PsiElementRenameHandler; @@ -36,7 +35,7 @@ import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; public class VariableInplaceRenameHandler implements RenameHandler { - private static final ThreadLocal ourPreventInlineRenameFlag = new ThreadLocal(); + private static final ThreadLocal ourPreventInlineRenameFlag = new ThreadLocal(); private static final Logger LOG = Logger.getInstance("#com.intellij.refactoring.rename.inplace.VariableInplaceRenameHandler"); @Override @@ -122,14 +121,18 @@ public class VariableInplaceRenameHandler implements RenameHandler { boolean startedRename = renamer == null ? false : renamer.performInplaceRename(); if (!startedRename) { - performDialogRename(elementToRename, editor, dataContext); + performDialogRename(elementToRename, editor, dataContext, renamer != null ? renamer.myInitialName : null); } return renamer; } protected static void performDialogRename(PsiElement elementToRename, Editor editor, DataContext dataContext) { + performDialogRename(elementToRename, editor, dataContext, null); + } + + protected static void performDialogRename(PsiElement elementToRename, Editor editor, DataContext dataContext, String initialName) { try { - ourPreventInlineRenameFlag.set(Boolean.TRUE); + ourPreventInlineRenameFlag.set(initialName == null ? "" : initialName); RenameHandler handler = RenameHandlerRegistry.getInstance().getRenameHandler(dataContext); assert handler != null : elementToRename; handler.invoke( @@ -141,6 +144,12 @@ public class VariableInplaceRenameHandler implements RenameHandler { ourPreventInlineRenameFlag.set(null); } } + + @Nullable + public static String getInitialName() { + final String str = ourPreventInlineRenameFlag.get(); + return StringUtil.isEmpty(str) ? null : str; + } @Nullable protected VariableInplaceRenamer createRenamer(@NotNull PsiElement elementToRename, Editor editor) {