IDEA-CR-31769 Migration to PsiFile-based CodeStyle API

Continued, part 2
This commit is contained in:
Rustam Vishnyakov
2018-04-16 16:11:55 +03:00
parent 213317a53c
commit e2ba4cbd1e
17 changed files with 101 additions and 55 deletions
@@ -15,13 +15,13 @@
*/
package com.intellij.codeInsight.editorActions.smartEnter;
import com.intellij.application.options.CodeStyle;
import com.intellij.lang.ASTNode;
import com.intellij.lang.java.JavaLanguage;
import com.intellij.openapi.editor.Editor;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.util.TextRange;
import com.intellij.psi.*;
import com.intellij.psi.codeStyle.CodeStyleSettingsManager;
import com.intellij.psi.impl.source.tree.JavaJspElementType;
import com.intellij.util.IncorrectOperationException;
import org.jetbrains.annotations.NotNull;
@@ -96,7 +96,7 @@ public class ForStatementFixer implements Fixer {
{
final Project project = editor.getProject();
int offset = lastValidForPart.getTextRange().getEndOffset();
if (project != null && CodeStyleSettingsManager.getSettings(project).getCommonSettings(JavaLanguage.INSTANCE).SPACE_AFTER_COMMA) {
if (project != null && CodeStyle.getSettings(editor).getCommonSettings(JavaLanguage.INSTANCE).SPACE_AFTER_COMMA) {
if (editor.getDocument().getCharsSequence().charAt(lastValidForPart.getTextRange().getEndOffset() - 1) != ';') {
offset++;
}
@@ -15,6 +15,7 @@
*/
package com.intellij.codeInsight.editorActions.smartEnter;
import com.intellij.application.options.CodeStyle;
import com.intellij.codeInsight.CodeInsightUtil;
import com.intellij.codeInsight.lookup.LookupManager;
import com.intellij.featureStatistics.FeatureUsageTracker;
@@ -32,7 +33,6 @@ import com.intellij.openapi.util.Key;
import com.intellij.openapi.util.TextRange;
import com.intellij.psi.*;
import com.intellij.psi.codeStyle.CodeStyleManager;
import com.intellij.psi.codeStyle.CodeStyleSettingsManager;
import com.intellij.psi.codeStyle.CommonCodeStyleSettings;
import com.intellij.psi.util.PsiTreeUtil;
import com.intellij.util.IncorrectOperationException;
@@ -329,7 +329,7 @@ public class JavaSmartEnterProcessor extends SmartEnterProcessor {
if (CharArrayUtil.regionMatches(chars, caretOffset - "{}".length(), "{}") ||
CharArrayUtil.regionMatches(chars, caretOffset - "{\n}".length(), "{\n}")) {
commit(editor);
final CommonCodeStyleSettings settings = CodeStyleSettingsManager.getSettings(file.getProject()).getCommonSettings(JavaLanguage.INSTANCE);
final CommonCodeStyleSettings settings = CodeStyle.getSettings(file).getCommonSettings(JavaLanguage.INSTANCE);
final boolean old = settings.KEEP_SIMPLE_BLOCKS_IN_ONE_LINE;
settings.KEEP_SIMPLE_BLOCKS_IN_ONE_LINE = false;
PsiElement leaf = file.findElementAt(caretOffset - 1);
@@ -15,6 +15,7 @@
*/
package com.intellij.codeInsight.editorActions.smartEnter;
import com.intellij.application.options.CodeStyle;
import com.intellij.lang.ASTNode;
import com.intellij.lang.java.JavaLanguage;
import com.intellij.openapi.editor.Document;
@@ -78,7 +79,7 @@ public class SemicolonFixer implements Fixer {
}
String toInsert = ";";
if (CodeStyleSettingsManager.getSettings(psiElement.getProject()).getCommonSettings(JavaLanguage.INSTANCE).SPACE_AFTER_SEMICOLON) {
if (CodeStyle.getSettings(psiElement.getContainingFile()).getCommonSettings(JavaLanguage.INSTANCE).SPACE_AFTER_SEMICOLON) {
toInsert += " ";
}
document.insertString(range.getEndOffset(), toInsert);
@@ -134,7 +135,7 @@ public class SemicolonFixer implements Fixer {
if (((PsiForStatement)parent).getUpdate() == psiElement) {
return false;
}
if (CodeStyleSettingsManager.getSettings(psiElement.getProject()).getCommonSettings(JavaLanguage.INSTANCE).SPACE_AFTER_SEMICOLON) {
if (CodeStyle.getSettings(psiElement.getContainingFile()).getCommonSettings(JavaLanguage.INSTANCE).SPACE_AFTER_SEMICOLON) {
toInsert += " ";
}
}
@@ -94,7 +94,7 @@ public class GenerateEqualsHelper implements Runnable {
}
private static boolean shouldAddOverrideAnnotation(PsiElement context) {
JavaCodeStyleSettings style = CodeStyleSettingsManager.getSettings(context.getProject()).getCustomSettings(JavaCodeStyleSettings.class);
JavaCodeStyleSettings style = JavaCodeStyleSettings.getInstance(context.getContainingFile());
return style.INSERT_OVERRIDE_ANNOTATION && PsiUtil.isLanguageLevel5OrHigher(context);
}
@@ -170,7 +170,7 @@ public class GenerateEqualsHelper implements Runnable {
private PsiMethod createEquals() throws IncorrectOperationException {
@NonNls StringBuilder buffer = new StringBuilder();
JavaCodeStyleSettings styleSettings = CodeStyleSettingsManager.getSettings(myProject).getCustomSettings(JavaCodeStyleSettings.class);
JavaCodeStyleSettings styleSettings = JavaCodeStyleSettings.getInstance(myClass.getContainingFile());
ArrayList<PsiField> equalsFields = new ArrayList<>();
ContainerUtil.addAll(equalsFields, myEqualsFields);
Collections.sort(equalsFields, EqualsFieldsComparator.INSTANCE);
@@ -210,8 +210,7 @@ public class GenerateMembersUtil {
if (member instanceof PsiMethod) {
if (!aClass.isInterface()) {
final PsiParameter[] parameters = ((PsiMethod)member).getParameterList().getParameters();
final boolean generateFinals = CodeStyleSettingsManager.getSettings(aClass.getProject())
.getCustomSettings(JavaCodeStyleSettings.class).GENERATE_FINAL_PARAMETERS;
final boolean generateFinals = JavaCodeStyleSettings.getInstance(aClass.getContainingFile()).GENERATE_FINAL_PARAMETERS;
for (final PsiParameter parameter : parameters) {
PsiUtil.setModifierProperty(parameter, PsiModifier.FINAL, generateFinals);
}
@@ -698,7 +697,7 @@ public class GenerateMembersUtil {
public static PsiMethod setVisibility(PsiMember member, PsiMethod prototype) {
if (prototype == null) return null;
String visibility = CodeStyleSettingsManager.getSettings(member.getProject()).getCustomSettings(JavaCodeStyleSettings.class).VISIBILITY;
String visibility = JavaCodeStyleSettings.getInstance(member.getContainingFile()).VISIBILITY;
@PsiModifier.ModifierConstant String newVisibility;
if (VisibilityUtil.ESCALATE_VISIBILITY.equals(visibility)) {
@@ -718,7 +717,7 @@ public class GenerateMembersUtil {
public static PsiMethod annotateOnOverrideImplement(@Nullable PsiClass targetClass, @Nullable PsiMethod generated) {
if (generated == null || targetClass == null) return generated;
if (CodeStyleSettingsManager.getSettings(targetClass.getProject()).getCustomSettings(JavaCodeStyleSettings.class).INSERT_OVERRIDE_ANNOTATION) {
if (JavaCodeStyleSettings.getInstance(targetClass.getContainingFile()).INSERT_OVERRIDE_ANNOTATION) {
PsiMethod superMethod = targetClass.findMethodBySignature(generated, true);
if (superMethod != null && superMethod.getContainingClass() != targetClass) {
OverrideImplementUtil.annotateOnOverrideImplement(generated, targetClass, superMethod, true);
@@ -1,6 +1,7 @@
// Copyright 2000-2017 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file.
package com.intellij.codeInsight.generation;
import com.intellij.application.options.CodeStyle;
import com.intellij.codeInsight.AnnotationUtil;
import com.intellij.codeInsight.CodeInsightActionHandler;
import com.intellij.codeInsight.CodeInsightBundle;
@@ -18,7 +19,6 @@ import com.intellij.lang.java.JavaLanguage;
import com.intellij.openapi.actionSystem.KeyboardShortcut;
import com.intellij.openapi.actionSystem.Shortcut;
import com.intellij.openapi.application.ApplicationManager;
import com.intellij.openapi.application.Result;
import com.intellij.openapi.application.TransactionGuard;
import com.intellij.openapi.command.CommandProcessor;
import com.intellij.openapi.command.WriteCommandAction;
@@ -37,7 +37,10 @@ import com.intellij.openapi.ui.DialogWrapper;
import com.intellij.openapi.ui.Messages;
import com.intellij.openapi.util.text.StringUtil;
import com.intellij.psi.*;
import com.intellij.psi.codeStyle.*;
import com.intellij.psi.codeStyle.CodeStyleManager;
import com.intellij.psi.codeStyle.CommonCodeStyleSettings;
import com.intellij.psi.codeStyle.JavaCodeStyleManager;
import com.intellij.psi.codeStyle.JavaCodeStyleSettings;
import com.intellij.psi.infos.CandidateInfo;
import com.intellij.psi.javadoc.PsiDocComment;
import com.intellij.psi.util.*;
@@ -79,12 +82,11 @@ public class OverrideImplementUtil extends OverrideImplementExploreUtil {
? TypeConversionUtil.getSuperClassSubstitutor(containingClass, aClass, PsiSubstitutor.EMPTY)
: PsiSubstitutor.EMPTY;
return overrideOrImplementMethod(aClass, method, substitutor, toCopyJavaDoc,
CodeStyleSettingsManager.getSettings(aClass.getProject())
.getCustomSettings(JavaCodeStyleSettings.class).INSERT_OVERRIDE_ANNOTATION);
JavaCodeStyleSettings.getInstance(aClass.getContainingFile()).INSERT_OVERRIDE_ANNOTATION);
}
public static boolean isInsertOverride(PsiMethod superMethod, PsiClass targetClass) {
if (!CodeStyleSettingsManager.getSettings(targetClass.getProject()).getCustomSettings(JavaCodeStyleSettings.class).INSERT_OVERRIDE_ANNOTATION) {
if (!JavaCodeStyleSettings.getInstance(targetClass.getContainingFile()).INSERT_OVERRIDE_ANNOTATION) {
return false;
}
return canInsertOverride(superMethod, targetClass);
@@ -192,7 +194,7 @@ public class OverrideImplementUtil extends OverrideImplementExploreUtil {
annotateOnOverrideImplement(result, aClass, method, insertOverrideIfPossible);
if (CodeStyleSettingsManager.getSettings(aClass.getProject()).getCustomSettings(JavaCodeStyleSettings.class).REPEAT_SYNCHRONIZED &&
if (JavaCodeStyleSettings.getInstance(aClass.getContainingFile()).REPEAT_SYNCHRONIZED &&
method.hasModifierProperty(PsiModifier.SYNCHRONIZED)) {
result.getModifierList().setModifierProperty(PsiModifier.SYNCHRONIZED, true);
}
@@ -211,7 +213,7 @@ public class OverrideImplementUtil extends OverrideImplementExploreUtil {
// probably, it's better to reformat the whole method - it can go from other style sources
final Project project = method.getProject();
CodeStyleManager codeStyleManager = CodeStyleManager.getInstance(project);
CommonCodeStyleSettings javaSettings = CodeStyleSettingsManager.getSettings(project).getCommonSettings(JavaLanguage.INSTANCE);
CommonCodeStyleSettings javaSettings = CodeStyle.getLanguageSettings(aClass.getContainingFile(), JavaLanguage.INSTANCE);
boolean keepBreaks = javaSettings.KEEP_LINE_BREAKS;
javaSettings.KEEP_LINE_BREAKS = false;
result = (PsiMethod)JavaCodeStyleManager.getInstance(project).shortenClassReferences(result);
@@ -229,8 +231,7 @@ public class OverrideImplementUtil extends OverrideImplementExploreUtil {
public static void annotateOnOverrideImplement(PsiMethod method, PsiClass targetClass, PsiMethod overridden) {
annotateOnOverrideImplement(method, targetClass, overridden,
CodeStyleSettingsManager.getSettings(method.getProject())
.getCustomSettings(JavaCodeStyleSettings.class).INSERT_OVERRIDE_ANNOTATION);
JavaCodeStyleSettings.getInstance(targetClass.getContainingFile()).INSERT_OVERRIDE_ANNOTATION);
}
public static void annotateOnOverrideImplement(PsiMethod method, PsiClass targetClass, PsiMethod overridden, boolean insertOverride) {
@@ -612,14 +613,14 @@ public class OverrideImplementUtil extends OverrideImplementExploreUtil {
public static void overrideOrImplementMethodsInRightPlace(Editor editor1, PsiClass aClass, Collection<PsiMethodMember> members, boolean copyJavadoc) {
boolean insert =
CodeStyleSettingsManager.getSettings(aClass.getProject()).getCustomSettings(JavaCodeStyleSettings.class).INSERT_OVERRIDE_ANNOTATION;
JavaCodeStyleSettings.getInstance(aClass.getContainingFile()).INSERT_OVERRIDE_ANNOTATION;
overrideOrImplementMethodsInRightPlace(editor1, aClass, members, copyJavadoc, insert);
}
public static List<PsiMethod> overrideOrImplementMethodCandidates(PsiClass aClass, Collection<CandidateInfo> candidatesToImplement,
boolean copyJavadoc) throws IncorrectOperationException {
boolean insert =
CodeStyleSettingsManager.getSettings(aClass.getProject()).getCustomSettings(JavaCodeStyleSettings.class).INSERT_OVERRIDE_ANNOTATION;
JavaCodeStyleSettings.getInstance(aClass.getContainingFile()).INSERT_OVERRIDE_ANNOTATION;
return overrideOrImplementMethodCandidates(aClass, candidatesToImplement, copyJavadoc, insert);
}
}
@@ -27,6 +27,15 @@ public interface OverrideImplementsAnnotationsHandler {
/**
* Returns annotations which should be copied from a source to an implementation (by default, no annotations are copied).
*/
default String[] getAnnotations(@NotNull PsiFile file) {
//noinspection deprecation
return getAnnotations(file.getProject());
}
/**
* @deprecated Use {@link #getAnnotations(PsiFile)}
*/
@Deprecated
String[] getAnnotations(Project project);
@Deprecated
@@ -43,7 +52,7 @@ public interface OverrideImplementsAnnotationsHandler {
JavaPsiFacade facade = JavaPsiFacade.getInstance(project);
for (OverrideImplementsAnnotationsHandler each : Extensions.getExtensions(EP_NAME)) {
for (String annotation : each.getAnnotations(project)) {
for (String annotation : each.getAnnotations(target.getContainingFile())) {
if (moduleScope != null && facade.findClass(annotation, moduleScope) == null) continue;
int flags = CHECK_EXTERNAL | CHECK_TYPE;
@@ -16,13 +16,15 @@
package com.intellij.codeInsight.generation;
import com.intellij.application.options.CodeStyle;
import com.intellij.codeInsight.AnnotationUtil;
import com.intellij.codeInsight.NullableNotNullManager;
import com.intellij.openapi.project.Project;
import com.intellij.psi.PsiFile;
import com.intellij.psi.codeStyle.CodeStyleSettings;
import com.intellij.psi.codeStyle.CodeStyleSettingsManager;
import com.intellij.psi.codeStyle.JavaCodeStyleSettings;
import com.intellij.util.ArrayUtil;
import org.jetbrains.annotations.NotNull;
import java.util.ArrayList;
import java.util.List;
@@ -30,6 +32,23 @@ import java.util.List;
public class OverrideImplementsAnnotationsHandlerImpl implements OverrideImplementsAnnotationsHandler {
@Override
public String[] getAnnotations(Project project) {
List<String> annotations = getCoreAnnotations(project);
CodeStyleSettings settings = CodeStyle.getSettings(project);
annotations.addAll(settings.getCustomSettings(JavaCodeStyleSettings.class).getRepeatAnnotations());
return ArrayUtil.toStringArray(annotations);
}
@Override
public String[] getAnnotations(@NotNull PsiFile file) {
List<String> annotations = getCoreAnnotations(file.getProject());
annotations.addAll(JavaCodeStyleSettings.getInstance(file).getRepeatAnnotations());
return ArrayUtil.toStringArray(annotations);
}
@NotNull
private static List<String> getCoreAnnotations(Project project) {
List<String> annotations = new ArrayList<>();
NullableNotNullManager manager = NullableNotNullManager.getInstance(project);
@@ -37,10 +56,6 @@ public class OverrideImplementsAnnotationsHandlerImpl implements OverrideImpleme
annotations.addAll(manager.getNullables());
annotations.add(AnnotationUtil.NLS);
CodeStyleSettings settings = CodeStyleSettingsManager.getSettings(project);
annotations.addAll(settings.getCustomSettings(JavaCodeStyleSettings.class).getRepeatAnnotations());
return ArrayUtil.toStringArray(annotations);
return annotations;
}
}
@@ -28,7 +28,10 @@ import com.intellij.openapi.project.Project;
import com.intellij.openapi.ui.DialogWrapper;
import com.intellij.openapi.util.Key;
import com.intellij.psi.*;
import com.intellij.psi.codeStyle.*;
import com.intellij.psi.codeStyle.JavaCodeStyleManager;
import com.intellij.psi.codeStyle.JavaCodeStyleSettings;
import com.intellij.psi.codeStyle.SuggestedNameInfo;
import com.intellij.psi.codeStyle.VariableKind;
import com.intellij.psi.search.LocalSearchScope;
import com.intellij.psi.search.searches.ReferencesSearch;
import com.intellij.psi.util.PsiTreeUtil;
@@ -166,7 +169,7 @@ public class BindFieldsFromParametersAction extends BaseIntentionAction implemen
for (PsiParameter parameter : parameters) {
types.putValue(parameter.getType(), parameter);
}
final JavaCodeStyleSettings settings = CodeStyleSettingsManager.getSettings(project).getCustomSettings(JavaCodeStyleSettings.class);
final JavaCodeStyleSettings settings = JavaCodeStyleSettings.getInstance(file);
final boolean preferLongerNames = settings.PREFER_LONGER_NAMES;
for (PsiParameter selected : parameters) {
try {
@@ -1,6 +1,7 @@
// Copyright 2000-2018 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file.
package com.intellij.psi.impl;
import com.intellij.application.options.CodeStyle;
import com.intellij.ide.fileTemplates.FileTemplate;
import com.intellij.ide.fileTemplates.FileTemplateManager;
import com.intellij.ide.fileTemplates.JavaTemplateUtil;
@@ -23,7 +24,6 @@ import com.intellij.openapi.vfs.VirtualFile;
import com.intellij.pom.java.LanguageLevel;
import com.intellij.psi.*;
import com.intellij.psi.codeStyle.CodeStyleSettings;
import com.intellij.psi.codeStyle.CodeStyleSettingsManager;
import com.intellij.psi.codeStyle.JavaCodeStyleSettings;
import com.intellij.psi.codeStyle.arrangement.MemberOrderService;
import com.intellij.psi.impl.compiled.ClsClassImpl;
@@ -237,7 +237,7 @@ public class JavaPsiImplementationHelperImpl extends JavaPsiImplementationHelper
@Nullable
@Override
public PsiElement getDefaultMemberAnchor(@NotNull PsiClass aClass, @NotNull PsiMember member) {
CodeStyleSettings settings = CodeStyleSettingsManager.getSettings(aClass.getProject());
CodeStyleSettings settings = CodeStyle.getSettings(aClass.getContainingFile());
MemberOrderService service = ServiceManager.getService(MemberOrderService.class);
PsiElement anchor = service.getAnchor(member, settings.getCommonSettings(JavaLanguage.INSTANCE), aClass);
@@ -15,12 +15,12 @@
*/
package com.intellij.psi.impl.source.codeStyle;
import com.intellij.application.options.CodeStyle;
import com.intellij.codeInsight.AnnotationTargetUtil;
import com.intellij.lang.ASTNode;
import com.intellij.openapi.project.Project;
import com.intellij.psi.*;
import com.intellij.psi.codeStyle.CodeStyleSettings;
import com.intellij.psi.codeStyle.CodeStyleSettingsManager;
import com.intellij.psi.codeStyle.JavaCodeStyleSettings;
import com.intellij.psi.codeStyle.ReferenceAdjuster;
import com.intellij.psi.impl.PsiImplUtil;
@@ -134,7 +134,7 @@ public class JavaReferenceAdjuster implements ReferenceAdjuster {
@Override
public ASTNode process(@NotNull ASTNode element, boolean addImports, boolean incompleteCode, Project project) {
final CodeStyleSettings settings = CodeStyleSettingsManager.getSettings(project);
final CodeStyleSettings settings = CodeStyle.getSettings(element.getPsi().getContainingFile());
JavaCodeStyleSettings javaSettings = settings.getCustomSettings(JavaCodeStyleSettings.class);
return process(element, addImports, incompleteCode, javaSettings.useFqNamesInJavadocAlways(), javaSettings.USE_FQ_CLASS_NAMES);
}
@@ -177,7 +177,7 @@ public class JavaReferenceAdjuster implements ReferenceAdjuster {
@Override
public void processRange(@NotNull ASTNode element, int startOffset, int endOffset, Project project) {
final CodeStyleSettings settings = CodeStyleSettingsManager.getSettings(project);
final CodeStyleSettings settings = CodeStyle.getSettings(element.getPsi().getContainingFile());
JavaCodeStyleSettings javaSettings = settings.getCustomSettings(JavaCodeStyleSettings.class);
processRange(element, startOffset, endOffset, javaSettings.useFqNamesInJavadocAlways(), javaSettings.USE_FQ_CLASS_NAMES);
}
@@ -239,7 +239,7 @@ public class JavaReferenceAdjuster implements ReferenceAdjuster {
return reference;
}
if (!CodeStyleSettingsManager.getSettings(reference.getProject()).getCustomSettings(JavaCodeStyleSettings.class).INSERT_INNER_CLASS_IMPORTS) {
if (!JavaCodeStyleSettings.getInstance(reference.getContainingFile()).INSERT_INNER_CLASS_IMPORTS) {
final PsiElement qualifier = reference.getQualifier();
if (qualifier instanceof PsiQualifiedReferenceElement) {
return getClassReferenceToShorten(parentClass, addImports, (PsiQualifiedReferenceElement)qualifier);
@@ -19,7 +19,6 @@ import com.intellij.codeInsight.generation.GenerateMembersUtil;
import com.intellij.ide.highlighter.JavaFileType;
import com.intellij.ide.util.PackageUtil;
import com.intellij.openapi.application.ApplicationManager;
import com.intellij.openapi.application.Result;
import com.intellij.openapi.command.WriteCommandAction;
import com.intellij.openapi.diagnostic.Logger;
import com.intellij.openapi.module.Module;
@@ -29,7 +28,6 @@ import com.intellij.openapi.util.Ref;
import com.intellij.openapi.util.text.StringUtil;
import com.intellij.psi.*;
import com.intellij.psi.codeStyle.CodeStyleManager;
import com.intellij.psi.codeStyle.CodeStyleSettingsManager;
import com.intellij.psi.codeStyle.JavaCodeStyleManager;
import com.intellij.psi.codeStyle.JavaCodeStyleSettings;
import com.intellij.psi.javadoc.PsiDocTagValue;
@@ -225,8 +223,7 @@ public class ExtractClassProcessor extends FixableUsagesRefactoringProcessor {
private String calculateDelegateFieldName() {
final Project project = sourceClass.getProject();
final CodeStyleSettingsManager settingsManager = CodeStyleSettingsManager.getInstance(project);
final JavaCodeStyleSettings settings = settingsManager.getCurrentSettings().getCustomSettings(JavaCodeStyleSettings.class);
final JavaCodeStyleSettings settings = JavaCodeStyleSettings.getInstance(sourceClass.getContainingFile());
final String baseName = settings.FIELD_NAME_PREFIX.length() == 0 ? StringUtil.decapitalize(newClassName) : newClassName;
String name = settings.FIELD_NAME_PREFIX + baseName + settings.FIELD_NAME_SUFFIX;
@@ -19,9 +19,9 @@ import com.intellij.openapi.help.HelpManager;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.ui.DialogWrapper;
import com.intellij.psi.PsiExpression;
import com.intellij.psi.PsiFile;
import com.intellij.psi.PsiNameHelper;
import com.intellij.psi.PsiType;
import com.intellij.psi.codeStyle.CodeStyleSettingsManager;
import com.intellij.psi.codeStyle.JavaCodeStyleSettings;
import com.intellij.psi.codeStyle.SuggestedNameInfo;
import com.intellij.refactoring.HelpID;
@@ -40,6 +40,7 @@ import java.awt.event.ItemListener;
class IntroduceVariableDialog extends DialogWrapper implements IntroduceVariableSettings {
private final Project myProject;
private final PsiFile myFile;
private final PsiExpression myExpression;
private final int myOccurrencesCount;
private final boolean myAnyLValueOccurences;
@@ -71,6 +72,7 @@ class IntroduceVariableDialog extends DialogWrapper implements IntroduceVariable
myDeclareFinalIfAll = declareFinalIfAll;
myTypeSelectorManager = typeSelectorManager;
myValidator = validator;
myFile = expression.getContainingFile();
setTitle(REFACTORING_NAME);
init();
@@ -208,7 +210,7 @@ class IntroduceVariableDialog extends DialogWrapper implements IntroduceVariable
myCbFinal.setText(RefactoringBundle.message("declare.final"));
final Boolean createFinals = JavaRefactoringSettings.getInstance().INTRODUCE_LOCAL_CREATE_FINALS;
myCbFinalState = createFinals == null ?
CodeStyleSettingsManager.getSettings(myProject).getCustomSettings(JavaCodeStyleSettings.class).GENERATE_FINAL_LOCALS :
JavaCodeStyleSettings.getInstance(myFile).GENERATE_FINAL_LOCALS :
createFinals.booleanValue();
gbConstraints.insets = JBUI.emptyInsets();
@@ -253,6 +253,7 @@ public class JavaIntroduceParameterObjectClassDescriptor extends IntroduceParame
final ParameterObjectBuilder beanClassBuilder = new ParameterObjectBuilder();
beanClassBuilder.setVisibility(isCreateInnerClass() ? PsiModifier.PRIVATE : PsiModifier.PUBLIC);
beanClassBuilder.setProject(method.getProject());
beanClassBuilder.setFile(method.getContainingFile());
beanClassBuilder.setTypeArguments(getTypeParameters());
beanClassBuilder.setClassName(getClassName());
beanClassBuilder.setPackageName(getPackageName());
@@ -15,15 +15,14 @@
*/
package com.intellij.refactoring.introduceparameterobject;
import com.intellij.application.options.CodeStyle;
import com.intellij.codeInsight.generation.GenerateMembersUtil;
import com.intellij.openapi.project.Project;
import com.intellij.psi.*;
import com.intellij.psi.codeStyle.CodeStyleSettingsManager;
import com.intellij.psi.codeStyle.JavaCodeStyleManager;
import com.intellij.psi.codeStyle.JavaCodeStyleSettings;
import com.intellij.psi.codeStyle.VariableKind;
import com.intellij.psi.codeStyle.*;
import com.intellij.psi.javadoc.PsiDocComment;
import org.jetbrains.annotations.NonNls;
import org.jetbrains.annotations.NotNull;
import java.util.ArrayList;
import java.util.Collection;
@@ -36,6 +35,7 @@ class ParameterObjectBuilder {
private final List<ParameterSpec> fields = new ArrayList<>(5);
private final List<PsiTypeParameter> typeParams = new ArrayList<>();
private Project myProject;
private PsiFile myFile;
private JavaCodeStyleManager myJavaCodeStyleManager ;
private String myVisibility;
@@ -64,6 +64,10 @@ class ParameterObjectBuilder {
myJavaCodeStyleManager = JavaCodeStyleManager.getInstance(myProject);
}
public void setFile(@NotNull PsiFile file) {
myFile = file;
}
public String buildBeanClass() {
@NonNls final StringBuffer out = new StringBuffer(1024);
if (packageName.length() > 0) out.append("package " + packageName + ';');
@@ -129,14 +133,18 @@ class ParameterObjectBuilder {
out.append(GenerateMembersUtil.generateGetterPrototype(JavaPsiFacade.getElementFactory(myProject).createField(field.getName(), field.getType())).getText());
}
@NotNull
private CodeStyleSettings getSettings() {
return myFile != null ? CodeStyle.getSettings(myFile) : CodeStyle.getProjectOrDefaultSettings(myProject);
}
private void outputConstructor(@NonNls StringBuffer out) {
out.append("\t" + myVisibility + " " + className + '(');
for (Iterator<ParameterSpec> iterator = fields.iterator(); iterator.hasNext();) {
final ParameterSpec field = iterator.next();
final PsiParameter parameter = field.getParameter();
outputAnnotationString(parameter, out);
out.append(
CodeStyleSettingsManager.getSettings(myProject).getCustomSettings(JavaCodeStyleSettings.class).GENERATE_FINAL_PARAMETERS ?
out.append(getSettings().getCustomSettings(JavaCodeStyleSettings.class).GENERATE_FINAL_PARAMETERS ?
" final " : "");
final String parameterName = parameter.getName();
final PsiType type = field.getType();
@@ -15,14 +15,14 @@
*/
package com.intellij.refactoring.wrapreturnvalue;
import com.intellij.application.options.CodeStyle;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.util.text.StringUtil;
import com.intellij.psi.PsiFile;
import com.intellij.psi.PsiType;
import com.intellij.psi.PsiTypeParameter;
import com.intellij.psi.codeStyle.CodeStyleSettingsManager;
import com.intellij.psi.codeStyle.JavaCodeStyleManager;
import com.intellij.psi.codeStyle.JavaCodeStyleSettings;
import com.intellij.psi.codeStyle.VariableKind;
import com.intellij.psi.codeStyle.*;
import org.jetbrains.annotations.NotNull;
import java.io.IOException;
import java.util.ArrayList;
@@ -33,6 +33,7 @@ class ReturnValueBeanBuilder {
private String myClassName;
private String myPackageName;
private Project myProject;
private PsiFile myFile;
private PsiType myValueType;
private boolean myStatic;
@@ -53,6 +54,10 @@ class ReturnValueBeanBuilder {
myProject = project;
}
public void setFile(@NotNull PsiFile file) {
myFile = file;
}
public void setValueType(PsiType valueType) {
myValueType = valueType;
}
@@ -108,7 +113,7 @@ class ReturnValueBeanBuilder {
final String fieldName = getFieldName(name);
out.append("\tpublic ").append(myClassName).append('(');
out.append(
CodeStyleSettingsManager.getSettings(myProject).getCustomSettings(JavaCodeStyleSettings.class).GENERATE_FINAL_PARAMETERS ?
getSettings().getCustomSettings(JavaCodeStyleSettings.class).GENERATE_FINAL_PARAMETERS ?
"final " : "");
out.append(typeText).append(' ').append(parameterName);
out.append(") {\n");
@@ -121,6 +126,10 @@ class ReturnValueBeanBuilder {
out.append("\t}");
}
private CodeStyleSettings getSettings() {
return myFile != null ? CodeStyle.getSettings(myFile) : CodeStyle.getProjectOrDefaultSettings(myProject);
}
private void outputGetter(StringBuilder out) {
final String typeText = myValueType.getCanonicalText(true);
final String name = "value";
@@ -282,6 +282,7 @@ public class WrapReturnValueProcessor extends FixableUsagesRefactoringProcessor
final Project project = myMethod.getProject();
final ReturnValueBeanBuilder beanClassBuilder = new ReturnValueBeanBuilder();
beanClassBuilder.setProject(project);
beanClassBuilder.setFile(myMethod.getContainingFile());
beanClassBuilder.setTypeArguments(myTypeParameters);
beanClassBuilder.setClassName(myClassName);
beanClassBuilder.setPackageName(myPackageName);