Java: Don't show annotations and return type in extract method preview tree (IDEA-189278)

This commit is contained in:
Pavel Dolgov
2018-04-11 17:52:53 +03:00
parent 052a8ad053
commit 5f8c65027d
@@ -4,10 +4,7 @@ package com.intellij.refactoring.extractMethod.preview;
import com.intellij.lang.java.JavaLanguage;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.util.TextRange;
import com.intellij.psi.PsiElement;
import com.intellij.psi.PsiFileFactory;
import com.intellij.psi.PsiJavaFile;
import com.intellij.psi.PsiMethod;
import com.intellij.psi.*;
import com.intellij.usageView.UsageInfo;
import com.intellij.usages.ChunkExtractor;
import com.intellij.usages.TextChunk;
@@ -34,15 +31,19 @@ class MethodNode extends FragmentNode {
protected TextChunk[] createTextChunks(@NotNull PsiElement element) {
assert element instanceof PsiMethod;
Project project = element.getProject();
// EditorHighlighter requires VirtualFile, let's make sure it exists. Also, file.getText() is much cheaper with this.
PsiJavaFile file = (PsiJavaFile)PsiFileFactory.getInstance(project).createFileFromText(
"A.java", JavaLanguage.INSTANCE, "class A{" + element.getText() + "}");
PsiMethod psiMethod = file.getClasses()[0].getMethods()[0];
UsageInfo2UsageAdapter usageAdapter = new UsageInfo2UsageAdapter(new UsageInfo(psiMethod));
TextRange range = psiMethod.getTextRange();
PsiIdentifier identifier = psiMethod.getNameIdentifier();
int startOffset = identifier != null ? identifier.getTextRange().getStartOffset() : range.getStartOffset();
int endOffset = Math.min(psiMethod.getParameterList().getTextRange().getEndOffset(), range.getEndOffset());
return ChunkExtractor.getExtractor(file)
.createTextChunks(usageAdapter, file.getText(), range.getStartOffset(), endOffset, false, new ArrayList<>());
.createTextChunks(usageAdapter, file.getText(), startOffset, endOffset, false, new ArrayList<>());
}
public Icon getIcon() {