inline superclass: hide javadoc settings when no found anyway (IDEA-175025)

This commit is contained in:
Anna Kozlova
2017-06-27 13:20:38 +03:00
parent f52e307744
commit 6cb35eac1d
2 changed files with 21 additions and 8 deletions
@@ -18,6 +18,8 @@ package com.intellij.refactoring.inlineSuperClass;
import com.intellij.openapi.project.Project;
import com.intellij.psi.PsiClass;
import com.intellij.psi.PsiDocCommentOwner;
import com.intellij.psi.PsiMember;
import com.intellij.refactoring.JavaRefactoringSettings;
import com.intellij.refactoring.RefactoringBundle;
import com.intellij.refactoring.inline.InlineOptionsDialog;
@@ -70,8 +72,16 @@ public class InlineSuperClassRefactoringDialog extends InlineOptionsDialog {
final GridBagConstraints gc =
new GridBagConstraints(0, GridBagConstraints.RELATIVE, 1, 1, 1, 0, GridBagConstraints.NORTHWEST, GridBagConstraints.HORIZONTAL,
JBUI.emptyInsets(), 0, 0);
panel.add(myDocPanel, gc);
panel.add(super.createCenterPanel(), gc);
panel.add(myDocPanel, gc);
if (mySuperClass.getDocComment() == null) {
boolean hasJavadoc =
InlineSuperClassRefactoringProcessor.getClassMembersToPush(mySuperClass).stream().anyMatch(memberInfo -> {
PsiMember member = memberInfo.getMember();
return member instanceof PsiDocCommentOwner && ((PsiDocCommentOwner)member).getDocComment() != null;
});
myDocPanel.setVisible(hasJavadoc);
}
gc.weighty = 1;
gc.fill = GridBagConstraints.BOTH;
panel.add(Box.createVerticalGlue(), gc);
@@ -40,7 +40,6 @@ import com.intellij.usageView.UsageInfo;
import com.intellij.usageView.UsageViewDescriptor;
import com.intellij.util.ArrayUtilRt;
import com.intellij.util.IncorrectOperationException;
import com.intellij.util.Processor;
import com.intellij.util.containers.ContainerUtil;
import com.intellij.util.containers.HashMap;
import com.intellij.util.containers.MultiMap;
@@ -63,18 +62,22 @@ public class InlineSuperClassRefactoringProcessor extends FixableUsagesRefactori
myCurrentInheritor = currentInheritor;
mySuperClass = superClass;
myPolicy = policy;
MemberInfoStorage memberInfoStorage = new MemberInfoStorage(mySuperClass, new MemberInfo.Filter<PsiMember>() {
public boolean includeMember(PsiMember element) {
return !(element instanceof PsiClass) || PsiTreeUtil.isAncestor(mySuperClass, element, true);
}
});
List<MemberInfo> members = memberInfoStorage.getClassMemberInfos(mySuperClass);
List<MemberInfo> members = getClassMembersToPush(mySuperClass);
for (MemberInfo member : members) {
member.setChecked(true);
}
myMemberInfos = members.toArray(new MemberInfo[members.size()]);
}
public static List<MemberInfo> getClassMembersToPush(PsiClass superClass) {
MemberInfoStorage memberInfoStorage = new MemberInfoStorage(superClass, new MemberInfo.Filter<PsiMember>() {
public boolean includeMember(PsiMember element) {
return !(element instanceof PsiClass) || PsiTreeUtil.isAncestor(superClass, element, true);
}
});
return memberInfoStorage.getClassMemberInfos(superClass);
}
@NotNull
protected UsageViewDescriptor createUsageViewDescriptor(@NotNull final UsageInfo[] usages) {
return new InlineSuperClassUsageViewDescriptor(mySuperClass);