Skip to content

Commit 4a27bdc

Browse files
committed
Updating localization in JavaElementKind. Using separate keys for nominative and accusative names.
1 parent fe239a6 commit 4a27bdc

3 files changed

Lines changed: 167 additions & 95 deletions

File tree

java-analysis-impl/src/main/java/com/intellij/java/analysis/impl/codeInsight/intention/AddAnnotationFix.java

Lines changed: 29 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -13,47 +13,52 @@
1313
* See the License for the specific language governing permissions and
1414
* limitations under the License.
1515
*/
16-
1716
package com.intellij.java.analysis.impl.codeInsight.intention;
1817

1918
import com.intellij.java.language.psi.PsiModifierListOwner;
2019
import com.intellij.java.language.psi.PsiNameValuePair;
20+
import consulo.annotation.access.RequiredReadAction;
2121
import consulo.codeEditor.Editor;
2222
import consulo.language.editor.intention.SyntheticIntentionAction;
2323
import consulo.language.psi.PsiFile;
2424
import consulo.language.util.IncorrectOperationException;
2525
import consulo.project.Project;
2626

27+
import consulo.ui.annotation.RequiredUIAccess;
2728
import jakarta.annotation.Nonnull;
2829

2930
/**
3031
* @author ven
3132
*/
32-
public class AddAnnotationFix extends AddAnnotationPsiFix implements SyntheticIntentionAction
33-
{
34-
public AddAnnotationFix(@Nonnull String fqn, @Nonnull PsiModifierListOwner modifierListOwner, @Nonnull String... annotationsToRemove) {
35-
this(fqn, modifierListOwner, PsiNameValuePair.EMPTY_ARRAY, annotationsToRemove);
36-
}
33+
public class AddAnnotationFix extends AddAnnotationPsiFix implements SyntheticIntentionAction {
34+
@RequiredReadAction
35+
public AddAnnotationFix(@Nonnull String fqn, @Nonnull PsiModifierListOwner modifierListOwner, @Nonnull String... annotationsToRemove) {
36+
this(fqn, modifierListOwner, PsiNameValuePair.EMPTY_ARRAY, annotationsToRemove);
37+
}
3738

38-
public AddAnnotationFix(@Nonnull String fqn,
39-
@Nonnull PsiModifierListOwner modifierListOwner,
40-
@Nonnull PsiNameValuePair[] values,
41-
@Nonnull String... annotationsToRemove) {
42-
super(fqn, modifierListOwner, values, annotationsToRemove);
43-
}
39+
@RequiredReadAction
40+
public AddAnnotationFix(
41+
@Nonnull String fqn,
42+
@Nonnull PsiModifierListOwner modifierListOwner,
43+
@Nonnull PsiNameValuePair[] values,
44+
@Nonnull String... annotationsToRemove
45+
) {
46+
super(fqn, modifierListOwner, values, annotationsToRemove);
47+
}
4448

45-
@Override
46-
public boolean isAvailable(@Nonnull Project project, Editor editor, PsiFile file) {
47-
return isAvailable();
48-
}
49+
@Override
50+
@RequiredUIAccess
51+
public boolean isAvailable(@Nonnull Project project, Editor editor, PsiFile file) {
52+
return isAvailable();
53+
}
4954

50-
@Override
51-
public void invoke(@Nonnull Project project, Editor editor, PsiFile file) throws IncorrectOperationException {
52-
applyFix();
53-
}
55+
@Override
56+
public void invoke(@Nonnull Project project, Editor editor, PsiFile file) throws IncorrectOperationException {
57+
applyFix();
58+
}
5459

55-
@Override
56-
public boolean startInWriteAction() {
57-
return true;
58-
}
60+
@Override
61+
public boolean startInWriteAction() {
62+
return true;
63+
}
5964
}

java-language-api/src/main/java/com/intellij/java/language/psi/util/JavaElementKind.java

Lines changed: 42 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -13,59 +13,62 @@
1313
* The main purpose of this enum is to be able to display localized element name in UI
1414
*/
1515
public enum JavaElementKind {
16-
ABSTRACT_METHOD(JavaLanguageLocalize.elementAbstract_method()),
17-
ANNOTATION(JavaLanguageLocalize.elementAnnotation()),
18-
ANONYMOUS_CLASS(JavaLanguageLocalize.elementAnonymous_class()),
19-
CLASS(JavaLanguageLocalize.elementClass()),
20-
TYPE_PARAMETER(JavaLanguageLocalize.elementTypeParameter()),
21-
CONSTANT(JavaLanguageLocalize.elementConstant()),
22-
CONSTRUCTOR(JavaLanguageLocalize.elementConstructor()),
23-
ENUM(JavaLanguageLocalize.elementEnum()),
24-
ENUM_CONSTANT(JavaLanguageLocalize.elementEnum_constant()),
25-
EXPRESSION(JavaLanguageLocalize.elementExpression()),
26-
FIELD(JavaLanguageLocalize.elementField()),
27-
INITIALIZER(JavaLanguageLocalize.elementInitializer()),
28-
INTERFACE(JavaLanguageLocalize.elementInterface()),
29-
LABEL(JavaLanguageLocalize.elementLabel()),
30-
LOCAL_VARIABLE(JavaLanguageLocalize.elementLocal_variable()),
31-
METHOD(JavaLanguageLocalize.elementMethod()),
32-
MODULE(JavaLanguageLocalize.elementModule()),
33-
PACKAGE(JavaLanguageLocalize.elementPackage()),
34-
PARAMETER(JavaLanguageLocalize.elementParameter()),
35-
PATTERN_VARIABLE(JavaLanguageLocalize.elementPattern_variable()),
36-
RECORD(JavaLanguageLocalize.elementRecord()),
37-
RECORD_COMPONENT(JavaLanguageLocalize.elementRecord_component()),
38-
SNIPPET_BODY(JavaLanguageLocalize.elementSnippet_body()),
39-
STATEMENT(JavaLanguageLocalize.elementStatement()),
40-
UNKNOWN(JavaLanguageLocalize.elementUnknown()),
41-
VARIABLE(JavaLanguageLocalize.elementVariable()),
42-
THROWS_LIST(JavaLanguageLocalize.elementThrowsList()),
43-
EXTENDS_LIST(JavaLanguageLocalize.elementExtendsList()),
44-
RECEIVER_PARAMETER(JavaLanguageLocalize.elementReceiverParameter()),
45-
METHOD_CALL(JavaLanguageLocalize.elementMethodCall()),
46-
TYPE_ARGUMENTS(JavaLanguageLocalize.elementTypeArguments()),
47-
SEMICOLON(JavaLanguageLocalize.elementTypeSemicolon());
16+
ABSTRACT_METHOD(JavaLanguageLocalize.elementAbstractMethodNominative(), JavaLanguageLocalize.elementAbstractMethodAccusative()),
17+
ANNOTATION(JavaLanguageLocalize.elementAnnotationNominative(), JavaLanguageLocalize.elementAnnotationAccusative()),
18+
ANONYMOUS_CLASS(JavaLanguageLocalize.elementAnonymousClassNominative(), JavaLanguageLocalize.elementAnonymousClassAccusative()),
19+
CLASS(JavaLanguageLocalize.elementClassNominative(), JavaLanguageLocalize.elementClassAccusative()),
20+
TYPE_PARAMETER(JavaLanguageLocalize.elementTypeParameterNominative(), JavaLanguageLocalize.elementTypeParameterAccusative()),
21+
CONSTANT(JavaLanguageLocalize.elementConstantNominative(), JavaLanguageLocalize.elementConstantAccusative()),
22+
CONSTRUCTOR(JavaLanguageLocalize.elementConstructorNominative(), JavaLanguageLocalize.elementConstructorAccusative()),
23+
ENUM(JavaLanguageLocalize.elementEnumNominative(), JavaLanguageLocalize.elementEnumAccusative()),
24+
ENUM_CONSTANT(JavaLanguageLocalize.elementEnumConstantNominative(), JavaLanguageLocalize.elementEnumConstantAccusative()),
25+
EXPRESSION(JavaLanguageLocalize.elementExpressionNominative(), JavaLanguageLocalize.elementExpressionAccusative()),
26+
FIELD(JavaLanguageLocalize.elementFieldNominative(), JavaLanguageLocalize.elementFieldAccusative()),
27+
INITIALIZER(JavaLanguageLocalize.elementInitializerNominative(), JavaLanguageLocalize.elementInitializerAccusative()),
28+
INTERFACE(JavaLanguageLocalize.elementInterfaceNominative(), JavaLanguageLocalize.elementInterfaceAccusative()),
29+
LABEL(JavaLanguageLocalize.elementLabelNominative(), JavaLanguageLocalize.elementLabelAccusative()),
30+
LOCAL_VARIABLE(JavaLanguageLocalize.elementLocalVariableNominative(), JavaLanguageLocalize.elementLocalVariableAccusative()),
31+
METHOD(JavaLanguageLocalize.elementMethodNominative(), JavaLanguageLocalize.elementMethodAccusative()),
32+
MODULE(JavaLanguageLocalize.elementModuleNominative(), JavaLanguageLocalize.elementModuleAccusative()),
33+
PACKAGE(JavaLanguageLocalize.elementPackageNominative(), JavaLanguageLocalize.elementPackageAccusative()),
34+
PARAMETER(JavaLanguageLocalize.elementParameterNominative(), JavaLanguageLocalize.elementParameterAccusative()),
35+
PATTERN_VARIABLE(JavaLanguageLocalize.elementPatternVariableNominative(), JavaLanguageLocalize.elementPatternVariableAccusative()),
36+
RECORD(JavaLanguageLocalize.elementRecordNominative(), JavaLanguageLocalize.elementRecordAccusative()),
37+
RECORD_COMPONENT(JavaLanguageLocalize.elementRecordComponentNominative(), JavaLanguageLocalize.elementRecordComponentAccusative()),
38+
SNIPPET_BODY(JavaLanguageLocalize.elementSnippetBodyNominative(), JavaLanguageLocalize.elementSnippetBodyAccusative()),
39+
STATEMENT(JavaLanguageLocalize.elementStatementNominative(), JavaLanguageLocalize.elementStatementAccusative()),
40+
UNKNOWN(JavaLanguageLocalize.elementUnknownNominative(), JavaLanguageLocalize.elementUnknownAccusative()),
41+
VARIABLE(JavaLanguageLocalize.elementVariableNominative(), JavaLanguageLocalize.elementVariableAccusative()),
42+
THROWS_LIST(JavaLanguageLocalize.elementThrowsListNominative(), JavaLanguageLocalize.elementThrowsListAccusative()),
43+
EXTENDS_LIST(JavaLanguageLocalize.elementExtendsListNominative(), JavaLanguageLocalize.elementExtendsListAccusative()),
44+
RECEIVER_PARAMETER(JavaLanguageLocalize.elementReceiverParameterNominative(), JavaLanguageLocalize.elementReceiverParameterAccusative()),
45+
METHOD_CALL(JavaLanguageLocalize.elementMethodCallNominative(), JavaLanguageLocalize.elementMethodCallAccusative()),
46+
TYPE_ARGUMENTS(JavaLanguageLocalize.elementTypeArgumentsNominative(), JavaLanguageLocalize.elementTypeArgumentsAccusative()),
47+
SEMICOLON(JavaLanguageLocalize.elementTypeSemicolonNominative(), JavaLanguageLocalize.elementTypeSemicolonAccusative());
4848

4949
@Nonnull
50-
private final LocalizeValue myName;
50+
private final LocalizeValue myNameNominative;
51+
@Nonnull
52+
private final LocalizeValue myNameAccusative;
5153

52-
JavaElementKind(@Nonnull LocalizeValue name) {
53-
myName = name;
54+
JavaElementKind(@Nonnull LocalizeValue nameNominative, @Nonnull LocalizeValue nameAccusative) {
55+
myNameNominative = nameNominative;
56+
myNameAccusative = nameAccusative;
5457
}
5558

5659
/**
5760
* @return human-readable name of the item having the subject role in the sentence (nominative case)
5861
*/
5962
public LocalizeValue subject() {
60-
return myName;
63+
return myNameNominative;
6164
}
6265

6366
/**
6467
* @return human-readable name of the item having the object role in the sentence (accusative case)
6568
*/
6669
@Nonnull
6770
public LocalizeValue object() {
68-
return myName;
71+
return myNameAccusative;
6972
}
7073

7174
/**
@@ -113,7 +116,7 @@ public static JavaElementKind fromElement(@Nonnull PsiElement element) {
113116
if (method.isConstructor()) {
114117
return CONSTRUCTOR;
115118
}
116-
if (method.hasModifierProperty(PsiModifier.ABSTRACT)) {
119+
if (method.isAbstract()) {
117120
return ABSTRACT_METHOD;
118121
}
119122
return METHOD;
@@ -122,7 +125,7 @@ public static JavaElementKind fromElement(@Nonnull PsiElement element) {
122125
if (field instanceof PsiEnumConstant) {
123126
return ENUM_CONSTANT;
124127
}
125-
if (field.hasModifierProperty(PsiModifier.STATIC) && field.hasModifierProperty(PsiModifier.FINAL)) {
128+
if (field.isStatic() && field.isFinal()) {
126129
return CONSTANT;
127130
}
128131
return FIELD;

java-language-api/src/main/resources/LOCALIZE-LIB/en_US/consulo.java.language.JavaLanguageLocalize.yaml

Lines changed: 96 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -66,71 +66,135 @@ diamond.error.cannot.infer.type.arguments:
6666
text: Cannot infer type arguments for {0}
6767
diamond.error.explicit.type.parameters.for.constructor:
6868
text: Cannot use diamonds with explicit type parameters for constructor
69-
element.abstract_method:
69+
element.abstract.method.accusative:
7070
text: abstract method
71-
element.annotation:
71+
element.abstract.method.nominative:
72+
text: abstract method
73+
element.annotation.accusative:
74+
text: annotation
75+
element.annotation.nominative:
7276
text: annotation
73-
element.anonymous_class:
77+
element.anonymous.class.accusative:
7478
text: anonymous class
75-
element.class:
79+
element.anonymous.class.nominative:
80+
text: anonymous class
81+
element.class.accusative:
82+
text: class
83+
element.class.nominative:
7684
text: class
77-
element.constant:
85+
element.constant.accusative:
7886
text: constant field
79-
element.constructor:
87+
element.constant.nominative:
88+
text: constant field
89+
element.constructor.accusative:
90+
text: constructor
91+
element.constructor.nominative:
8092
text: constructor
81-
element.enum:
93+
element.enum.accusative:
8294
text: enum
83-
element.enum_constant:
95+
element.enum.constant.accusative:
8496
text: enum constant
85-
element.expression:
97+
element.enum.constant.nominative:
98+
text: enum constant
99+
element.enum.nominative:
100+
text: enum
101+
element.expression.accusative:
86102
text: expression
87-
element.extends.list:
103+
element.expression.nominative:
104+
text: expression
105+
element.extends.list.accusative:
106+
text: extends list
107+
element.extends.list.nominative:
88108
text: extends list
89-
element.field:
109+
element.field.accusative:
90110
text: field
91-
element.initializer:
111+
element.field.nominative:
112+
text: field
113+
element.initializer.accusative:
114+
text: initializer
115+
element.initializer.nominative:
92116
text: initializer
93-
element.interface:
117+
element.interface.accusative:
118+
text: interface
119+
element.interface.nominative:
94120
text: interface
95121
element.kind.and.name:
96122
text: '{0} {1}'
97-
element.label:
123+
element.label.accusative:
124+
text: label
125+
element.label.nominative:
98126
text: label
99-
element.local_variable:
127+
element.local.variable.accusative:
100128
text: local variable
101-
element.method:
129+
element.local.variable.nominative:
130+
text: local variable
131+
element.method.accusative:
132+
text: method
133+
element.method.nominative:
102134
text: method
103-
element.method.call:
135+
element.method.call.accusative:
104136
text: method call
105-
element.module:
137+
element.method.call.nominative:
138+
text: method call
139+
element.module.accusative:
140+
text: module
141+
element.module.nominative:
106142
text: module
107-
element.package:
143+
element.package.accusative:
108144
text: package
109-
element.parameter:
145+
element.package.nominative:
146+
text: package
147+
element.parameter.accusative:
148+
text: parameter
149+
element.parameter.nominative:
110150
text: parameter
111-
element.pattern_variable:
151+
element.pattern.variable.accusative:
112152
text: pattern variable
113-
element.receiver.parameter:
153+
element.pattern.variable.nominative:
154+
text: pattern variable
155+
element.receiver.parameter.accusative:
156+
text: receiver parameter
157+
element.receiver.parameter.nominative:
114158
text: receiver parameter
115-
element.record:
159+
element.record.accusative:
116160
text: record
117-
element.record_component:
161+
element.record.nominative:
162+
text: record
163+
element.record.component.accusative:
164+
text: record component
165+
element.record.component.nominative:
118166
text: record component
119-
element.snippet_body:
167+
element.snippet.body.accusative:
120168
text: snippet body
121-
element.statement:
169+
element.snippet.body.nominative:
170+
text: snippet body
171+
element.statement.accusative:
172+
text: statement
173+
element.statement.nominative:
122174
text: statement
123-
element.throws.list:
175+
element.throws.list.accusative:
124176
text: throws list
125-
element.type.arguments:
177+
element.throws.list.nominative:
178+
text: throws list
179+
element.type.arguments.accusative:
180+
text: type arguments
181+
element.type.arguments.nominative:
126182
text: type arguments
127-
element.type.parameter:
183+
element.type.parameter.accusative:
128184
text: type parameter
129-
element.type.semicolon:
185+
element.type.parameter.nominative:
186+
text: type parameter
187+
element.type.semicolon.accusative:
188+
text: semicolon
189+
element.type.semicolon.nominative:
130190
text: semicolon
131-
element.unknown:
191+
element.unknown.accusative:
132192
text: element
133-
element.variable:
193+
element.unknown.nominative:
194+
text: element
195+
element.variable.accusative:
196+
text: variable
197+
element.variable.nominative:
134198
text: variable
135199
else.without.if:
136200
text: '''else'' without ''if'''

0 commit comments

Comments
 (0)