JavaElementKind; more usages

GitOrigin-RevId: 03b93ab6274c6f94faab483529b08d6a7876342b
This commit is contained in:
Tagir Valeev
2020-01-22 05:13:16 +00:00
committed by intellij-monorepo-bot
parent 8f8464d394
commit dbc4ff53e2
23 changed files with 115 additions and 71 deletions
@@ -43,12 +43,12 @@ public enum CreateClassKind implements ClassKind {
@Override
public String getDescription() {
return myKind.getNominativeName();
return myKind.nominative();
}
@Override
public String getDescriptionAccusative() {
return myKind.getAccusativeName();
return myKind.accusative();
}
@NotNull
@@ -2,51 +2,53 @@
package com.intellij.lang.jvm.actions
import com.intellij.codeInsight.daemon.QuickFixBundle.message
import com.intellij.codeInspection.CommonQuickFixBundle
import com.intellij.psi.util.JavaElementKind
object CreateMethodActionGroup : JvmActionGroup {
override fun getDisplayText(data: JvmActionGroup.RenderData?): String {
return message("create.method.from.usage.text", requireNotNull(data?.entityName))
return CommonQuickFixBundle.message("fix.create.title.x", JavaElementKind.METHOD.accusative(), data?.entityName!!)
}
}
object CreateAbstractMethodActionGroup : JvmActionGroup {
override fun getDisplayText(data: JvmActionGroup.RenderData?): String {
return message("create.abstract.method.from.usage.text", requireNotNull(data?.entityName))
return CommonQuickFixBundle.message("fix.create.title.x", JavaElementKind.ABSTRACT_METHOD.accusative(), data?.entityName!!)
}
}
object CreateFieldActionGroup : JvmActionGroup {
override fun getDisplayText(data: JvmActionGroup.RenderData?): String {
return message("create.field.from.usage.text", requireNotNull(data?.entityName))
return CommonQuickFixBundle.message("fix.create.title.x", JavaElementKind.FIELD.accusative(), data?.entityName!!)
}
}
object CreateConstantActionGroup : JvmActionGroup {
override fun getDisplayText(data: JvmActionGroup.RenderData?): String {
return message("create.constant.from.usage.text", requireNotNull(data?.entityName))
return CommonQuickFixBundle.message("fix.create.title.x", JavaElementKind.CONSTANT.accusative(), data?.entityName!!)
}
}
object CreateEnumConstantActionGroup : JvmActionGroup {
override fun getDisplayText(data: JvmActionGroup.RenderData?): String {
return message("create.enum.constant.from.usage.text", requireNotNull(data?.entityName))
return CommonQuickFixBundle.message("fix.create.title.x", JavaElementKind.ENUM_CONSTANT.accusative(), data?.entityName!!)
}
}
object CreatePropertyActionGroup : JvmActionGroup {
override fun getDisplayText(data: JvmActionGroup.RenderData?): String {
return message("create.property.from.usage.text", requireNotNull(data?.entityName))
return message("create.property.from.usage.text", data?.entityName!!)
}
}
object CreateReadOnlyPropertyActionGroup : JvmActionGroup {
override fun getDisplayText(data: JvmActionGroup.RenderData?): String {
return message("create.read.only.property.from.usage.text", requireNotNull(data?.entityName))
return message("create.read.only.property.from.usage.text", data?.entityName!!)
}
}
object CreateWriteOnlyPropertyActionGroup : JvmActionGroup {
override fun getDisplayText(data: JvmActionGroup.RenderData?): String {
return message("create.write.only.property.from.usage.text", requireNotNull(data?.entityName))
return message("create.write.only.property.from.usage.text", data?.entityName!!)
}
}
@@ -66,9 +66,7 @@ create.class.from.usage.family=Create Class from Usage
create.class.from.usage.text=Create {0} ''{1}''
create.inner.class.from.usage.text=Create inner {0} ''{1}''
create.constant.from.usage.family=Create Constant From Usage
create.constant.from.usage.text=Create constant field ''{0}''
create.constant.from.usage.full.text=Create constant field ''{0}'' in ''{1}''
create.enum.constant.from.usage.text=Create enum constant ''{0}''
create.constructor.from.new.family=Create Constructor from New
create.constructor.from.new.text=Create constructor
create.constructor.from.super.call.family=Create Constructor From super() Call
@@ -78,10 +76,8 @@ create.constructor.text=Create constructor in ''{0}''
create.constructor.matching.super=Create constructor matching super
super.class.constructors.chooser.title=Choose Super Class Constructors
create.field.from.usage.family=Create field from Usage
create.field.from.usage.text=Create field ''{0}''
create.field.from.usage.full.text=Create field ''{0}'' in ''{1}''
target.class.chooser.title=Choose Target Class
create.class.title=Create {0}
new.method.body.template.error.text=Please Correct "New Method Body" Template
new.method.body.template.error.title=File Template Error
cannot.create.java.file.error.text=Cannot create {0}.java in {1}: {2}
@@ -93,7 +89,6 @@ create.getter.for.field=Create getter for ''{0}''
create.setter.for.field=Create setter for ''{0}''
create.getter.and.setter.for.field=Create getter and setter for ''{0}''
create.local.from.usage.family=Create Local from Usage
create.local.from.usage.text=Create local variable ''{0}''
create.local.from.instanceof.usage.family=Create Local Var from instanceof Usage
create.local.from.instanceof.usage.text=Insert ''({0}){1}'' declaration
create.member.from.usage.family=Create member from usage
@@ -103,10 +98,8 @@ create.method.from.usage.full.text=Create method ''{0}'' in ''{1}''
create.type.parameter.from.usage.family=Create type parameter from usage
create.type.parameter.from.usage.text=Create type parameter ''{0}''
create.type.parameter.from.usage.chooser.title=Place to add type parameter
create.abstract.method.from.usage.text=Create abstract method ''{0}''
create.abstract.method.from.usage.full.text=Create abstract method ''{0}'' in ''{1}''
create.parameter.from.usage.family=Create parameter from Usage
create.parameter.from.usage.text=Create parameter ''{0}''
create.property.from.usage.family=Create property From Usage
create.property.from.usage.text=Create property ''{0}''
create.property.from.usage.full.text=Create property ''{0}'' in ''{1}''
@@ -124,8 +117,6 @@ delete.catch.family=Delete Catch
delete.catch.text=Delete catch for ''{0}''
delete.body.text=Delete method body
enable.optimize.imports.on.the.fly=Enable 'Settings | Editor | General | Auto Import | Optimize imports on the fly'
generalize.catch.family=Generalize Catch
generalize.catch.text=Generalize catch for ''{0}'' to ''{1}''
generify.family=Generify File
generify.text=Try to generify ''{0}''
implement.methods.fix=Implement methods
@@ -172,10 +163,7 @@ negation.broader.scope.text=Change to ''!({0})''
optimize.imports.fix=Optimize imports
remove.qualifier.fix=Remove qualifier
remove.unused.parameter.family=Remove unused parameter
remove.unused.parameter.text=Remove parameter ''{0}''
remove.unused.variable.family=Remove unused variable
remove.unused.variable=Remove variable ''{0}''
remove.unused.field=Remove field ''{0}''
rename.wrong.reference.family=Rename Wrong Reference
rename.wrong.reference.text=Rename reference
reuse.variable.declaration.family=Reuse variable declaration
@@ -222,9 +210,6 @@ add.interface.to.implements.list=Make ''{0}'' implement ''{1}''
remove.interface.from.implements.list=Make ''{0}'' not implement ''{1}''
convert.method.to.constructor=Make method constructor
create.class.text=Create class {0}
create.interface.text=Create interface {0}
create.package.text=Create package {0}
create.field.text=Create field {0}
create.property.text=Create property {0}
add.constructor.parameter.name=Add constructor parameter
@@ -21,6 +21,7 @@ import com.intellij.codeInsight.ExpectedTypesProvider;
import com.intellij.codeInsight.daemon.QuickFixBundle;
import com.intellij.codeInsight.template.Template;
import com.intellij.codeInsight.template.TemplateBuilderImpl;
import com.intellij.codeInspection.CommonQuickFixBundle;
import com.intellij.openapi.application.ApplicationManager;
import com.intellij.openapi.application.WriteAction;
import com.intellij.openapi.editor.Editor;
@@ -245,7 +246,7 @@ public class CreateClassFromNewFix extends CreateFromUsageBaseFix {
}
protected String getText(final String varName) {
return QuickFixBundle.message("create.class.from.usage.text", getKind().getDescriptionAccusative(), varName);
return CommonQuickFixBundle.message("fix.create.title.x", getKind().getDescriptionAccusative(), varName);
}
protected static PsiJavaCodeReferenceElement getReferenceElement(PsiNewExpression expression) {
@@ -16,7 +16,7 @@
package com.intellij.codeInsight.daemon.impl.quickfix;
import com.intellij.codeInsight.FileModificationService;
import com.intellij.codeInsight.daemon.QuickFixBundle;
import com.intellij.codeInspection.CommonQuickFixBundle;
import com.intellij.ide.util.PsiNavigationSupport;
import com.intellij.openapi.application.ApplicationManager;
import com.intellij.openapi.editor.Editor;
@@ -41,7 +41,7 @@ public class CreateClassFromUsageFix extends CreateClassFromUsageBaseFix {
@Override
public String getText(String varName) {
return QuickFixBundle.message("create.class.from.usage.text", myKind.getDescriptionAccusative(), varName);
return CommonQuickFixBundle.message("fix.create.title.x", myKind.getDescriptionAccusative(), varName);
}
@@ -19,11 +19,13 @@ import com.intellij.codeInsight.ExpectedTypeInfo;
import com.intellij.codeInsight.daemon.QuickFixBundle;
import com.intellij.codeInsight.template.Template;
import com.intellij.codeInsight.template.TemplateEditingAdapter;
import com.intellij.codeInspection.CommonQuickFixBundle;
import com.intellij.openapi.application.ApplicationManager;
import com.intellij.openapi.editor.Editor;
import com.intellij.openapi.project.Project;
import com.intellij.psi.*;
import com.intellij.psi.codeStyle.CodeStyleManager;
import com.intellij.psi.util.JavaElementKind;
import com.intellij.psi.util.PsiTreeUtil;
import com.intellij.psi.util.PsiUtil;
import com.intellij.util.IncorrectOperationException;
@@ -42,7 +44,7 @@ public class CreateFieldFromUsageFix extends CreateVarFromUsageFix {
@Override
protected String getText(String varName) {
return QuickFixBundle.message("create.field.from.usage.text", varName);
return CommonQuickFixBundle.message("fix.create.title.x", JavaElementKind.FIELD.accusative(), varName);
}
protected boolean createConstantField() {
@@ -27,6 +27,7 @@ import com.intellij.codeInsight.lookup.LookupElementBuilder;
import com.intellij.codeInsight.lookup.LookupFocusDegree;
import com.intellij.codeInsight.template.ExpressionUtil;
import com.intellij.codeInsight.template.*;
import com.intellij.codeInspection.CommonQuickFixBundle;
import com.intellij.ide.fileTemplates.FileTemplate;
import com.intellij.ide.fileTemplates.FileTemplateManager;
import com.intellij.ide.fileTemplates.FileTemplateUtil;
@@ -363,7 +364,7 @@ public class CreateFromUsageUtils {
final PsiDirectory targetDirectory;
if (!ApplicationManager.getApplication().isUnitTestMode()) {
Project project = manager.getProject();
String title = QuickFixBundle.message("create.class.title", StringUtil.capitalize(classKind.getDescriptionAccusative()));
String title = CommonQuickFixBundle.message("fix.create.title", StringUtil.capitalize(classKind.getDescriptionAccusative()));
CreateClassDialog dialog = new CreateClassDialog(project, title, name, qualifierName, classKind, false, module){
@Override
@@ -21,6 +21,7 @@ import com.intellij.codeInsight.intention.impl.TypeExpression;
import com.intellij.codeInsight.template.Template;
import com.intellij.codeInsight.template.TemplateBuilderImpl;
import com.intellij.codeInsight.template.TemplateEditingAdapter;
import com.intellij.codeInspection.CommonQuickFixBundle;
import com.intellij.openapi.application.ApplicationManager;
import com.intellij.openapi.diagnostic.Logger;
import com.intellij.openapi.editor.Editor;
@@ -30,6 +31,7 @@ import com.intellij.openapi.util.TextRange;
import com.intellij.psi.*;
import com.intellij.psi.codeStyle.CodeStyleManager;
import com.intellij.psi.codeStyle.JavaCodeStyleSettings;
import com.intellij.psi.util.JavaElementKind;
import com.intellij.psi.util.PsiTreeUtil;
import com.intellij.psi.util.PsiUtil;
import com.intellij.refactoring.introduceParameter.AbstractJavaInplaceIntroducer;
@@ -50,7 +52,12 @@ public class CreateLocalFromUsageFix extends CreateVarFromUsageFix {
@Override
public String getText(String varName) {
return QuickFixBundle.message("create.local.from.usage.text", varName);
return getMessage(varName);
}
public @NotNull
static String getMessage(String varName) {
return CommonQuickFixBundle.message("fix.create.title.x.from.usage", JavaElementKind.LOCAL_VARIABLE.accusative(), varName);
}
@Override
@@ -16,6 +16,7 @@
package com.intellij.codeInsight.daemon.impl.quickfix;
import com.intellij.codeInsight.daemon.QuickFixBundle;
import com.intellij.codeInspection.CommonQuickFixBundle;
import com.intellij.ide.util.SuperMethodWarningUtil;
import com.intellij.openapi.application.ApplicationManager;
import com.intellij.openapi.command.WriteCommandAction;
@@ -25,6 +26,7 @@ import com.intellij.openapi.fileEditor.ex.IdeDocumentHistory;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.util.Comparing;
import com.intellij.psi.*;
import com.intellij.psi.util.JavaElementKind;
import com.intellij.psi.util.PsiTreeUtil;
import com.intellij.psi.util.PsiUtil;
import com.intellij.refactoring.RefactoringBundle;
@@ -66,7 +68,7 @@ public class CreateParameterFromUsageFix extends CreateVarFromUsageFix {
@Override
public String getText(String varName) {
return QuickFixBundle.message("create.parameter.from.usage.text", varName);
return CommonQuickFixBundle.message("fix.create.title.x", JavaElementKind.PARAMETER.accusative(), varName);
}
@Nullable
@@ -6,6 +6,7 @@ package com.intellij.codeInsight.daemon.impl.quickfix;
import com.intellij.codeInsight.FileModificationService;
import com.intellij.codeInsight.daemon.QuickFixBundle;
import com.intellij.codeInsight.intention.impl.BaseIntentionAction;
import com.intellij.codeInspection.CommonQuickFixBundle;
import com.intellij.codeInspection.LocalQuickFixAndIntentionActionOnPsiElement;
import com.intellij.openapi.editor.Editor;
import com.intellij.openapi.project.Project;
@@ -13,6 +14,7 @@ import com.intellij.psi.PsiElement;
import com.intellij.psi.PsiFile;
import com.intellij.psi.PsiMethod;
import com.intellij.psi.PsiParameter;
import com.intellij.psi.util.JavaElementKind;
import com.intellij.refactoring.changeSignature.ChangeSignatureProcessor;
import com.intellij.refactoring.changeSignature.ParameterInfoImpl;
import org.jetbrains.annotations.NotNull;
@@ -29,7 +31,7 @@ public class RemoveUnusedParameterFix extends LocalQuickFixAndIntentionActionOnP
@NotNull
@Override
public String getText() {
return QuickFixBundle.message("remove.unused.parameter.text", myName);
return CommonQuickFixBundle.message("fix.remove.title.x", JavaElementKind.PARAMETER.accusative(), myName);
}
@Override
@@ -20,6 +20,7 @@ import com.intellij.codeInsight.daemon.QuickFixBundle;
import com.intellij.codeInsight.highlighting.HighlightManager;
import com.intellij.codeInsight.intention.IntentionAction;
import com.intellij.codeInsight.intention.impl.BaseIntentionAction;
import com.intellij.codeInspection.CommonQuickFixBundle;
import com.intellij.openapi.application.ApplicationManager;
import com.intellij.openapi.diagnostic.Logger;
import com.intellij.openapi.editor.Editor;
@@ -28,6 +29,7 @@ import com.intellij.openapi.editor.colors.EditorColorsManager;
import com.intellij.openapi.editor.markup.TextAttributes;
import com.intellij.openapi.project.Project;
import com.intellij.psi.*;
import com.intellij.psi.util.JavaElementKind;
import com.intellij.psi.util.PsiExpressionTrimRenderer;
import com.intellij.psi.util.PsiUtil;
import com.intellij.psi.util.PsiUtilCore;
@@ -49,8 +51,7 @@ public class RemoveUnusedVariableFix implements IntentionAction {
@Override
@NotNull
public String getText() {
return QuickFixBundle.message(myVariable instanceof PsiField ? "remove.unused.field" : "remove.unused.variable",
myVariable.getName());
return CommonQuickFixBundle.message("fix.remove.title.x", JavaElementKind.fromElement(myVariable).accusative(), myVariable.getName());
}
@Override
@@ -15,9 +15,9 @@
*/
package com.intellij.codeInsight.daemon.quickFix;
import com.intellij.codeInsight.daemon.QuickFixBundle;
import com.intellij.codeInsight.daemon.impl.quickfix.CreateClassKind;
import com.intellij.codeInsight.daemon.impl.quickfix.CreateFromUsageUtils;
import com.intellij.codeInspection.CommonQuickFixBundle;
import com.intellij.codeInspection.LocalQuickFixAndIntentionActionOnPsiElement;
import com.intellij.ide.util.DirectoryChooserUtil;
import com.intellij.openapi.application.ApplicationManager;
@@ -34,11 +34,15 @@ import com.intellij.psi.*;
import com.intellij.psi.search.GlobalSearchScope;
import com.intellij.psi.util.ClassKind;
import com.intellij.psi.util.CreateClassUtil;
import com.intellij.psi.util.JavaElementKind;
import com.intellij.util.IncorrectOperationException;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import java.util.*;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.StringTokenizer;
/**
* @author peter
@@ -106,9 +110,9 @@ public class CreateClassOrPackageFix extends LocalQuickFixAndIntentionActionOnPs
@Override
@NotNull
public String getText() {
return QuickFixBundle.message(
myClassKind == ClassKind.INTERFACE ? "create.interface.text" : myClassKind != null ? "create.class.text" : "create.package.text",
myPresentation);
return CommonQuickFixBundle.message("fix.create.title.x",
(myClassKind == null ? JavaElementKind.PACKAGE : myClassKind.getElementKind()).accusative(),
myPresentation);
}
@Override
@@ -3,11 +3,11 @@ package com.intellij.lang.java.actions
import com.intellij.codeInsight.CodeInsightUtilCore.forcePsiPostprocessAndRestoreElement
import com.intellij.codeInsight.ExpectedTypeUtil
import com.intellij.codeInsight.daemon.QuickFixBundle
import com.intellij.codeInsight.daemon.impl.quickfix.CreateFromUsageBaseFix.positionCursor
import com.intellij.codeInsight.daemon.impl.quickfix.CreateFromUsageBaseFix.startTemplate
import com.intellij.codeInsight.daemon.impl.quickfix.EmptyExpression
import com.intellij.codeInsight.template.TemplateBuilderImpl
import com.intellij.codeInspection.CommonQuickFixBundle
import com.intellij.lang.jvm.actions.CreateEnumConstantActionGroup
import com.intellij.lang.jvm.actions.CreateFieldRequest
import com.intellij.lang.jvm.actions.ExpectedTypes
@@ -18,6 +18,7 @@ import com.intellij.psi.JavaPsiFacade
import com.intellij.psi.PsiClass
import com.intellij.psi.PsiEnumConstant
import com.intellij.psi.PsiFile
import com.intellij.psi.util.JavaElementKind
import com.intellij.psi.util.PsiTreeUtil
internal class CreateEnumConstantAction(
@@ -27,7 +28,7 @@ internal class CreateEnumConstantAction(
override fun getActionGroup(): JvmActionGroup = CreateEnumConstantActionGroup
override fun getText(): String = QuickFixBundle.message("create.enum.constant.from.usage.text", request.fieldName)
override fun getText(): String = CommonQuickFixBundle.message("fix.create.title.x", JavaElementKind.ENUM_CONSTANT.accusative(), request.fieldName)
override fun invoke(project: Project, editor: Editor?, file: PsiFile?) {
val name = request.fieldName
@@ -19,5 +19,15 @@ package com.intellij.psi.util;
* @author peter
*/
public enum ClassKind {
CLASS, INTERFACE, ENUM, ANNOTATION
CLASS(JavaElementKind.CLASS), INTERFACE(JavaElementKind.INTERFACE), ENUM(JavaElementKind.ENUM), ANNOTATION(JavaElementKind.ANNOTATION);
private final JavaElementKind myElementKind;
ClassKind(JavaElementKind kind) {
myElementKind = kind;
}
public JavaElementKind getElementKind() {
return myElementKind;
}
}
@@ -13,6 +13,7 @@ import java.util.Locale;
* The main purpose of this enum is to be able to display localized element name in UI
*/
public enum JavaElementKind {
ABSTRACT_METHOD,
ANNOTATION,
CLASS,
CONSTANT,
@@ -33,13 +34,19 @@ public enum JavaElementKind {
UNKNOWN,
VARIABLE;
/**
* @return human-readable name of the item in nominative case
*/
@Nls
public String getNominativeName() {
public @NotNull String nominative() {
return JavaCoreBundle.message("element." + name().toLowerCase(Locale.ROOT), 0);
}
/**
* @return human-readable name of the item in accusative case
*/
@Nls
public String getAccusativeName() {
public @NotNull String accusative() {
return JavaCoreBundle.message("element." + name().toLowerCase(Locale.ROOT), 1);
}
@@ -64,6 +71,9 @@ public enum JavaElementKind {
if (((PsiMethod)element).isConstructor()) {
return CONSTRUCTOR;
}
if (((PsiMethod)element).hasModifierProperty(PsiModifier.ABSTRACT)) {
return ABSTRACT_METHOD;
}
return METHOD;
}
if (element instanceof PsiField) {
@@ -17,18 +17,20 @@ jdk.14.language.level.description=14 - Switch expressions
jdk.14.preview.language.level.description=14 (Preview) - Records, patterns, text blocks
jdk.X.language.level.description=X - Experimental features
# These constants are used from JavaElementKind
element.class=class
element.interface=interface
element.record=record
element.initializer=initializer
element.field=field
element.constant=constant field
element.enum.constant=enum constant
element.record.component=record component
element.enum_constant=enum constant
element.record_component=record component
element.parameter=parameter
element.pattern.variable=pattern variable
element.local.variable=local variable
element.pattern_variable=pattern variable
element.local_variable=local variable
element.variable=variable
element.abstract_method=abstract method
element.method=method
element.constructor=constructor
element.package=package
@@ -2,7 +2,10 @@
package com.intellij.java.codeInsight.daemon.quickFix
import com.intellij.codeInsight.daemon.QuickFixBundle.message
import com.intellij.codeInsight.daemon.impl.quickfix.CreateLocalFromUsageFix
import com.intellij.codeInspection.CommonQuickFixBundle
import com.intellij.psi.codeStyle.JavaCodeStyleSettings
import com.intellij.psi.util.JavaElementKind
import com.intellij.testFramework.fixtures.LightJavaCodeInsightFixtureTestCase
class CreateFromUsageOrderTest : LightJavaCodeInsightFixtureTestCase() {
@@ -10,7 +13,7 @@ class CreateFromUsageOrderTest : LightJavaCodeInsightFixtureTestCase() {
fun `test local variable first with default settings`() {
myFixture.configureByText("_.java", "class A { void usage() { foo(<caret>lllbar); } }")
val action = myFixture.availableIntentions.first()
assertEquals(message("create.local.from.usage.text", "lllbar"), action.text)
assertEquals(CreateLocalFromUsageFix.getMessage("lllbar"), action.text)
}
fun `test constant first when uppercase`() {
@@ -24,7 +27,7 @@ class CreateFromUsageOrderTest : LightJavaCodeInsightFixtureTestCase() {
settings.LOCAL_VARIABLE_NAME_PREFIX = "lll"
myFixture.configureByText("_.java", "class A { void usage() { foo(<caret>lllbar); } }")
val action = myFixture.availableIntentions.first()
assertEquals(message("create.local.from.usage.text", "lllbar"), action.text)
assertEquals(CreateLocalFromUsageFix.getMessage("lllbar"), action.text)
}
}
@@ -33,7 +36,7 @@ class CreateFromUsageOrderTest : LightJavaCodeInsightFixtureTestCase() {
settings.PARAMETER_NAME_PREFIX = "ppp"
myFixture.configureByText("_.java", "class A { void usage() { foo(<caret>pppbar); } }")
val action = myFixture.availableIntentions.first()
assertEquals(message("create.parameter.from.usage.text", "pppbar"), action.text)
assertEquals(CommonQuickFixBundle.message("fix.create.title.x", JavaElementKind.PARAMETER.accusative(), "pppbar"), action.text)
}
}
@@ -8,6 +8,7 @@ fix.unwrap=Unwrap ''{0}''
fix.unwrap.statement=Unwrap ''{0}'' statement
fix.remove=Remove ''{0}''
fix.remove.title.x=Remove {0} ''{1}''
fix.remove.redundant=Remove redundant ''{0}''
fix.remove.statement=Remove ''{0}'' statement
@@ -18,4 +19,8 @@ fix.use=Use ''{0}''
fix.call=Call ''{0}''
fix.simplify=Simplify
fix.simplify=Simplify
fix.create.title=Create {0}
fix.create.title.x=Create {0} ''{1}''
fix.create.title.x.from.usage=Create {0} ''{1}'' from usage
@@ -1405,9 +1405,9 @@ loop.variable.not.updated.inside.loop.option.nonlocal=Ignore possible non-local
utility.class.without.private.constructor.option=Ignore classes with only a main method
super.class.logger.option=Ignore classes with an accessible logger declared in a superclass
static.method.only.used.in.one.class.display.name=Static member only used from one other class
static.method.only.used.in.one.class.problem.descriptor=Static {0, choice, 1#method|2#field} <code>#ref{0, choice, 1#()|2#}</code> is only used from class ''{1}'' #loc
static.method.only.used.in.one.anonymous.class.problem.descriptor=Static {0, choice, 1#method|2#field} <code>#ref{0, choice, 1#()|2#}</code> is only used from an anonymous class derived from ''{1}'' #loc
static.method.only.used.in.one.class.quickfix=Move {0, choice, 1#method|2#field} to usage class
static.method.only.used.in.one.class.problem.descriptor=Static {0} <code>#ref</code> is only used from class ''{1}'' #loc
static.method.only.used.in.one.anonymous.class.problem.descriptor=Static {0} <code>#ref</code> is only used from an anonymous class derived from ''{1}'' #loc
static.method.only.used.in.one.class.quickfix=Move {0} to usage class
static.method.only.used.in.one.class.ignore.test.option=Ignore when only used from a test class
static.method.only.used.in.one.class.ignore.anonymous.option=Ignore when only used from an anonymous class
static.method.only.used.in.one.class.ignore.on.conflicts=Ignore when the method cannot be moved without conflicts
@@ -14,6 +14,7 @@ import com.intellij.openapi.util.Ref;
import com.intellij.psi.*;
import com.intellij.psi.search.searches.MethodReferencesSearch;
import com.intellij.psi.search.searches.ReferencesSearch;
import com.intellij.psi.util.JavaElementKind;
import com.intellij.psi.util.PsiTreeUtil;
import com.intellij.psi.util.PsiUtil;
import com.intellij.refactoring.RefactoringActionHandler;
@@ -328,32 +329,32 @@ public class StaticMethodOnlyUsedInOneClassInspection extends BaseGlobalInspecti
@Override
@NotNull
protected String buildErrorString(Object... infos) {
final PsiMember member = (PsiMember)infos[0];
final JavaElementKind kind = (JavaElementKind)infos[0];
final PsiClass usageClass = (PsiClass)infos[1];
return (usageClass instanceof PsiAnonymousClass)
? InspectionGadgetsBundle.message("static.method.only.used.in.one.anonymous.class.problem.descriptor",
(member instanceof PsiMethod) ? 1 : 2,
kind.nominative(),
((PsiAnonymousClass)usageClass).getBaseClassReference().getText())
: InspectionGadgetsBundle.message("static.method.only.used.in.one.class.problem.descriptor",
(member instanceof PsiMethod) ? 1 : 2,
kind.nominative(),
usageClass.getName());
}
@Override
@Nullable
protected InspectionGadgetsFix buildFix(Object... infos) {
final PsiMember member = (PsiMember)infos[0];
final JavaElementKind kind = (JavaElementKind)infos[0];
final PsiClass usageClass = (PsiClass)infos[1];
return new StaticMethodOnlyUsedInOneClassFix(usageClass, member instanceof PsiMethod);
return new StaticMethodOnlyUsedInOneClassFix(usageClass, kind);
}
private static class StaticMethodOnlyUsedInOneClassFix extends RefactoringInspectionGadgetsFix {
private final SmartPsiElementPointer<PsiClass> myUsageClass;
private final boolean myMethod;
private final JavaElementKind myKind;
StaticMethodOnlyUsedInOneClassFix(PsiClass usageClass, boolean method) {
myMethod = method;
StaticMethodOnlyUsedInOneClassFix(PsiClass usageClass, JavaElementKind kind) {
myKind = kind;
final SmartPointerManager pointerManager = SmartPointerManager.getInstance(usageClass.getProject());
myUsageClass = pointerManager.createSmartPsiElementPointer(usageClass);
}
@@ -361,7 +362,7 @@ public class StaticMethodOnlyUsedInOneClassInspection extends BaseGlobalInspecti
@Override
@NotNull
public String getFamilyName() {
return InspectionGadgetsBundle.message("static.method.only.used.in.one.class.quickfix", myMethod ? 1 : 2);
return InspectionGadgetsBundle.message("static.method.only.used.in.one.class.quickfix", myKind.accusative());
}
@NotNull
@@ -392,7 +393,7 @@ public class StaticMethodOnlyUsedInOneClassInspection extends BaseGlobalInspecti
if (DeclarationSearchUtils.isTooExpensiveToSearch(field, true)) return;
final PsiClass usageClass = getUsageClass(field);
if (usageClass == null) return;
registerFieldError(field, field, usageClass);
registerFieldError(field, JavaElementKind.FIELD, usageClass);
}
@Override
@@ -409,7 +410,7 @@ public class StaticMethodOnlyUsedInOneClassInspection extends BaseGlobalInspecti
if (DeclarationSearchUtils.isTooExpensiveToSearch(method, true)) return;
final PsiClass usageClass = getUsageClass(method);
if (usageClass == null) return;
registerMethodError(method, method, usageClass);
registerMethodError(method, JavaElementKind.METHOD, usageClass);
}
private PsiClass getUsageClass(PsiMember member) {
@@ -3,10 +3,12 @@ package org.jetbrains.idea.devkit.codeInsight;
import com.intellij.codeInsight.daemon.QuickFixBundle;
import com.intellij.codeInsight.intention.IntentionAction;
import com.intellij.codeInspection.CommonQuickFixBundle;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.util.Comparing;
import com.intellij.psi.JavaPsiFacade;
import com.intellij.psi.search.GlobalSearchScope;
import com.intellij.psi.util.JavaElementKind;
import com.intellij.testFramework.EdtTestUtil;
import com.intellij.testFramework.UsefulTestCase;
import com.intellij.testFramework.builders.JavaModuleFixtureBuilder;
@@ -81,7 +83,8 @@ public class CreateClassFixTest extends UsefulTestCase {
public void runSingle() {
EdtTestUtil.runInEdtAndWait(() -> {
IntentionAction resultAction = null;
final String createAction = QuickFixBundle.message(myCreateClass ? "create.class.text" : "create.interface.text", myTestName);
final String createAction = CommonQuickFixBundle.message(
"fix.create.title.x", (myCreateClass ? JavaElementKind.CLASS : JavaElementKind.INTERFACE).accusative(), myTestName);
final List<IntentionAction> actions = myFixture.getAvailableIntentions(getSourceRoot() + "/plugin" + myTestName + ".xml");
for (IntentionAction action : actions) {
if (Comparing.strEqual(action.getText(), createAction)) {
@@ -2,11 +2,11 @@
package org.jetbrains.plugins.groovy.annotator.intentions.elements
import com.intellij.codeInsight.CodeInsightUtilCore.forcePsiPostprocessAndRestoreElement
import com.intellij.codeInsight.daemon.QuickFixBundle
import com.intellij.codeInsight.daemon.impl.quickfix.CreateFromUsageBaseFix.positionCursor
import com.intellij.codeInsight.daemon.impl.quickfix.CreateFromUsageBaseFix.startTemplate
import com.intellij.codeInsight.daemon.impl.quickfix.EmptyExpression
import com.intellij.codeInsight.template.TemplateBuilderImpl
import com.intellij.codeInspection.CommonQuickFixBundle
import com.intellij.lang.jvm.actions.CreateEnumConstantActionGroup
import com.intellij.lang.jvm.actions.CreateFieldRequest
import com.intellij.lang.jvm.actions.ExpectedTypes
@@ -14,6 +14,7 @@ import com.intellij.lang.jvm.actions.JvmActionGroup
import com.intellij.openapi.editor.Editor
import com.intellij.openapi.project.Project
import com.intellij.psi.PsiFile
import com.intellij.psi.util.JavaElementKind
import com.intellij.psi.util.PsiTreeUtil
import org.jetbrains.plugins.groovy.lang.psi.GroovyPsiElementFactory
import org.jetbrains.plugins.groovy.lang.psi.api.statements.typedef.GrTypeDefinition
@@ -26,7 +27,7 @@ internal class CreateEnumConstantAction(
override fun getActionGroup(): JvmActionGroup = CreateEnumConstantActionGroup
override fun getText(): String = QuickFixBundle.message("create.enum.constant.from.usage.text", request.fieldName)
override fun getText(): String = CommonQuickFixBundle.message("fix.create.title.x", JavaElementKind.ENUM_CONSTANT.accusative(), request.fieldName)
override fun invoke(project: Project, editor: Editor?, file: PsiFile?) {
val name = request.fieldName
@@ -13,6 +13,7 @@ import com.intellij.lang.LanguageNamesValidation;
import com.intellij.openapi.project.Project;
import com.intellij.psi.*;
import com.intellij.psi.codeStyle.JavaCodeStyleSettings;
import com.intellij.psi.util.JavaElementKind;
import com.intellij.psi.util.PsiTreeUtil;
import com.intellij.psi.xml.XmlAttribute;
import com.intellij.psi.xml.XmlAttributeValue;
@@ -100,7 +101,7 @@ public class JavaFxUnresolvedFxIdReferenceInspection extends XmlSuppressableInsp
@NotNull
@Override
public String getName() {
return QuickFixBundle.message("create.field.from.usage.text", myCanonicalName);
return CommonQuickFixBundle.message("fix.create.title.x", JavaElementKind.FIELD.accusative(), myCanonicalName);
}
@NotNull