IDEA-272395 [java]: remember last used visibility in Extract Method refactoring

GitOrigin-RevId: 4f4513c0a23c2f8ba920d03aa0c50f65d2df1185
This commit is contained in:
Bas Leijdekkers
2026-02-03 10:53:18 +00:00
committed by intellij-monorepo-bot
parent ab61ae71dc
commit c24d57fa13
2 changed files with 10 additions and 20 deletions
@@ -1,4 +1,4 @@
// Copyright 2000-2024 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
// Copyright 2000-2026 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
package com.intellij.refactoring.extractMethod;
import com.intellij.codeInsight.Nullability;
@@ -35,7 +35,6 @@ import com.intellij.psi.PsiTypeParameterList;
import com.intellij.psi.PsiTypes;
import com.intellij.psi.PsiVariable;
import com.intellij.psi.util.PsiFormatUtil;
import com.intellij.psi.util.PsiTreeUtil;
import com.intellij.psi.util.PsiUtil;
import com.intellij.psi.util.TypeConversionUtil;
import com.intellij.refactoring.JavaRefactoringSettings;
@@ -165,10 +164,6 @@ public class ExtractMethodDialog extends RefactoringDialog implements AbstractEx
init();
}
public void selectStaticFlag(boolean isStatic){
myMakeStatic.setSelected(isStatic);
}
protected String[] suggestMethodNames() {
return ArrayUtilRt.EMPTY_STRING_ARRAY;
}
@@ -241,10 +236,7 @@ public class ExtractMethodDialog extends RefactoringDialog implements AbstractEx
data.type = new PsiEllipsisType(((PsiArrayType)data.type).getComponentType());
}
}
final PsiMethod containingMethod = getContainingMethod();
if (containingMethod != null && containingMethod.hasModifierProperty(PsiModifier.PUBLIC)) {
PropertiesComponent.getInstance(myProject).setValue(EXTRACT_METHOD_DEFAULT_VISIBILITY, getVisibility());
}
PropertiesComponent.getInstance().setValue(EXTRACT_METHOD_DEFAULT_VISIBILITY, getVisibility());
if (myGenerateAnnotations != null && myGenerateAnnotations.isEnabled()) {
PropertiesComponent.getInstance(myProject).setValue(EXTRACT_METHOD_GENERATE_ANNOTATIONS, myGenerateAnnotations.isSelected(), true);
@@ -455,10 +447,7 @@ public class ExtractMethodDialog extends RefactoringDialog implements AbstractEx
private ComboBoxVisibilityPanel<String> createVisibilityPanel() {
final JavaComboBoxVisibilityPanel panel = new JavaComboBoxVisibilityPanel();
final PsiMethod containingMethod = getContainingMethod();
panel.setVisibility(containingMethod != null && containingMethod.hasModifierProperty(PsiModifier.PUBLIC)
? PropertiesComponent.getInstance(myProject).getValue(EXTRACT_METHOD_DEFAULT_VISIBILITY, PsiModifier.PRIVATE)
: PsiModifier.PRIVATE);
panel.setVisibility(getDefaultVisibility());
panel.addListener(e -> {
updateSignature();
if (!myChangingVisibility) {
@@ -468,8 +457,8 @@ public class ExtractMethodDialog extends RefactoringDialog implements AbstractEx
return panel;
}
private PsiMethod getContainingMethod() {
return PsiTreeUtil.getParentOfType(PsiTreeUtil.findCommonParent(myElementsToExtract), PsiMethod.class);
public static String getDefaultVisibility() {
return PropertiesComponent.getInstance().getValue(EXTRACT_METHOD_DEFAULT_VISIBILITY, PsiModifier.PRIVATE);
}
private void updateVarargsEnabled() {
@@ -484,8 +473,7 @@ public class ExtractMethodDialog extends RefactoringDialog implements AbstractEx
myMakeStatic.setEnabled(!myStaticFlag && myCanBeStatic && !isChainedConstructor());
}
updateSignature();
setActionEnabled(PsiNameHelper.getInstance(myProject).isIdentifier(myNameField.getEnteredName()) ||
isChainedConstructor());
setActionEnabled(PsiNameHelper.getInstance(myProject).isIdentifier(myNameField.getEnteredName()) || isChainedConstructor());
}
@Override
@@ -1,4 +1,4 @@
// Copyright 2000-2025 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
// Copyright 2000-2026 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
package com.intellij.refactoring.extractMethod.newImpl
import com.intellij.codeInsight.AnnotationUtil
@@ -37,6 +37,7 @@ import com.intellij.psi.util.PsiTypesUtil
import com.intellij.psi.util.PsiUtil
import com.intellij.psi.util.TypeConversionUtil
import com.intellij.psi.util.startOffset
import com.intellij.refactoring.extractMethod.ExtractMethodDialog
import com.intellij.refactoring.extractMethod.newImpl.ExtractMethodHelper.findRequiredTypeParameters
import com.intellij.refactoring.extractMethod.newImpl.ExtractMethodHelper.getExpressionType
import com.intellij.refactoring.extractMethod.newImpl.ExtractMethodHelper.getReturnedExpression
@@ -106,7 +107,8 @@ fun findExtractOptions(elements: List<PsiElement>, inferNullity: Boolean = true)
requiredVariablesInside = analyzer.findUndeclaredVariables().filterNot { it.name in parameterNames },
typeParameters = findRequiredTypeParameters(targetClass, elements),
inputParameters = inputParameters,
exposedLocalVariables = exposedVariables
exposedLocalVariables = exposedVariables,
visibility = ExtractMethodDialog.getDefaultVisibility()
)
extractOptions = ExtractMethodPipeline.withCastedParameters(extractOptions)