diff --git a/java/java-impl/src/com/intellij/codeInsight/daemon/impl/quickfix/ImplementAbstractClassMethodsFix.java b/java/java-impl/src/com/intellij/codeInsight/daemon/impl/quickfix/ImplementAbstractClassMethodsFix.java index 5dcde903af2c..4cc6ecffc3a5 100644 --- a/java/java-impl/src/com/intellij/codeInsight/daemon/impl/quickfix/ImplementAbstractClassMethodsFix.java +++ b/java/java-impl/src/com/intellij/codeInsight/daemon/impl/quickfix/ImplementAbstractClassMethodsFix.java @@ -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()); }); } } diff --git a/java/java-impl/src/com/intellij/codeInsight/daemon/impl/quickfix/ImplementMethodsFix.java b/java/java-impl/src/com/intellij/codeInsight/daemon/impl/quickfix/ImplementMethodsFix.java index 26957492697d..53b15b7c9ce7 100644 --- a/java/java-impl/src/com/intellij/codeInsight/daemon/impl/quickfix/ImplementMethodsFix.java +++ b/java/java-impl/src/com/intellij/codeInsight/daemon/impl/quickfix/ImplementMethodsFix.java @@ -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 { diff --git a/java/java-impl/src/com/intellij/codeInsight/generation/JavaOverrideImplementMemberChooser.java b/java/java-impl/src/com/intellij/codeInsight/generation/JavaOverrideImplementMemberChooser.java index 37c68f797945..5574b9f2f8cf 100644 --- a/java/java-impl/src/com/intellij/codeInsight/generation/JavaOverrideImplementMemberChooser.java +++ b/java/java-impl/src/com/intellij/codeInsight/generation/JavaOverrideImplementMemberChooser.java @@ -274,4 +274,10 @@ public final class JavaOverrideImplementMemberChooser extends MemberChooser 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 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 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 prototypes = - overrideOrImplementMethod(aClass, candidate.getElement(), candidate.getSubstitutor(), copyJavadoc, insertOverrideWherePossible); + Collection prototypes = overrideOrImplementMethod(aClass, candidate.getElement(), candidate.getSubstitutor(), + options.isCopyJavaDoc(), options.isInsertOverrideWherePossible()); List> infos = convert2GenerationInfos(prototypes); for (PsiGenerationInfo info : infos) { PsiElement anchor = getDefaultAnchorToOverrideOrImplement(aClass, candidate.getElement(), candidate.getSubstitutor()); @@ -608,14 +608,15 @@ public final class OverrideImplementUtil extends OverrideImplementExploreUtil { } } else { - List> prototypes = overrideOrImplementMethods(aClass, candidates, copyJavadoc, insertOverrideWherePossible); + List> prototypes = overrideOrImplementMethods(aClass, candidates, options.isCopyJavaDoc(), + options.isInsertOverrideWherePossible()); resultMembers = GenerateMembersUtil.insertMembersAtOffset(aClass, offset, prototypes); } if (!resultMembers.isEmpty()) { for (PsiGenerationInfo 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); diff --git a/java/java-impl/src/com/intellij/codeInsight/generation/OverrideOrImplementOptions.java b/java/java-impl/src/com/intellij/codeInsight/generation/OverrideOrImplementOptions.java new file mode 100644 index 000000000000..bbed728b9531 --- /dev/null +++ b/java/java-impl/src/com/intellij/codeInsight/generation/OverrideOrImplementOptions.java @@ -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; + } +} \ No newline at end of file