field can be local: preserve javadoc if any (IDEA-72663 )

This commit is contained in:
anna
2011-08-21 17:39:35 +02:00
parent c71a873d1d
commit 5db84b0821
@@ -25,6 +25,7 @@ import com.intellij.codeInspection.ProblemDescriptor;
import com.intellij.codeInspection.ProblemsHolder;
import com.intellij.codeInspection.ex.BaseLocalInspectionTool;
import com.intellij.codeInspection.util.SpecialAnnotationsUtil;
import com.intellij.lang.java.JavaCommenter;
import com.intellij.openapi.diagnostic.Logger;
import com.intellij.openapi.editor.Editor;
import com.intellij.openapi.editor.ScrollType;
@@ -39,6 +40,7 @@ import com.intellij.psi.*;
import com.intellij.psi.codeStyle.JavaCodeStyleManager;
import com.intellij.psi.codeStyle.VariableKind;
import com.intellij.psi.controlFlow.*;
import com.intellij.psi.javadoc.PsiDocComment;
import com.intellij.psi.search.searches.ReferencesSearch;
import com.intellij.psi.util.PsiTreeUtil;
import com.intellij.psi.util.PsiUtil;
@@ -262,6 +264,7 @@ public class FieldCanBeLocalInspection extends BaseLocalInspectionTool {
PsiField myField = PsiTreeUtil.getParentOfType(element, PsiField.class);
if (myField == null || !myField.isValid()) return; //weird. should not get here when field becomes invalid
final PsiDocComment docComment = myField.getDocComment();
final Collection<PsiReference> refs = ReferencesSearch.search(myField).findAll();
if (refs.isEmpty()) return;
Set<PsiReference> refsSet = new HashSet<PsiReference>(refs);
@@ -308,6 +311,20 @@ public class FieldCanBeLocalInspection extends BaseLocalInspectionTool {
}
if (newDeclaration != null) {
if (docComment != null) {
final StringBuilder buf = new StringBuilder();
for (PsiElement psiElement : docComment.getDescriptionElements()) {
buf.append(psiElement.getText());
}
if (buf.length() > 0) {
final JavaCommenter commenter = new JavaCommenter();
final PsiComment comment = JavaPsiFacade.getElementFactory(project)
.createCommentFromText(commenter.getBlockCommentPrefix() +
buf.toString() +
commenter.getBlockCommentSuffix(), newDeclaration);
newDeclaration.getParent().addBefore(comment, newDeclaration);
}
}
final PsiFile psiFile = myField.getContainingFile();
final Editor editor = FileEditorManager.getInstance(project).getSelectedTextEditor();
if (editor != null && IJSwingUtilities.hasFocus(editor.getComponent())) {