mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-09 20:42:52 +07:00
introduce field: use precalculated settings (IDEA-83180)
(cherry picked from commit 019be99b8e2b558e2014565a15dd29f0202b4653)
This commit is contained in:
+3
-3
@@ -218,9 +218,9 @@ public abstract class BaseExpressionToFieldHandler extends IntroduceHandlerBase
|
||||
return false;
|
||||
}
|
||||
|
||||
public static void setModifiers(PsiField field, Settings settings, final boolean declareStatic) {
|
||||
public static void setModifiers(PsiField field, Settings settings) {
|
||||
if (!settings.isIntroduceEnumConstant()) {
|
||||
if (declareStatic) {
|
||||
if (settings.isDeclareStatic()) {
|
||||
PsiUtil.setModifierProperty(field, PsiModifier.STATIC, true);
|
||||
}
|
||||
if (settings.isDeclareFinal()) {
|
||||
@@ -711,7 +711,7 @@ public abstract class BaseExpressionToFieldHandler extends IntroduceHandlerBase
|
||||
createField(myFieldName, myType, initializer, initializerPlace == InitializationPlace.IN_FIELD_DECLARATION && initializer != null,
|
||||
myParentClass);
|
||||
|
||||
setModifiers(myField, mySettings, mySettings.isDeclareStatic());
|
||||
setModifiers(myField, mySettings);
|
||||
myField = appendField(initializer, initializerPlace, destClass, myParentClass, myAnchorElement, myField);
|
||||
if (!mySettings.isIntroduceEnumConstant()) {
|
||||
VisibilityUtil.fixVisibility(myOccurrences, myField, mySettings.getFieldVisibility());
|
||||
|
||||
@@ -31,6 +31,8 @@ import com.intellij.refactoring.util.CommonRefactoringUtil;
|
||||
import com.intellij.refactoring.util.occurrences.*;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public class IntroduceFieldHandler extends BaseExpressionToFieldHandler {
|
||||
|
||||
public static final String REFACTORING_NAME = RefactoringBundle.message("introduce.field.title");
|
||||
@@ -199,10 +201,19 @@ public class IntroduceFieldHandler extends BaseExpressionToFieldHandler {
|
||||
final PsiStatement statement = PsiTreeUtil.getParentOfType(local, PsiStatement.class);
|
||||
return IntroduceFieldHandler.this.showRefactoringDialog(project, editor, aClass, local.getInitializer(), local.getType(), occurences, local, statement);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected int getChosenClassIndex(List<PsiClass> classes) {
|
||||
return IntroduceFieldHandler.this.getChosenClassIndex(classes);
|
||||
}
|
||||
};
|
||||
return localToFieldHandler.convertLocalToField(localVariable, editor);
|
||||
}
|
||||
|
||||
protected int getChosenClassIndex(List<PsiClass> classes) {
|
||||
return classes.size() - 1;
|
||||
}
|
||||
|
||||
private static class MyOccurrenceFilter implements OccurrenceFilter {
|
||||
public boolean isOK(PsiExpression occurrence) {
|
||||
return !isInSuperOrThis(occurrence);
|
||||
|
||||
@@ -81,7 +81,7 @@ public abstract class LocalToFieldHandler {
|
||||
|
||||
if (classes.isEmpty()) return false;
|
||||
if (classes.size() == 1 || ApplicationManager.getApplication().isUnitTestMode()) {
|
||||
if (convertLocalToField(local, classes.get(classes.size() - 1), editor, tempIsStatic)) return false;
|
||||
if (convertLocalToField(local, classes.get(getChosenClassIndex(classes)), editor, tempIsStatic)) return false;
|
||||
} else {
|
||||
final boolean isStatic = tempIsStatic;
|
||||
NavigationUtil.getPsiElementPopup(classes.toArray(new PsiClass[classes.size()]), new PsiClassListCellRenderer(), "Choose class to introduce " + (myIsConstant ? "constant" : "field"), new PsiElementProcessor<PsiClass>() {
|
||||
@@ -96,6 +96,10 @@ public abstract class LocalToFieldHandler {
|
||||
return true;
|
||||
}
|
||||
|
||||
protected int getChosenClassIndex(List<PsiClass> classes) {
|
||||
return classes.size() - 1;
|
||||
}
|
||||
|
||||
private boolean convertLocalToField(PsiLocalVariable local, PsiClass aClass, Editor editor, boolean isStatic) {
|
||||
final PsiExpression[] occurences = CodeInsightUtil.findReferenceExpressions(RefactoringUtil.getVariableScope(local), local);
|
||||
if (editor != null) {
|
||||
@@ -250,7 +254,6 @@ public abstract class LocalToFieldHandler {
|
||||
private final PsiClass myDestinationClass;
|
||||
private final BaseExpressionToFieldHandler.Settings mySettings;
|
||||
private final BaseExpressionToFieldHandler.InitializationPlace myInitializerPlace;
|
||||
private final boolean myStatic;
|
||||
private final PsiExpression[] myOccurences;
|
||||
private PsiField myField;
|
||||
private PsiStatement myAssignmentStatement;
|
||||
@@ -269,7 +272,6 @@ public abstract class LocalToFieldHandler {
|
||||
myDestinationClass = aClass;
|
||||
mySettings = settings;
|
||||
myInitializerPlace = settings.getInitializerPlace();
|
||||
myStatic = isStatic;
|
||||
myOccurences = occurrences;
|
||||
}
|
||||
|
||||
@@ -288,7 +290,7 @@ public abstract class LocalToFieldHandler {
|
||||
myField = mySettings.isIntroduceEnumConstant() ? EnumConstantsUtil.createEnumConstant(myDestinationClass, myLocal, myFieldName)
|
||||
: createField(myLocal, mySettings.getForcedType(), myFieldName, myInitializerPlace == IN_FIELD_DECLARATION);
|
||||
myField = (PsiField)myDestinationClass.add(myField);
|
||||
BaseExpressionToFieldHandler.setModifiers(myField, mySettings, myStatic);
|
||||
BaseExpressionToFieldHandler.setModifiers(myField, mySettings);
|
||||
if (!mySettings.isIntroduceEnumConstant()) {
|
||||
VisibilityUtil.fixVisibility(myOccurences, myField, mySettings.getFieldVisibility());
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user