From e2ba4cbd1eaea06c9284f461b3e53f60f372044f Mon Sep 17 00:00:00 2001 From: Rustam Vishnyakov Date: Mon, 16 Apr 2018 16:07:04 +0300 Subject: [PATCH] IDEA-CR-31769 Migration to PsiFile-based CodeStyle API Continued, part 2 --- .../smartEnter/ForStatementFixer.java | 4 +-- .../smartEnter/JavaSmartEnterProcessor.java | 4 +-- .../smartEnter/SemicolonFixer.java | 5 ++-- .../generation/GenerateEqualsHelper.java | 4 +-- .../generation/GenerateMembersUtil.java | 7 +++-- .../generation/OverrideImplementUtil.java | 23 ++++++++-------- .../OverrideImplementsAnnotationsHandler.java | 11 +++++++- ...rrideImplementsAnnotationsHandlerImpl.java | 27 ++++++++++++++----- .../impl/BindFieldsFromParametersAction.java | 7 +++-- .../impl/JavaPsiImplementationHelperImpl.java | 4 +-- .../codeStyle/JavaReferenceAdjuster.java | 8 +++--- .../extractclass/ExtractClassProcessor.java | 5 +--- .../IntroduceVariableDialog.java | 6 +++-- ...troduceParameterObjectClassDescriptor.java | 1 + .../ParameterObjectBuilder.java | 20 +++++++++----- .../ReturnValueBeanBuilder.java | 19 +++++++++---- .../WrapReturnValueProcessor.java | 1 + 17 files changed, 101 insertions(+), 55 deletions(-) diff --git a/java/java-impl/src/com/intellij/codeInsight/editorActions/smartEnter/ForStatementFixer.java b/java/java-impl/src/com/intellij/codeInsight/editorActions/smartEnter/ForStatementFixer.java index 6e88fd711416..5d1344b60f0a 100644 --- a/java/java-impl/src/com/intellij/codeInsight/editorActions/smartEnter/ForStatementFixer.java +++ b/java/java-impl/src/com/intellij/codeInsight/editorActions/smartEnter/ForStatementFixer.java @@ -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++; } diff --git a/java/java-impl/src/com/intellij/codeInsight/editorActions/smartEnter/JavaSmartEnterProcessor.java b/java/java-impl/src/com/intellij/codeInsight/editorActions/smartEnter/JavaSmartEnterProcessor.java index c3d98992497d..235bb261fbae 100644 --- a/java/java-impl/src/com/intellij/codeInsight/editorActions/smartEnter/JavaSmartEnterProcessor.java +++ b/java/java-impl/src/com/intellij/codeInsight/editorActions/smartEnter/JavaSmartEnterProcessor.java @@ -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); diff --git a/java/java-impl/src/com/intellij/codeInsight/editorActions/smartEnter/SemicolonFixer.java b/java/java-impl/src/com/intellij/codeInsight/editorActions/smartEnter/SemicolonFixer.java index f37fd0399322..3c673243905c 100644 --- a/java/java-impl/src/com/intellij/codeInsight/editorActions/smartEnter/SemicolonFixer.java +++ b/java/java-impl/src/com/intellij/codeInsight/editorActions/smartEnter/SemicolonFixer.java @@ -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 += " "; } } diff --git a/java/java-impl/src/com/intellij/codeInsight/generation/GenerateEqualsHelper.java b/java/java-impl/src/com/intellij/codeInsight/generation/GenerateEqualsHelper.java index a5112167758d..922e23030bd3 100644 --- a/java/java-impl/src/com/intellij/codeInsight/generation/GenerateEqualsHelper.java +++ b/java/java-impl/src/com/intellij/codeInsight/generation/GenerateEqualsHelper.java @@ -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 equalsFields = new ArrayList<>(); ContainerUtil.addAll(equalsFields, myEqualsFields); Collections.sort(equalsFields, EqualsFieldsComparator.INSTANCE); diff --git a/java/java-impl/src/com/intellij/codeInsight/generation/GenerateMembersUtil.java b/java/java-impl/src/com/intellij/codeInsight/generation/GenerateMembersUtil.java index 5d04d789200a..7e4c747ea141 100644 --- a/java/java-impl/src/com/intellij/codeInsight/generation/GenerateMembersUtil.java +++ b/java/java-impl/src/com/intellij/codeInsight/generation/GenerateMembersUtil.java @@ -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); diff --git a/java/java-impl/src/com/intellij/codeInsight/generation/OverrideImplementUtil.java b/java/java-impl/src/com/intellij/codeInsight/generation/OverrideImplementUtil.java index eec495d7fb5e..458cf055e1d3 100644 --- a/java/java-impl/src/com/intellij/codeInsight/generation/OverrideImplementUtil.java +++ b/java/java-impl/src/com/intellij/codeInsight/generation/OverrideImplementUtil.java @@ -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 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 overrideOrImplementMethodCandidates(PsiClass aClass, Collection 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); } } \ No newline at end of file diff --git a/java/java-impl/src/com/intellij/codeInsight/generation/OverrideImplementsAnnotationsHandler.java b/java/java-impl/src/com/intellij/codeInsight/generation/OverrideImplementsAnnotationsHandler.java index aaba57652dee..05bb45332324 100644 --- a/java/java-impl/src/com/intellij/codeInsight/generation/OverrideImplementsAnnotationsHandler.java +++ b/java/java-impl/src/com/intellij/codeInsight/generation/OverrideImplementsAnnotationsHandler.java @@ -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; diff --git a/java/java-impl/src/com/intellij/codeInsight/generation/OverrideImplementsAnnotationsHandlerImpl.java b/java/java-impl/src/com/intellij/codeInsight/generation/OverrideImplementsAnnotationsHandlerImpl.java index ccae8267b4c6..22bde1f79ff2 100644 --- a/java/java-impl/src/com/intellij/codeInsight/generation/OverrideImplementsAnnotationsHandlerImpl.java +++ b/java/java-impl/src/com/intellij/codeInsight/generation/OverrideImplementsAnnotationsHandlerImpl.java @@ -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 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 annotations = getCoreAnnotations(file.getProject()); + annotations.addAll(JavaCodeStyleSettings.getInstance(file).getRepeatAnnotations()); + return ArrayUtil.toStringArray(annotations); + } + + @NotNull + private static List getCoreAnnotations(Project project) { List 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; } } \ No newline at end of file diff --git a/java/java-impl/src/com/intellij/codeInsight/intention/impl/BindFieldsFromParametersAction.java b/java/java-impl/src/com/intellij/codeInsight/intention/impl/BindFieldsFromParametersAction.java index 67f46339660d..f1f618b25c32 100644 --- a/java/java-impl/src/com/intellij/codeInsight/intention/impl/BindFieldsFromParametersAction.java +++ b/java/java-impl/src/com/intellij/codeInsight/intention/impl/BindFieldsFromParametersAction.java @@ -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 { diff --git a/java/java-impl/src/com/intellij/psi/impl/JavaPsiImplementationHelperImpl.java b/java/java-impl/src/com/intellij/psi/impl/JavaPsiImplementationHelperImpl.java index 0c1077ca58df..b6bf2f9c9c26 100644 --- a/java/java-impl/src/com/intellij/psi/impl/JavaPsiImplementationHelperImpl.java +++ b/java/java-impl/src/com/intellij/psi/impl/JavaPsiImplementationHelperImpl.java @@ -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); diff --git a/java/java-impl/src/com/intellij/psi/impl/source/codeStyle/JavaReferenceAdjuster.java b/java/java-impl/src/com/intellij/psi/impl/source/codeStyle/JavaReferenceAdjuster.java index 0908e56b1fba..0b108217798d 100644 --- a/java/java-impl/src/com/intellij/psi/impl/source/codeStyle/JavaReferenceAdjuster.java +++ b/java/java-impl/src/com/intellij/psi/impl/source/codeStyle/JavaReferenceAdjuster.java @@ -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); diff --git a/java/java-impl/src/com/intellij/refactoring/extractclass/ExtractClassProcessor.java b/java/java-impl/src/com/intellij/refactoring/extractclass/ExtractClassProcessor.java index e4189a404200..bde7e3f6e747 100644 --- a/java/java-impl/src/com/intellij/refactoring/extractclass/ExtractClassProcessor.java +++ b/java/java-impl/src/com/intellij/refactoring/extractclass/ExtractClassProcessor.java @@ -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; diff --git a/java/java-impl/src/com/intellij/refactoring/introduceVariable/IntroduceVariableDialog.java b/java/java-impl/src/com/intellij/refactoring/introduceVariable/IntroduceVariableDialog.java index 336a8930c5fb..607ab721690b 100644 --- a/java/java-impl/src/com/intellij/refactoring/introduceVariable/IntroduceVariableDialog.java +++ b/java/java-impl/src/com/intellij/refactoring/introduceVariable/IntroduceVariableDialog.java @@ -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(); diff --git a/java/java-impl/src/com/intellij/refactoring/introduceparameterobject/JavaIntroduceParameterObjectClassDescriptor.java b/java/java-impl/src/com/intellij/refactoring/introduceparameterobject/JavaIntroduceParameterObjectClassDescriptor.java index d5f1b613b93f..3e231368b8f6 100644 --- a/java/java-impl/src/com/intellij/refactoring/introduceparameterobject/JavaIntroduceParameterObjectClassDescriptor.java +++ b/java/java-impl/src/com/intellij/refactoring/introduceparameterobject/JavaIntroduceParameterObjectClassDescriptor.java @@ -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()); diff --git a/java/java-impl/src/com/intellij/refactoring/introduceparameterobject/ParameterObjectBuilder.java b/java/java-impl/src/com/intellij/refactoring/introduceparameterobject/ParameterObjectBuilder.java index a4fdefc593ec..842101b66b19 100644 --- a/java/java-impl/src/com/intellij/refactoring/introduceparameterobject/ParameterObjectBuilder.java +++ b/java/java-impl/src/com/intellij/refactoring/introduceparameterobject/ParameterObjectBuilder.java @@ -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 fields = new ArrayList<>(5); private final List 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 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(); diff --git a/java/java-impl/src/com/intellij/refactoring/wrapreturnvalue/ReturnValueBeanBuilder.java b/java/java-impl/src/com/intellij/refactoring/wrapreturnvalue/ReturnValueBeanBuilder.java index 325a9c06fe83..9956fe0f7366 100644 --- a/java/java-impl/src/com/intellij/refactoring/wrapreturnvalue/ReturnValueBeanBuilder.java +++ b/java/java-impl/src/com/intellij/refactoring/wrapreturnvalue/ReturnValueBeanBuilder.java @@ -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"; diff --git a/java/java-impl/src/com/intellij/refactoring/wrapreturnvalue/WrapReturnValueProcessor.java b/java/java-impl/src/com/intellij/refactoring/wrapreturnvalue/WrapReturnValueProcessor.java index cdbbf617b8e5..6055f39e3ef4 100644 --- a/java/java-impl/src/com/intellij/refactoring/wrapreturnvalue/WrapReturnValueProcessor.java +++ b/java/java-impl/src/com/intellij/refactoring/wrapreturnvalue/WrapReturnValueProcessor.java @@ -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);