From 6cb35eac1d7ba7187b43f993c1da924a404064ff Mon Sep 17 00:00:00 2001 From: Anna Kozlova Date: Tue, 27 Jun 2017 12:22:09 +0300 Subject: [PATCH] inline superclass: hide javadoc settings when no found anyway (IDEA-175025) --- .../InlineSuperClassRefactoringDialog.java | 12 +++++++++++- .../InlineSuperClassRefactoringProcessor.java | 17 ++++++++++------- 2 files changed, 21 insertions(+), 8 deletions(-) diff --git a/java/java-impl/src/com/intellij/refactoring/inlineSuperClass/InlineSuperClassRefactoringDialog.java b/java/java-impl/src/com/intellij/refactoring/inlineSuperClass/InlineSuperClassRefactoringDialog.java index 49047e8b8c33..1acf2976f963 100644 --- a/java/java-impl/src/com/intellij/refactoring/inlineSuperClass/InlineSuperClassRefactoringDialog.java +++ b/java/java-impl/src/com/intellij/refactoring/inlineSuperClass/InlineSuperClassRefactoringDialog.java @@ -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); diff --git a/java/java-impl/src/com/intellij/refactoring/inlineSuperClass/InlineSuperClassRefactoringProcessor.java b/java/java-impl/src/com/intellij/refactoring/inlineSuperClass/InlineSuperClassRefactoringProcessor.java index 694519705370..e45dd2e6e61a 100644 --- a/java/java-impl/src/com/intellij/refactoring/inlineSuperClass/InlineSuperClassRefactoringProcessor.java +++ b/java/java-impl/src/com/intellij/refactoring/inlineSuperClass/InlineSuperClassRefactoringProcessor.java @@ -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() { - public boolean includeMember(PsiMember element) { - return !(element instanceof PsiClass) || PsiTreeUtil.isAncestor(mySuperClass, element, true); - } - }); - List members = memberInfoStorage.getClassMemberInfos(mySuperClass); + List members = getClassMembersToPush(mySuperClass); for (MemberInfo member : members) { member.setChecked(true); } myMemberInfos = members.toArray(new MemberInfo[members.size()]); } + public static List getClassMembersToPush(PsiClass superClass) { + MemberInfoStorage memberInfoStorage = new MemberInfoStorage(superClass, new MemberInfo.Filter() { + 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);