[javadoc] CR-21150 IDEA-128817: introduce parameter object for override options

GitOrigin-RevId: 27d2c5876408943bbdaefce3f22630f0e6d00de4
This commit is contained in:
Alexandr Suhinin
2022-05-05 11:14:31 +00:00
committed by intellij-monorepo-bot
parent d9e1738299
commit 4f23bad2fe
5 changed files with 54 additions and 14 deletions
@@ -100,8 +100,7 @@ public class ImplementAbstractClassMethodsFix extends ImplementMethodsFix {
selectedElement.setSubstitutor(substitutor);
}
}
OverrideImplementUtil.overrideOrImplementMethodsInRightPlace(editor, psiAnonClass, selectedElements, chooser.isCopyJavadoc(),
chooser.isInsertOverrideAnnotation(), chooser.isGenerateJavadoc());
OverrideImplementUtil.overrideOrImplementMethodsInRightPlace(editor, psiAnonClass, selectedElements, chooser.getOptions());
});
}
}
@@ -72,8 +72,7 @@ public class ImplementMethodsFix extends LocalQuickFixAndIntentionActionOnPsiEle
WriteCommandAction.writeCommandAction(project, file).run(() -> {
final PsiClass psiClass = ((PsiEnumConstant)myPsiElement).getOrCreateInitializingClass();
OverrideImplementUtil.overrideOrImplementMethodsInRightPlace(editor, psiClass, selectedElements, chooser.isCopyJavadoc(),
chooser.isInsertOverrideAnnotation(), chooser.isGenerateJavadoc());
OverrideImplementUtil.overrideOrImplementMethodsInRightPlace(editor, psiClass, selectedElements, chooser.getOptions());
});
}
else {
@@ -274,4 +274,10 @@ public final class JavaOverrideImplementMemberChooser extends MemberChooser<PsiM
}
}
public OverrideOrImplementOptions getOptions(){
return new OverrideOrImplementOptions()
.copyJavadoc(isCopyJavadoc())
.generateJavadoc(isGenerateJavadoc())
.insertOverrideWherePossible(isInsertOverrideAnnotation());
}
}
@@ -457,8 +457,7 @@ public final class OverrideImplementUtil extends OverrideImplementExploreUtil {
PsiUtilCore.ensureValid(aClass);
final ThrowableRunnable<RuntimeException> performImplementOverrideRunnable =
() -> overrideOrImplementMethodsInRightPlace(editor, aClass, selectedElements, chooser.isCopyJavadoc(),
chooser.isInsertOverrideAnnotation(), chooser.isGenerateJavadoc());
() -> overrideOrImplementMethodsInRightPlace(editor, aClass, selectedElements, chooser.getOptions());
if(Registry.is("run.refactorings.under.progress")) {
if (!FileModificationService.getInstance().preparePsiElementsForWrite(aClass)) {
return;
@@ -573,15 +572,16 @@ public final class OverrideImplementUtil extends OverrideImplementExploreUtil {
@NotNull Collection<? extends PsiMethodMember> candidates,
boolean copyJavadoc,
boolean insertOverrideWherePossible) {
overrideOrImplementMethodsInRightPlace(editor, aClass, candidates, copyJavadoc, insertOverrideWherePossible, false);
OverrideOrImplementOptions options = new OverrideOrImplementOptions()
.copyJavadoc(copyJavadoc)
.insertOverrideWherePossible(insertOverrideWherePossible);
overrideOrImplementMethodsInRightPlace(editor, aClass, candidates, options);
}
public static void overrideOrImplementMethodsInRightPlace(@NotNull Editor editor,
@NotNull PsiClass aClass,
@NotNull Collection<? extends PsiMethodMember> candidates,
boolean copyJavadoc,
boolean insertOverrideWherePossible,
boolean generateJavadoc) {
OverrideOrImplementOptions options) {
try {
int offset = editor.getCaretModel().getOffset();
PsiElement brace = aClass.getLBrace();
@@ -597,8 +597,8 @@ public final class OverrideImplementUtil extends OverrideImplementExploreUtil {
resultMembers = new ArrayList<>();
for (PsiMethodMember candidate : candidates) {
ProgressManager.progress(candidate.getElement().getName());
Collection<PsiMethod> prototypes =
overrideOrImplementMethod(aClass, candidate.getElement(), candidate.getSubstitutor(), copyJavadoc, insertOverrideWherePossible);
Collection<PsiMethod> prototypes = overrideOrImplementMethod(aClass, candidate.getElement(), candidate.getSubstitutor(),
options.isCopyJavaDoc(), options.isInsertOverrideWherePossible());
List<PsiGenerationInfo<PsiMethod>> infos = convert2GenerationInfos(prototypes);
for (PsiGenerationInfo<PsiMethod> info : infos) {
PsiElement anchor = getDefaultAnchorToOverrideOrImplement(aClass, candidate.getElement(), candidate.getSubstitutor());
@@ -608,14 +608,15 @@ public final class OverrideImplementUtil extends OverrideImplementExploreUtil {
}
}
else {
List<PsiGenerationInfo<PsiMethod>> prototypes = overrideOrImplementMethods(aClass, candidates, copyJavadoc, insertOverrideWherePossible);
List<PsiGenerationInfo<PsiMethod>> prototypes = overrideOrImplementMethods(aClass, candidates, options.isCopyJavaDoc(),
options.isInsertOverrideWherePossible());
resultMembers = GenerateMembersUtil.insertMembersAtOffset(aClass, offset, prototypes);
}
if (!resultMembers.isEmpty()) {
for (PsiGenerationInfo<PsiMethod> info : resultMembers) {
PsiMethod method = info.getPsiMember();
if (generateJavadoc && method != null && method.getDocComment() == null) {
if (options.isGenerateJavaDoc() && method != null && method.getDocComment() == null) {
method = CodeInsightUtilCore.forcePsiPostprocessAndRestoreElement(method);
if (method != null) {
FixDocCommentAction.generateOrFixComment(method, method.getProject(), editor);
@@ -0,0 +1,35 @@
// Copyright 2000-2022 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
package com.intellij.codeInsight.generation;
public class OverrideOrImplementOptions {
private boolean copyJavadoc = false;
private boolean generateJavadoc = false;
private boolean insertOverrideWherePossible = false;
public boolean isInsertOverrideWherePossible() {
return insertOverrideWherePossible;
}
public boolean isGenerateJavaDoc() {
return generateJavadoc;
}
public boolean isCopyJavaDoc() {
return copyJavadoc;
}
public OverrideOrImplementOptions copyJavadoc(boolean value){
copyJavadoc = value;
return this;
}
public OverrideOrImplementOptions generateJavadoc(boolean value){
generateJavadoc = value;
return this;
}
public OverrideOrImplementOptions insertOverrideWherePossible(boolean value){
insertOverrideWherePossible = value;
return this;
}
}