From 45851be5d948b7409eb97d7c268341fc5564e6ad Mon Sep 17 00:00:00 2001 From: "Anna.Kozlova" Date: Mon, 14 Nov 2016 19:02:53 +0100 Subject: [PATCH] inplace change signature: show initial signature in action text --- .../changeSignature/JavaChangeSignatureDetector.java | 12 ++++++++++-- .../inplace/ChangeSignaturePassFactory.java | 3 +-- .../inplace/InplaceChangeSignature.java | 11 ++++++++++- 3 files changed, 21 insertions(+), 5 deletions(-) diff --git a/java/java-impl/src/com/intellij/refactoring/changeSignature/JavaChangeSignatureDetector.java b/java/java-impl/src/com/intellij/refactoring/changeSignature/JavaChangeSignatureDetector.java index 8eb0542cbabd..6b2a70b667c2 100644 --- a/java/java-impl/src/com/intellij/refactoring/changeSignature/JavaChangeSignatureDetector.java +++ b/java/java-impl/src/com/intellij/refactoring/changeSignature/JavaChangeSignatureDetector.java @@ -100,15 +100,23 @@ public class JavaChangeSignatureDetector implements LanguageChangeSignatureDetec buf.append(", "); } + String oldParamName = initialChangeInfo.getOldParameterNames()[i]; + String oldParamType = initialChangeInfo.getOldParameterTypes()[i]; if (toRemove[i]) { - String deletedParam = initialChangeInfo.getOldParameterTypes()[i] + " " + initialChangeInfo.getOldParameterNames()[i]; + String deletedParam = oldParamType + " " + oldParamName; deleteRanges.add(new TextRange(buf.length(), buf.length() + deletedParam.length())); buf.append(deletedParam); } else { for (JavaParameterInfo parameter : newParameters) { if (parameter.getOldIndex() == i) { - buf.append(parameter.getTypeText()).append(" ").append(parameter.getName()); + buf.append(parameter.getTypeText()); + buf.append(" "); + if (!oldParamName.equals(parameter.getName())) { + deleteRanges.add(new TextRange(buf.length(), buf.length() + oldParamName.length())); + buf.append(oldParamName); + } + buf.append(parameter.getName()); break; } } diff --git a/platform/lang-impl/src/com/intellij/refactoring/changeSignature/inplace/ChangeSignaturePassFactory.java b/platform/lang-impl/src/com/intellij/refactoring/changeSignature/inplace/ChangeSignaturePassFactory.java index 9e20a2f1902f..80527ffcfa60 100644 --- a/platform/lang-impl/src/com/intellij/refactoring/changeSignature/inplace/ChangeSignaturePassFactory.java +++ b/platform/lang-impl/src/com/intellij/refactoring/changeSignature/inplace/ChangeSignaturePassFactory.java @@ -22,7 +22,6 @@ import com.intellij.codeInsight.daemon.impl.HighlightInfo; import com.intellij.codeInsight.daemon.impl.HighlightInfoType; import com.intellij.codeInsight.daemon.impl.UpdateHighlightersUtil; import com.intellij.codeInsight.daemon.impl.quickfix.QuickFixAction; -import com.intellij.lang.findUsages.DescriptiveNameUtil; import com.intellij.openapi.components.AbstractProjectComponent; import com.intellij.openapi.editor.Editor; import com.intellij.openapi.editor.colors.CodeInsightColors; @@ -92,7 +91,7 @@ public class ChangeSignaturePassFactory extends AbstractProjectComponent impleme builder.textAttributes(attributes); builder.descriptionAndTooltip(SIGNATURE_SHOULD_BE_POSSIBLY_CHANGED); info = builder.createUnconditionally(); - QuickFixAction.registerQuickFixAction(info, new ApplyChangeSignatureAction(DescriptiveNameUtil.getDescriptiveName(element))); + QuickFixAction.registerQuickFixAction(info, new ApplyChangeSignatureAction(currentRefactoring.getInitialName())); } Collection infos = info != null ? Collections.singletonList(info) : Collections.emptyList(); UpdateHighlightersUtil.setHighlightersToEditor(myProject, myDocument, 0, myFile.getTextLength(), infos, getColorsScheme(), getId()); diff --git a/platform/lang-impl/src/com/intellij/refactoring/changeSignature/inplace/InplaceChangeSignature.java b/platform/lang-impl/src/com/intellij/refactoring/changeSignature/inplace/InplaceChangeSignature.java index 44c0d8ce84eb..2f76b48f0057 100644 --- a/platform/lang-impl/src/com/intellij/refactoring/changeSignature/inplace/InplaceChangeSignature.java +++ b/platform/lang-impl/src/com/intellij/refactoring/changeSignature/inplace/InplaceChangeSignature.java @@ -16,6 +16,7 @@ package com.intellij.refactoring.changeSignature.inplace; import com.intellij.codeInsight.highlighting.HighlightManager; +import com.intellij.lang.findUsages.DescriptiveNameUtil; import com.intellij.openapi.application.Result; import com.intellij.openapi.command.WriteCommandAction; import com.intellij.openapi.command.impl.FinishMarkAction; @@ -53,6 +54,7 @@ import com.intellij.refactoring.changeSignature.ChangeSignatureHandler; import com.intellij.refactoring.rename.inplace.InplaceRefactoring; import com.intellij.ui.NonFocusableCheckBox; import com.intellij.ui.awt.RelativePoint; +import com.intellij.ui.components.JBLabel; import com.intellij.util.ui.PositionTracker; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -66,6 +68,7 @@ public class InplaceChangeSignature implements DocumentListener { private ChangeInfo myCurrentInfo; private ChangeInfo myStableChange; private String myInitialSignature; + private String myInitialName; private Editor myEditor; private LanguageChangeSignatureDetector myDetector; @@ -97,6 +100,7 @@ public class InplaceChangeSignature implements DocumentListener { myDetector = LanguageChangeSignatureDetectors.INSTANCE.forLanguage(element.getLanguage()); myStableChange = myDetector.createInitialChangeInfo(element); myInitialSignature = myDetector.extractSignature(myStableChange); + myInitialName = DescriptiveNameUtil.getDescriptiveName(myStableChange.getMethod()); TextRange highlightingRange = myDetector.getHighlightingRange(myStableChange); HighlightManager highlightManager = HighlightManager.getInstance(myProject); @@ -121,6 +125,10 @@ public class InplaceChangeSignature implements DocumentListener { return myCurrentInfo; } + public String getInitialName() { + return myInitialName; + } + public String getInitialSignature() { return myInitialSignature; } @@ -211,7 +219,8 @@ public class InplaceChangeSignature implements DocumentListener { NonFocusableCheckBox checkBox = new NonFocusableCheckBox(RefactoringBundle.message("delegation.panel.delegate.via.overloading.method")); checkBox.addActionListener(e -> myDelegate = checkBox.isSelected()); JPanel content = new JPanel(new BorderLayout()); - content.add(myPreview.getComponent(), BorderLayout.NORTH); + content.add(new JBLabel("Performed signature modifications:"), BorderLayout.NORTH); + content.add(myPreview.getComponent(), BorderLayout.CENTER); updateMethodSignature(myStableChange); content.add(checkBox, BorderLayout.SOUTH); final BalloonBuilder balloonBuilder = JBPopupFactory.getInstance().createDialogBalloonBuilder(content, null).setSmallVariant(true);