Skip to content

Commit a79253d

Browse files
committed
Localizing ClassPresentationUtil.
1 parent d075d82 commit a79253d

17 files changed

Lines changed: 592 additions & 515 deletions

‎java-language-impl/src/main/java/com/intellij/java/language/impl/codeInsight/PsiClassListCellRenderer.java‎

Lines changed: 25 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -15,42 +15,42 @@
1515
*/
1616
package com.intellij.java.language.impl.codeInsight;
1717

18-
import consulo.language.editor.ui.PsiElementListCellRenderer;
1918
import com.intellij.java.language.impl.psi.presentation.java.ClassPresentationUtil;
2019
import com.intellij.java.language.psi.PsiClass;
2120
import com.intellij.java.language.psi.PsiClassOwner;
21+
import consulo.annotation.access.RequiredReadAction;
22+
import consulo.language.editor.ui.PsiElementListCellRenderer;
2223
import consulo.language.psi.PsiElement;
23-
import consulo.language.psi.PsiFile;
2424
import org.jspecify.annotations.Nullable;
2525

2626
public class PsiClassListCellRenderer extends PsiElementListCellRenderer<PsiClass> {
27-
public static final PsiClassListCellRenderer INSTANCE = new PsiClassListCellRenderer();
27+
public static final PsiClassListCellRenderer INSTANCE = new PsiClassListCellRenderer();
2828

29-
@Override
30-
public String getElementText(PsiClass element) {
31-
return ClassPresentationUtil.getNameForClass(element, false);
32-
}
29+
@Override
30+
@RequiredReadAction
31+
public String getElementText(PsiClass element) {
32+
return ClassPresentationUtil.getNameForClass(element, false).get();
33+
}
3334

34-
@Override
35-
protected String getContainerText(PsiClass element, final String name) {
36-
return getContainerTextStatic(element);
37-
}
35+
@Override
36+
protected String getContainerText(PsiClass element, String name) {
37+
return getContainerTextStatic(element);
38+
}
3839

39-
@Nullable
40-
public static String getContainerTextStatic(final PsiElement element) {
41-
PsiFile file = element.getContainingFile();
42-
if (file instanceof PsiClassOwner) {
43-
String packageName = ((PsiClassOwner) file).getPackageName();
44-
if (packageName.isEmpty()) {
40+
@Nullable
41+
public static String getContainerTextStatic(PsiElement element) {
42+
if (element.getContainingFile() instanceof PsiClassOwner classOwner) {
43+
String packageName = classOwner.getPackageName();
44+
if (packageName.isEmpty()) {
45+
return null;
46+
}
47+
return "(" + packageName + ")";
48+
}
4549
return null;
46-
}
47-
return "(" + packageName + ")";
4850
}
49-
return null;
50-
}
5151

52-
@Override
53-
public int getIconFlags() {
54-
return 0;
55-
}
52+
@Override
53+
public int getIconFlags() {
54+
return 0;
55+
}
5656
}

‎java-language-impl/src/main/java/com/intellij/java/language/impl/psi/presentation/java/ClassPresentationProvider.java‎

Lines changed: 39 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717

1818
import com.intellij.java.language.psi.PsiClass;
1919
import com.intellij.java.language.psi.PsiClassOwner;
20+
import consulo.annotation.access.RequiredReadAction;
2021
import consulo.annotation.component.ExtensionImpl;
2122
import consulo.codeEditor.CodeInsightColors;
2223
import consulo.colorScheme.TextAttributesKey;
@@ -33,43 +34,46 @@
3334
*/
3435
@ExtensionImpl
3536
public class ClassPresentationProvider implements ItemPresentationProvider<PsiClass> {
36-
@Override
37-
public Class<PsiClass> getItemClass() {
38-
return PsiClass.class;
39-
}
37+
@Override
38+
public Class<PsiClass> getItemClass() {
39+
return PsiClass.class;
40+
}
4041

41-
@Override
42-
public ItemPresentation getPresentation(final PsiClass psiClass) {
43-
return new ColoredItemPresentation() {
44-
@Override
45-
public String getPresentableText() {
46-
return ClassPresentationUtil.getNameForClass(psiClass, false);
47-
}
42+
@Override
43+
public ItemPresentation getPresentation(final PsiClass psiClass) {
44+
return new ColoredItemPresentation() {
45+
@Override
46+
@RequiredReadAction
47+
public String getPresentableText() {
48+
return ClassPresentationUtil.getNameForClass(psiClass, false).get();
49+
}
4850

49-
@Override
50-
public String getLocationString() {
51-
PsiFile file = psiClass.getContainingFile();
52-
if (file instanceof PsiClassOwner) {
53-
PsiClassOwner classOwner = (PsiClassOwner) file;
54-
String packageName = classOwner.getPackageName();
55-
if (packageName.length() == 0) return null;
56-
return "(" + packageName + ")";
57-
}
58-
return null;
59-
}
51+
@Override
52+
public String getLocationString() {
53+
PsiFile file = psiClass.getContainingFile();
54+
if (file instanceof PsiClassOwner classOwner) {
55+
String packageName = classOwner.getPackageName();
56+
if (packageName.length() == 0) {
57+
return null;
58+
}
59+
return "(" + packageName + ")";
60+
}
61+
return null;
62+
}
6063

61-
@Override
62-
public TextAttributesKey getTextAttributesKey() {
63-
if (psiClass.isDeprecated()) {
64-
return CodeInsightColors.DEPRECATED_ATTRIBUTES;
65-
}
66-
return null;
67-
}
64+
@Override
65+
public TextAttributesKey getTextAttributesKey() {
66+
if (psiClass.isDeprecated()) {
67+
return CodeInsightColors.DEPRECATED_ATTRIBUTES;
68+
}
69+
return null;
70+
}
6871

69-
@Override
70-
public Image getIcon() {
71-
return IconDescriptorUpdaters.getIcon(psiClass, Iconable.ICON_FLAG_VISIBILITY | Iconable.ICON_FLAG_READ_STATUS);
72-
}
73-
};
74-
}
72+
@Override
73+
@RequiredReadAction
74+
public Image getIcon() {
75+
return IconDescriptorUpdaters.getIcon(psiClass, Iconable.ICON_FLAG_VISIBILITY | Iconable.ICON_FLAG_READ_STATUS);
76+
}
77+
};
78+
}
7579
}

‎java-language-impl/src/main/java/com/intellij/java/language/impl/psi/presentation/java/ClassPresentationUtil.java‎

Lines changed: 75 additions & 58 deletions
Original file line numberDiff line numberDiff line change
@@ -16,75 +16,92 @@
1616
package com.intellij.java.language.impl.psi.presentation.java;
1717

1818
import com.intellij.java.language.psi.*;
19-
import consulo.language.psi.PsiBundle;
19+
import consulo.annotation.access.RequiredReadAction;
20+
import consulo.language.localize.LanguageLocalize;
2021
import consulo.language.psi.PsiElement;
2122
import consulo.language.psi.PsiFile;
2223
import consulo.language.psi.util.PsiTreeUtil;
24+
import consulo.localize.LocalizeValue;
25+
import consulo.util.lang.StringUtil;
2326

2427
public class ClassPresentationUtil {
25-
private ClassPresentationUtil() {
26-
}
27-
28-
public static String getNameForClass(PsiClass aClass, boolean qualified) {
29-
if (aClass instanceof PsiAnonymousClass) {
30-
if (aClass instanceof PsiEnumConstantInitializer) {
31-
PsiEnumConstant enumConstant = ((PsiEnumConstantInitializer) aClass).getEnumConstant();
32-
String name = enumConstant.getName();
33-
return PsiBundle.message("enum.constant.context", name, getContextName(enumConstant, qualified));
34-
}
35-
return PsiBundle.message("anonymous.class.context.display", getContextName(aClass, qualified));
36-
}
37-
if (qualified) {
38-
String qName = aClass.getQualifiedName();
39-
if (qName != null) {
40-
return qName;
41-
}
28+
private ClassPresentationUtil() {
4229
}
4330

44-
String className = aClass.getName();
45-
String contextName = getContextName(aClass, qualified);
46-
return contextName != null ? PsiBundle.message("class.context.display", className, contextName) : className;
47-
}
31+
@RequiredReadAction
32+
public static LocalizeValue getNameForClass(PsiClass aClass, boolean qualified) {
33+
if (aClass instanceof PsiAnonymousClass) {
34+
if (aClass instanceof PsiEnumConstantInitializer enumInitializer) {
35+
PsiEnumConstant enumConstant = enumInitializer.getEnumConstant();
36+
return LanguageLocalize.enumConstantContext(
37+
StringUtil.notNullize(enumConstant.getName()),
38+
StringUtil.notNullize(getContextName(enumConstant, qualified))
39+
);
40+
}
41+
return LanguageLocalize.anonymousClassContextDisplay(StringUtil.notNullize(getContextName(aClass, qualified)));
42+
}
43+
if (qualified) {
44+
String qName = aClass.getQualifiedName();
45+
if (qName != null) {
46+
return LocalizeValue.of(qName);
47+
}
48+
}
4849

49-
private static String getNameForElement(PsiElement element, boolean qualified) {
50-
if (element instanceof PsiClass) {
51-
return getNameForClass((PsiClass) element, qualified);
52-
} else if (element instanceof PsiMethod) {
53-
PsiMethod method = (PsiMethod) element;
54-
String methodName = method.getName();
55-
return PsiBundle.message("method.context.display", methodName, getContextName(method, qualified));
56-
} else if (element instanceof PsiClassOwner) {
57-
return null;
58-
} else if (element instanceof PsiFile) {
59-
return ((PsiFile) element).getName();
60-
} else if (element instanceof PsiField) {
61-
return ((PsiField) element).getName();
62-
} else {
63-
return null;
50+
String className = aClass.getName();
51+
String contextName = getContextName(aClass, qualified);
52+
return contextName != null
53+
? LanguageLocalize.classContextDisplay(StringUtil.notNullize(className), contextName)
54+
: LocalizeValue.ofNullable(className);
6455
}
65-
}
6656

67-
public static String getContextName(PsiElement element, boolean qualified) {
68-
PsiElement parent = PsiTreeUtil.getStubOrPsiParentOfType(element, PsiMember.class);
69-
if (parent == null) {
70-
parent = element.getContainingFile();
57+
@RequiredReadAction
58+
private static LocalizeValue getNameForElement(PsiElement element, boolean qualified) {
59+
if (element instanceof PsiClass psiClass) {
60+
return getNameForClass(psiClass, qualified);
61+
}
62+
else if (element instanceof PsiMethod method) {
63+
return LanguageLocalize.methodContextDisplay(
64+
StringUtil.notNullize(method.getName()),
65+
StringUtil.notNullize(getContextName(method, qualified))
66+
);
67+
}
68+
else if (element instanceof PsiClassOwner) {
69+
return LocalizeValue.empty();
70+
}
71+
else if (element instanceof PsiFile file) {
72+
return LocalizeValue.of(file.getName());
73+
}
74+
else if (element instanceof PsiField field) {
75+
return LocalizeValue.ofNullable(field.getName());
76+
}
77+
else {
78+
return LocalizeValue.empty();
79+
}
7180
}
72-
while (true) {
73-
if (parent == null) {
74-
return null;
75-
}
76-
String name = getNameForElement(parent, qualified);
77-
if (name != null) {
78-
return name;
79-
}
80-
if (parent instanceof PsiFile) {
81-
return null;
82-
}
83-
parent = PsiTreeUtil.getStubOrPsiParent(parent);
81+
82+
@RequiredReadAction
83+
public static String getContextName(PsiElement element, boolean qualified) {
84+
PsiElement parent = PsiTreeUtil.getStubOrPsiParentOfType(element, PsiMember.class);
85+
if (parent == null) {
86+
parent = element.getContainingFile();
87+
}
88+
while (true) {
89+
if (parent == null) {
90+
return null;
91+
}
92+
LocalizeValue name = getNameForElement(parent, qualified);
93+
if (name.isNotEmpty()) {
94+
return name.getNullIfEmpty();
95+
}
96+
if (parent instanceof PsiFile) {
97+
return null;
98+
}
99+
parent = PsiTreeUtil.getStubOrPsiParent(parent);
100+
}
84101
}
85-
}
86102

87-
public static String getFunctionalExpressionPresentation(PsiFunctionalExpression functionalExpression, boolean qualified) {
88-
return "Functional expression in " + getContextName(functionalExpression, qualified);
89-
}
103+
@RequiredReadAction
104+
public static LocalizeValue getFunctionalExpressionPresentation(PsiFunctionalExpression functionalExpression, boolean qualified) {
105+
return LocalizeValue.localizeTODO("Functional expression in " + getContextName(functionalExpression, qualified));
106+
}
90107
}

‎plugin/src/main/java/com/intellij/java/impl/codeInsight/daemon/impl/GutterIconTooltipHelper.java‎

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -65,14 +65,14 @@ public static HtmlChunk.Element composeText(
6565
Set<LocalizeValue> names = new LinkedHashSet<>();
6666
for (PsiElement element : elements) {
6767
if (element instanceof PsiClass psiClass) {
68-
String className = ClassPresentationUtil.getNameForClass(psiClass, true);
69-
names.add(pattern.apply("", className));
68+
LocalizeValue className = ClassPresentationUtil.getNameForClass(psiClass, true);
69+
names.add(pattern.apply("", className.get()));
7070
}
7171
else if (element instanceof PsiMethod method) {
7272
String methodName = method.getName();
7373
PsiClass aClass = method.getContainingClass();
74-
String className = aClass == null ? "" : ClassPresentationUtil.getNameForClass(aClass, true);
75-
names.add(pattern.apply(methodName, className));
74+
LocalizeValue className = aClass == null ? LocalizeValue.empty() : ClassPresentationUtil.getNameForClass(aClass, true);
75+
names.add(pattern.apply(methodName, className.get()));
7676
}
7777
else if (element instanceof PsiFile file) {
7878
names.add(pattern.apply("", file.getName()));

0 commit comments

Comments
 (0)