diff --git a/jam-api/pom.xml b/jam-api/pom.xml index 19fb472812..dcbb3aedd8 100644 --- a/jam-api/pom.xml +++ b/jam-api/pom.xml @@ -41,6 +41,24 @@ 3-SNAPSHOT jar + + + + consulo.maven + maven-consulo-plugin + true + + + generate-sources + + generate-localize + + + + + + + consulo diff --git a/jam-api/src/main/java/com/intellij/jam/JamMessages.java b/jam-api/src/main/java/com/intellij/jam/JamMessages.java index 2ff290a6e8..c16311db95 100644 --- a/jam-api/src/main/java/com/intellij/jam/JamMessages.java +++ b/jam-api/src/main/java/com/intellij/jam/JamMessages.java @@ -13,15 +13,20 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package com.intellij.jam; +import consulo.annotation.DeprecationInfo; +import consulo.annotation.internal.MigratedExtensionsTo; import consulo.component.util.localize.AbstractBundle; +import consulo.java.jam.localize.JavaAnnotationModelLocalize; import org.jetbrains.annotations.PropertyKey; /** * @author Gregory.Shrago */ +@Deprecated +@DeprecationInfo("Use JavaAnnotationModelLocalize") +@MigratedExtensionsTo(JavaAnnotationModelLocalize.class) public class JamMessages extends AbstractBundle { protected static final String PATH_TO_BUNDLE = "messages.JamBundle"; diff --git a/jam-api/src/main/java/com/intellij/jam/view/ui/SelectElementsDialog.java b/jam-api/src/main/java/com/intellij/jam/view/ui/SelectElementsDialog.java index c3aaa02b27..e5047c54d5 100644 --- a/jam-api/src/main/java/com/intellij/jam/view/ui/SelectElementsDialog.java +++ b/jam-api/src/main/java/com/intellij/jam/view/ui/SelectElementsDialog.java @@ -15,9 +15,9 @@ */ package com.intellij.jam.view.ui; -import com.intellij.jam.JamMessages; import com.intellij.java.language.psi.*; import com.intellij.java.language.psi.util.PsiFormatUtil; +import consulo.java.jam.localize.JavaAnnotationModelLocalize; import consulo.language.editor.refactoring.ui.EnableDisableAction; import consulo.language.icon.IconDescriptorUpdaters; import consulo.language.psi.PsiElement; @@ -142,11 +142,10 @@ else if (psiElement instanceof PsiAnnotation) { return annotation.getContainingFile().getName() + ": @" + annotation.getQualifiedName(); } } - else if (psiElement instanceof NavigationItem) { - final NavigationItem navigationItem = (NavigationItem)psiElement; - final ItemPresentation presentation = navigationItem.getPresentation(); + else if (psiElement instanceof NavigationItem navigationItem) { + ItemPresentation presentation = navigationItem.getPresentation(); if (presentation != null) { - return StringUtil.notNullize(presentation.getPresentableText(), JamMessages.message("unnamed.element.presentable.name")); + return presentation.getPresentableText().orIfEmpty(JavaAnnotationModelLocalize.unnamedElementPresentableName()).get(); } } return psiElement.toString(); @@ -200,7 +199,7 @@ public TableCellRenderer getRenderer(final PsiElement psiElement) { protected void customizeCellRenderer(JTable table, Object value, boolean selected, boolean hasFocus, int row, int column) { append((String)value, SimpleTextAttributes.REGULAR_ATTRIBUTES); if (!psiElement.isPhysical()) { - append(" [" + JamMessages.message("postfix.not.physical.element") + "]", SimpleTextAttributes.GRAY_ATTRIBUTES); + append(" [" + JavaAnnotationModelLocalize.postfixNotPhysicalElement().get() + "]", SimpleTextAttributes.GRAY_ATTRIBUTES); } setIcon(IconDescriptorUpdaters.getIcon(psiElement, 0)); setOpaque(false); diff --git a/jam-api/src/main/java/module-info.java b/jam-api/src/main/java/module-info.java index e3df51630d..6131825e3a 100644 --- a/jam-api/src/main/java/module-info.java +++ b/jam-api/src/main/java/module-info.java @@ -1,6 +1,6 @@ /** * @author VISTALL - * @since 02/12/2022 + * @since 2022-12-02 */ module consulo.java.jam.api { requires transitive consulo.java.language.api; @@ -25,5 +25,6 @@ exports com.intellij.jam.view; exports com.intellij.jam.view.tree; exports com.intellij.jam.view.ui; + exports consulo.java.jam.localize; exports consulo.java.jam.util; } \ No newline at end of file diff --git a/jam-api/src/main/resources/LOCALIZE-LIB/en_US/consulo.java.jam.JavaAnnotationModelLocalize.yaml b/jam-api/src/main/resources/LOCALIZE-LIB/en_US/consulo.java.jam.JavaAnnotationModelLocalize.yaml new file mode 100644 index 0000000000..8118ca92dc --- /dev/null +++ b/jam-api/src/main/resources/LOCALIZE-LIB/en_US/consulo.java.jam.JavaAnnotationModelLocalize.yaml @@ -0,0 +1,32 @@ +button.delete: + text: '&Delete' +button.do.not.delete: + text: Do &Not Delete +column.name.elements.to.delete: + text: Elements to Delete +command.name.deleting.element: + text: Deleting {0} +confirmation.text.0.1.belongs.to.2.rename.2: + text: |- + {0} ''{1}'' belongs to {2}. + Do you want to rename {2} instead? +confirmation.text.delete.element: + text: Delete {0}? +dialog.title.rename.0.classes: + text: Rename {0} Classes +dialog.title.select.elements.to.delete: + text: Select Elements to Delete +local.vcs.action.name.deleting.element: + text: Deleting {0} +message.title.deleting.element: + text: Deleting {0} +model.delete.items: + text: items +postfix.not.physical.element: + text: nonexistent +this.0.1.belongs.to.2.search.usages.2: + text: |- + This {0} ''{1}'' belongs to {2}. + Do you want to search for the {2} usages instead? +unnamed.element.presentable.name: + text: diff --git a/java-analysis-impl/src/main/java/com/intellij/java/analysis/impl/codeInsight/daemon/impl/analysis/HighlightUtil.java b/java-analysis-impl/src/main/java/com/intellij/java/analysis/impl/codeInsight/daemon/impl/analysis/HighlightUtil.java index fcae590e41..bf3986dd3d 100644 --- a/java-analysis-impl/src/main/java/com/intellij/java/analysis/impl/codeInsight/daemon/impl/analysis/HighlightUtil.java +++ b/java-analysis-impl/src/main/java/com/intellij/java/analysis/impl/codeInsight/daemon/impl/analysis/HighlightUtil.java @@ -3559,13 +3559,13 @@ private static String format(PsiElement element) { if (element instanceof PsiField field) { return formatField(field); } - return ElementDescriptionUtil.getElementDescription(element, HighlightUsagesDescriptionLocation.INSTANCE); + return ElementDescriptionUtil.getElementDescription(element, HighlightUsagesDescriptionLocation.INSTANCE).get(); } private static PsiElement getOuterReferenceParent(PsiJavaCodeReferenceElement ref) { PsiElement element = ref; - while (element instanceof PsiJavaCodeReferenceElement) { - element = element.getParent(); + while (element instanceof PsiJavaCodeReferenceElement thisRef) { + element = thisRef.getParent(); } return element; } diff --git a/java-language-impl/src/main/java/com/intellij/java/language/impl/psi/presentation/java/ClassPresentationProvider.java b/java-language-impl/src/main/java/com/intellij/java/language/impl/psi/presentation/java/ClassPresentationProvider.java index 4019467332..d3cdf73c87 100644 --- a/java-language-impl/src/main/java/com/intellij/java/language/impl/psi/presentation/java/ClassPresentationProvider.java +++ b/java-language-impl/src/main/java/com/intellij/java/language/impl/psi/presentation/java/ClassPresentationProvider.java @@ -24,6 +24,7 @@ import consulo.component.util.Iconable; import consulo.language.icon.IconDescriptorUpdaters; import consulo.language.psi.PsiFile; +import consulo.localize.LocalizeValue; import consulo.navigation.ItemPresentation; import consulo.navigation.ItemPresentationProvider; import consulo.ui.ex.ColoredItemPresentation; @@ -44,8 +45,8 @@ public ItemPresentation getPresentation(final PsiClass psiClass) { return new ColoredItemPresentation() { @Override @RequiredReadAction - public String getPresentableText() { - return ClassPresentationUtil.getNameForClass(psiClass, false).get(); + public LocalizeValue getPresentableText() { + return ClassPresentationUtil.getNameForClass(psiClass, false); } @Override diff --git a/java-language-impl/src/main/java/com/intellij/java/language/impl/psi/presentation/java/JavaModulePresentationProvider.java b/java-language-impl/src/main/java/com/intellij/java/language/impl/psi/presentation/java/JavaModulePresentationProvider.java index 5e1af6dd9b..65964f9dab 100644 --- a/java-language-impl/src/main/java/com/intellij/java/language/impl/psi/presentation/java/JavaModulePresentationProvider.java +++ b/java-language-impl/src/main/java/com/intellij/java/language/impl/psi/presentation/java/JavaModulePresentationProvider.java @@ -18,8 +18,9 @@ import com.intellij.java.language.impl.psi.impl.PsiImplUtil; import com.intellij.java.language.psi.PsiJavaModule; import consulo.annotation.component.ExtensionImpl; -import consulo.java.language.impl.JavaIcons; +import consulo.java.language.impl.icon.JavaPsiImplIconGroup; import consulo.language.content.FileIndexFacade; +import consulo.localize.LocalizeValue; import consulo.module.Module; import consulo.navigation.ItemPresentation; import consulo.navigation.ItemPresentationProvider; @@ -32,46 +33,44 @@ @ExtensionImpl public class JavaModulePresentationProvider implements ItemPresentationProvider { - private static final Pattern JAR_NAME = Pattern.compile(".+/([^/]+\\.jar)!/.*"); + private static final Pattern JAR_NAME = Pattern.compile(".+/([^/]+\\.jar)!/.*"); - @Override - public Class getItemClass() { - return PsiJavaModule.class; - } + @Override + public Class getItemClass() { + return PsiJavaModule.class; + } - @Override - public ItemPresentation getPresentation(final PsiJavaModule item) { - return new ItemPresentation() { - @Nullable - @Override - public String getPresentableText() { - return item.getName(); - } + @Override + public ItemPresentation getPresentation(final PsiJavaModule item) { + return new ItemPresentation() { + @Override + public LocalizeValue getPresentableText() { + return LocalizeValue.ofNullable(item.getName()); + } - @Nullable - @Override - public String getLocationString() { - VirtualFile file = PsiImplUtil.getModuleVirtualFile(item); - FileIndexFacade index = FileIndexFacade.getInstance(item.getProject()); - if (index.isInLibraryClasses(file)) { - Matcher matcher = JAR_NAME.matcher(file.getPath()); - if (matcher.find()) { - return matcher.group(1); - } - } else if (index.isInSource(file)) { - Module module = index.getModuleForFile(file); - if (module != null) { - return '[' + module.getName() + ']'; - } - } - return null; - } + @Override + public @Nullable String getLocationString() { + VirtualFile file = PsiImplUtil.getModuleVirtualFile(item); + FileIndexFacade index = FileIndexFacade.getInstance(item.getProject()); + if (index.isInLibraryClasses(file)) { + Matcher matcher = JAR_NAME.matcher(file.getPath()); + if (matcher.find()) { + return matcher.group(1); + } + } + else if (index.isInSource(file)) { + Module module = index.getModuleForFile(file); + if (module != null) { + return '[' + module.getName() + ']'; + } + } + return null; + } - @Nullable - @Override - public Image getIcon() { - return JavaIcons.Nodes.JavaModule; - } - }; - } + @Override + public @Nullable Image getIcon() { + return JavaPsiImplIconGroup.nodesJavamodule(); + } + }; + } } \ No newline at end of file diff --git a/java-language-impl/src/main/java/com/intellij/java/language/impl/psi/presentation/java/JavaPresentationUtil.java b/java-language-impl/src/main/java/com/intellij/java/language/impl/psi/presentation/java/JavaPresentationUtil.java index 38c4fa7dd2..35a452ab66 100644 --- a/java-language-impl/src/main/java/com/intellij/java/language/impl/psi/presentation/java/JavaPresentationUtil.java +++ b/java-language-impl/src/main/java/com/intellij/java/language/impl/psi/presentation/java/JavaPresentationUtil.java @@ -15,111 +15,113 @@ */ package com.intellij.java.language.impl.psi.presentation.java; -import consulo.ui.ex.ColoredItemPresentation; -import consulo.navigation.ItemPresentation; +import com.intellij.java.language.psi.*; +import com.intellij.java.language.psi.util.PsiFormatUtil; +import consulo.annotation.access.RequiredReadAction; import consulo.codeEditor.CodeInsightColors; import consulo.colorScheme.TextAttributesKey; import consulo.component.util.Iconable; -import consulo.language.psi.PsiBundle; -import com.intellij.java.language.psi.PsiClass; +import consulo.language.icon.IconDescriptorUpdaters; +import consulo.language.localize.LanguageLocalize; import consulo.language.psi.PsiElement; -import com.intellij.java.language.psi.PsiField; import consulo.language.psi.PsiFile; -import com.intellij.java.language.psi.PsiJavaFile; -import com.intellij.java.language.psi.PsiMember; -import com.intellij.java.language.psi.PsiMethod; -import com.intellij.java.language.psi.PsiSubstitutor; -import com.intellij.java.language.psi.util.PsiFormatUtil; import consulo.language.psi.util.PsiTreeUtil; -import consulo.language.icon.IconDescriptorUpdaters; +import consulo.localize.LocalizeValue; +import consulo.navigation.ItemPresentation; +import consulo.ui.ex.ColoredItemPresentation; import consulo.ui.image.Image; import org.jspecify.annotations.Nullable; public class JavaPresentationUtil { - private JavaPresentationUtil() { - } + private JavaPresentationUtil() { + } - public static ColoredItemPresentation getMethodPresentation(final PsiMethod psiMethod) { - return new ColoredItemPresentation() { - @Override - public String getPresentableText() { - return PsiFormatUtil.formatMethod( - psiMethod, - PsiSubstitutor.EMPTY, PsiFormatUtil.SHOW_NAME | PsiFormatUtil.SHOW_PARAMETERS, - PsiFormatUtil.SHOW_TYPE - ); - } + public static ColoredItemPresentation getMethodPresentation(final PsiMethod psiMethod) { + return new ColoredItemPresentation() { + @Override + public LocalizeValue getPresentableText() { + return LocalizeValue.of(PsiFormatUtil.formatMethod( + psiMethod, + PsiSubstitutor.EMPTY, PsiFormatUtil.SHOW_NAME | PsiFormatUtil.SHOW_PARAMETERS, + PsiFormatUtil.SHOW_TYPE + )); + } - @Override - public TextAttributesKey getTextAttributesKey() { - if (psiMethod.isDeprecated()) { - return CodeInsightColors.DEPRECATED_ATTRIBUTES; - } - return null; - } + @Override + public TextAttributesKey getTextAttributesKey() { + if (psiMethod.isDeprecated()) { + return CodeInsightColors.DEPRECATED_ATTRIBUTES; + } + return null; + } - @Override - public String getLocationString() { - return getJavaSymbolContainerText(psiMethod); - } + @Override + @RequiredReadAction + public String getLocationString() { + return getJavaSymbolContainerText(psiMethod); + } - @Override - public Image getIcon() { - return IconDescriptorUpdaters.getIcon(psiMethod, Iconable.ICON_FLAG_VISIBILITY); - } - }; - } + @Override + @RequiredReadAction + public Image getIcon() { + return IconDescriptorUpdaters.getIcon(psiMethod, Iconable.ICON_FLAG_VISIBILITY); + } + }; + } - public static ItemPresentation getFieldPresentation(final PsiField psiField) { - return new ColoredItemPresentation() { - @Override - public String getPresentableText() { - return psiField.getName(); - } + public static ItemPresentation getFieldPresentation(final PsiField psiField) { + return new ColoredItemPresentation() { + @Override + public LocalizeValue getPresentableText() { + return LocalizeValue.ofNullable(psiField.getName()); + } - @Override - public TextAttributesKey getTextAttributesKey() { - if (psiField.isDeprecated()) { - return CodeInsightColors.DEPRECATED_ATTRIBUTES; - } - return null; - } + @Override + public TextAttributesKey getTextAttributesKey() { + if (psiField.isDeprecated()) { + return CodeInsightColors.DEPRECATED_ATTRIBUTES; + } + return null; + } - @Override - public String getLocationString() { - return getJavaSymbolContainerText(psiField); - } + @Override + @RequiredReadAction + public String getLocationString() { + return getJavaSymbolContainerText(psiField); + } - @Override - public Image getIcon() { - return IconDescriptorUpdaters.getIcon(psiField, Iconable.ICON_FLAG_VISIBILITY); - } - }; - } + @Override + @RequiredReadAction + public Image getIcon() { + return IconDescriptorUpdaters.getIcon(psiField, Iconable.ICON_FLAG_VISIBILITY); + } + }; + } - @Nullable - private static String getJavaSymbolContainerText(final PsiElement element) { - final String result; - PsiElement container = PsiTreeUtil.getParentOfType(element, PsiMember.class, PsiFile.class); + @Nullable + @RequiredReadAction + private static String getJavaSymbolContainerText(PsiElement element) { + String result; + PsiElement container = PsiTreeUtil.getParentOfType(element, PsiMember.class, PsiFile.class); - if (container instanceof PsiClass) { - String qName = ((PsiClass)container).getQualifiedName(); - if (qName != null) { - result = qName; - } - else { - result = ((PsiClass)container).getName(); - } - } - else if (container instanceof PsiJavaFile) { - result = ((PsiJavaFile)container).getPackageName(); - } - else {//TODO: local classes - result = null; - } - if (result != null) { - return PsiBundle.message("aux.context.display", result); + if (container instanceof PsiClass psiClass) { + String qName = psiClass.getQualifiedName(); + if (qName != null) { + result = qName; + } + else { + result = psiClass.getName(); + } + } + else if (container instanceof PsiJavaFile javaFile) { + result = javaFile.getPackageName(); + } + else {//TODO: local classes + result = null; + } + if (result != null) { + return LanguageLocalize.auxContextDisplay(result).get(); + } + return null; } - return null; - } } diff --git a/java-language-impl/src/main/java/com/intellij/java/language/impl/psi/presentation/java/PackagePresentationProvider.java b/java-language-impl/src/main/java/com/intellij/java/language/impl/psi/presentation/java/PackagePresentationProvider.java index 88d80149ba..8e0699b33b 100644 --- a/java-language-impl/src/main/java/com/intellij/java/language/impl/psi/presentation/java/PackagePresentationProvider.java +++ b/java-language-impl/src/main/java/com/intellij/java/language/impl/psi/presentation/java/PackagePresentationProvider.java @@ -15,8 +15,10 @@ */ package com.intellij.java.language.impl.psi.presentation.java; +import consulo.annotation.access.RequiredReadAction; import consulo.annotation.component.ExtensionImpl; -import consulo.application.AllIcons; +import consulo.localize.LocalizeValue; +import consulo.platform.base.icon.PlatformIconGroup; import consulo.ui.ex.ColoredItemPresentation; import consulo.navigation.ItemPresentation; import consulo.navigation.ItemPresentationProvider; @@ -24,36 +26,36 @@ import com.intellij.java.language.psi.PsiJavaPackage; import consulo.ui.image.Image; - @ExtensionImpl public class PackagePresentationProvider implements ItemPresentationProvider { - @Override - public Class getItemClass() { - return PsiJavaPackage.class; - } + @Override + public Class getItemClass() { + return PsiJavaPackage.class; + } - @Override - public ItemPresentation getPresentation(final PsiJavaPackage aPackage) { - return new ColoredItemPresentation() { - @Override - public TextAttributesKey getTextAttributesKey() { - return null; - } + @Override + public ItemPresentation getPresentation(PsiJavaPackage aPackage) { + return new ColoredItemPresentation() { + @Override + public TextAttributesKey getTextAttributesKey() { + return null; + } - @Override - public String getPresentableText() { - return aPackage.getName(); - } + @Override + @RequiredReadAction + public LocalizeValue getPresentableText() { + return LocalizeValue.ofNullable(aPackage.getName()); + } - @Override - public String getLocationString() { - return aPackage.getQualifiedName(); - } + @Override + public String getLocationString() { + return aPackage.getQualifiedName(); + } - @Override - public Image getIcon() { - return AllIcons.Nodes.Package; - } - }; - } + @Override + public Image getIcon() { + return PlatformIconGroup.nodesPackage(); + } + }; + } } diff --git a/java-language-impl/src/main/java/com/intellij/java/language/impl/psi/presentation/java/VariablePresentationProvider.java b/java-language-impl/src/main/java/com/intellij/java/language/impl/psi/presentation/java/VariablePresentationProvider.java index 30a47ffe15..04e980c894 100644 --- a/java-language-impl/src/main/java/com/intellij/java/language/impl/psi/presentation/java/VariablePresentationProvider.java +++ b/java-language-impl/src/main/java/com/intellij/java/language/impl/psi/presentation/java/VariablePresentationProvider.java @@ -16,7 +16,9 @@ package com.intellij.java.language.impl.psi.presentation.java; import com.intellij.java.language.psi.PsiVariable; +import consulo.annotation.access.RequiredReadAction; import consulo.language.icon.IconDescriptorUpdaters; +import consulo.localize.LocalizeValue; import consulo.navigation.ItemPresentation; import consulo.navigation.ItemPresentationProvider; import consulo.navigation.NavigationItem; @@ -26,24 +28,26 @@ * @author yole */ public abstract class VariablePresentationProvider implements ItemPresentationProvider { - @Override - public ItemPresentation getPresentation(final T variable) { - return new ItemPresentation() { - @Override - public String getPresentableText() { - //return PsiFormatUtil.formatVariable(variable, PsiFormatUtilBase.SHOW_TYPE, PsiSubstitutor.EMPTY); - return variable.getName(); - } + @Override + public ItemPresentation getPresentation(final T variable) { + return new ItemPresentation() { + @Override + @RequiredReadAction + public LocalizeValue getPresentableText() { + //return PsiFormatUtil.formatVariable(variable, PsiFormatUtilBase.SHOW_TYPE, PsiSubstitutor.EMPTY); + return LocalizeValue.ofNullable(variable.getName()); + } - @Override - public String getLocationString() { - return ""; - } + @Override + public String getLocationString() { + return ""; + } - @Override - public Image getIcon() { - return IconDescriptorUpdaters.getIcon(variable, 0); - } - }; - } + @Override + @RequiredReadAction + public Image getIcon() { + return IconDescriptorUpdaters.getIcon(variable, 0); + } + }; + } } diff --git a/plugin/src/main/java/com/intellij/java/impl/codeInsight/highlighting/HighlightOverridingMethodsHandler.java b/plugin/src/main/java/com/intellij/java/impl/codeInsight/highlighting/HighlightOverridingMethodsHandler.java index 1091716e3a..4954077c82 100644 --- a/plugin/src/main/java/com/intellij/java/impl/codeInsight/highlighting/HighlightOverridingMethodsHandler.java +++ b/plugin/src/main/java/com/intellij/java/impl/codeInsight/highlighting/HighlightOverridingMethodsHandler.java @@ -91,13 +91,13 @@ public void computeUsages(List classes) { if (myClass.getApplication().isUnitTestMode()) { return; } - String name; + LocalizeValue name; if (classes.size() == 1) { ItemPresentation presentation = classes.get(0).getPresentation(); - name = presentation != null ? presentation.getPresentableText() : ""; + name = presentation != null ? presentation.getPresentableText() : LocalizeValue.empty(); } else { - name = ""; + name = LocalizeValue.empty(); } myHintText = LocalizeValue.localizeTODO( CodeInsightBundle.message("no.methods.overriding.0.are.found", classes.size(), name) diff --git a/plugin/src/main/java/com/intellij/java/impl/codeInsight/highlighting/JavaHighlightUsagesDescriptionProvider.java b/plugin/src/main/java/com/intellij/java/impl/codeInsight/highlighting/JavaHighlightUsagesDescriptionProvider.java index 911fcbdb07..ad69df9ba6 100644 --- a/plugin/src/main/java/com/intellij/java/impl/codeInsight/highlighting/JavaHighlightUsagesDescriptionProvider.java +++ b/plugin/src/main/java/com/intellij/java/impl/codeInsight/highlighting/JavaHighlightUsagesDescriptionProvider.java @@ -18,53 +18,70 @@ import com.intellij.java.language.psi.*; import com.intellij.java.language.psi.util.PsiFormatUtil; import com.intellij.java.language.psi.util.PsiFormatUtilBase; +import consulo.annotation.access.RequiredReadAction; import consulo.annotation.component.ExtensionImpl; -import consulo.language.LangBundle; import consulo.language.editor.highlight.HighlightUsagesDescriptionLocation; +import consulo.language.localize.LanguageLocalize; import consulo.language.psi.ElementDescriptionLocation; import consulo.language.psi.ElementDescriptionProvider; import consulo.language.psi.PsiElement; - +import consulo.localize.LocalizeValue; /** * @author yole */ @ExtensionImpl public class JavaHighlightUsagesDescriptionProvider implements ElementDescriptionProvider { - @Override - public String getElementDescription(PsiElement element, ElementDescriptionLocation location) { - if (!(location instanceof HighlightUsagesDescriptionLocation)) return null; + @Override + @RequiredReadAction + public LocalizeValue getElementDescription(PsiElement element, ElementDescriptionLocation location) { + if (!(location instanceof HighlightUsagesDescriptionLocation)) { + return LocalizeValue.empty(); + } - String elementName = null; - if (element instanceof PsiClass) { - elementName = ((PsiClass) element).getQualifiedName(); - if (elementName == null) { - elementName = ((PsiClass) element).getName(); - } - elementName = (((PsiClass) element).isInterface() ? - LangBundle.message("java.terms.interface") : - LangBundle.message("java.terms.class")) + " " + elementName; - } else if (element instanceof PsiMethod) { - elementName = PsiFormatUtil.formatMethod((PsiMethod) element, - PsiSubstitutor.EMPTY, PsiFormatUtilBase.SHOW_NAME | PsiFormatUtilBase.SHOW_PARAMETERS | - PsiFormatUtilBase.SHOW_CONTAINING_CLASS, - PsiFormatUtilBase.SHOW_TYPE); - elementName = LangBundle.message("java.terms.method") + " " + elementName; - } else if (element instanceof PsiVariable) { - elementName = PsiFormatUtil.formatVariable((PsiVariable) element, - PsiFormatUtilBase.SHOW_NAME | PsiFormatUtilBase.SHOW_CONTAINING_CLASS, - PsiSubstitutor.EMPTY); - if (element instanceof PsiField) { - elementName = LangBundle.message("java.terms.field") + " " + elementName; - } else if (element instanceof PsiParameter) { - elementName = LangBundle.message("java.terms.parameter") + " " + elementName; - } else { - elementName = LangBundle.message("java.terms.variable") + " " + elementName; - } - } else if (element instanceof PsiJavaPackage) { - elementName = ((PsiJavaPackage) element).getQualifiedName(); - elementName = LangBundle.message("java.terms.package") + " " + elementName; + if (element instanceof PsiClass psiClass) { + String elementName = psiClass.getQualifiedName(); + if (elementName == null) { + elementName = psiClass.getName(); + } + return LocalizeValue.join( + psiClass.isInterface() ? LanguageLocalize.javaTermsInterface() : LanguageLocalize.javaTermsClass(), + LocalizeValue.space(), + LocalizeValue.ofNullable(elementName) + ); + } + else if (element instanceof PsiMethod method) { + String elementName = PsiFormatUtil.formatMethod( + method, + PsiSubstitutor.EMPTY, + PsiFormatUtilBase.SHOW_NAME | PsiFormatUtilBase.SHOW_PARAMETERS | PsiFormatUtilBase.SHOW_CONTAINING_CLASS, + PsiFormatUtilBase.SHOW_TYPE + ); + return LocalizeValue.join(LanguageLocalize.javaTermsMethod(), LocalizeValue.space(), LocalizeValue.of(elementName)); + } + else if (element instanceof PsiVariable variable) { + String elementName = PsiFormatUtil.formatVariable( + variable, + PsiFormatUtilBase.SHOW_NAME | PsiFormatUtilBase.SHOW_CONTAINING_CLASS, + PsiSubstitutor.EMPTY + ); + if (element instanceof PsiField) { + return LocalizeValue.join(LanguageLocalize.javaTermsField(), LocalizeValue.space(), LocalizeValue.of(elementName)); + } + else if (element instanceof PsiParameter) { + return LocalizeValue.join(LanguageLocalize.javaTermsParameter(), LocalizeValue.space(), LocalizeValue.of(elementName)); + } + else { + return LocalizeValue.join(LanguageLocalize.javaTermsVariable(), LocalizeValue.space(), LocalizeValue.of(elementName)); + } + } + else if (element instanceof PsiJavaPackage javaPackage) { + return LocalizeValue.join( + LanguageLocalize.javaTermsPackage(), + LocalizeValue.space(), + LocalizeValue.of(javaPackage.getQualifiedName()) + ); + } + return LocalizeValue.empty(); } - return elementName; - } } diff --git a/plugin/src/main/java/com/intellij/java/impl/ide/navigationToolbar/JavaNavBarExtension.java b/plugin/src/main/java/com/intellij/java/impl/ide/navigationToolbar/JavaNavBarExtension.java index 15d2500d24..0402486e80 100644 --- a/plugin/src/main/java/com/intellij/java/impl/ide/navigationToolbar/JavaNavBarExtension.java +++ b/plugin/src/main/java/com/intellij/java/impl/ide/navigationToolbar/JavaNavBarExtension.java @@ -12,14 +12,15 @@ import consulo.application.ui.UISettings; import consulo.fileEditor.structureView.tree.NodeProvider; import consulo.ide.navigationToolbar.StructureAwareNavBarModelExtension; -import consulo.java.impl.JavaBundle; +import consulo.java.localize.JavaLocalize; import consulo.language.Language; import consulo.language.psi.*; +import consulo.localize.LocalizeValue; import consulo.module.content.ProjectFileIndex; import consulo.module.content.ProjectRootManager; import consulo.usage.UsageViewShortNameLocation; +import consulo.util.lang.StringUtil; import consulo.virtualFileSystem.VirtualFile; - import org.jspecify.annotations.Nullable; import java.util.List; @@ -43,31 +44,32 @@ public String getPresentableText(Object object) { @Override @RequiredReadAction public String getPresentableText(Object object, boolean forPopup) { - if (object instanceof PsiMember) { - if (forPopup && object instanceof PsiMethod) { - return PsiFormatUtil.formatMethod((PsiMethod) object, + if (object instanceof PsiMember member) { + if (forPopup && object instanceof PsiMethod method) { + return PsiFormatUtil.formatMethod( + method, PsiSubstitutor.EMPTY, SHOW_NAME | TYPE_AFTER | SHOW_PARAMETERS, - SHOW_TYPE); + SHOW_TYPE + ); } - return ElementDescriptionUtil.getElementDescription((PsiElement) object, UsageViewShortNameLocation.INSTANCE); - } else if (object instanceof PsiJavaPackage) { - String name = ((PsiJavaPackage) object).getName(); - return name != null ? name : JavaBundle.message("dependencies.tree.node.default.package.abbreviation"); - } else if (object instanceof PsiDirectory && JrtFileSystem.isRoot(((PsiDirectory) object).getVirtualFile())) { - return JavaBundle.message("jrt.node.short"); + return ElementDescriptionUtil.getElementDescription(member, UsageViewShortNameLocation.INSTANCE).getNullIfEmpty(); + } else if (object instanceof PsiJavaPackage javaPackage) { + return LocalizeValue.ofNullable(javaPackage.getName()).orIfEmpty(JavaLocalize.dependenciesTreeNodeDefaultPackageAbbreviation()).get(); + } else if (object instanceof PsiDirectory directory && JrtFileSystem.isRoot(directory.getVirtualFile())) { + return JavaLocalize.jrtNodeShort().get(); } else if (object instanceof PsiLambdaExpression) { return "Lambda"; } return null; } - @RequiredReadAction @Override + @RequiredReadAction public PsiElement getParent(PsiElement psiElement) { - if (psiElement instanceof PsiPackage) { - PsiPackage parentPackage = ((PsiPackage) psiElement).getParentPackage(); - if (parentPackage != null && parentPackage.getQualifiedName().length() > 0) { + if (psiElement instanceof PsiPackage psiPackage) { + PsiPackage parentPackage = psiPackage.getParentPackage(); + if (parentPackage != null && StringUtil.isNotEmpty(parentPackage.getQualifiedName())) { return parentPackage; } } @@ -114,9 +116,6 @@ protected List> getApplicableNodeProviders() { @Override protected boolean acceptParentFromModel(@Nullable PsiElement psiElement) { - if (psiElement instanceof PsiJavaFile) { - return ((PsiJavaFile) psiElement).getClasses().length > 1; - } - return true; + return !(psiElement instanceof PsiJavaFile javaFile) || javaFile.getClasses().length > 1; } } diff --git a/plugin/src/main/java/com/intellij/java/impl/ide/structureView/impl/java/AnonymousClassesSorter.java b/plugin/src/main/java/com/intellij/java/impl/ide/structureView/impl/java/AnonymousClassesSorter.java index a4baaa7b15..74ba222985 100644 --- a/plugin/src/main/java/com/intellij/java/impl/ide/structureView/impl/java/AnonymousClassesSorter.java +++ b/plugin/src/main/java/com/intellij/java/impl/ide/structureView/impl/java/AnonymousClassesSorter.java @@ -25,40 +25,38 @@ * @author Konstantin Bulenkov */ public class AnonymousClassesSorter implements Sorter { - public static Sorter INSTANCE = new AnonymousClassesSorter(); + public static Sorter INSTANCE = new AnonymousClassesSorter(); - private Comparator myComparator = new Comparator() { - @Override - public int compare(Object o1, Object o2) { - String s1 = SorterUtil.getStringPresentation(o1); - String s2 = SorterUtil.getStringPresentation(o2); - if (s1.startsWith("$") && s2.startsWith("$")) { - try { - return Integer.parseInt(s1.substring(1)) - Integer.parseInt(s2.substring(1)); - } catch (NumberFormatException e) {// + private Comparator myComparator = (o1, o2) -> { + String s1 = SorterUtil.getStringPresentation(o1).get(); + String s2 = SorterUtil.getStringPresentation(o2).get(); + if (s1.startsWith("$") && s2.startsWith("$")) { + try { + return Integer.parseInt(s1.substring(1)) - Integer.parseInt(s2.substring(1)); + } + catch (NumberFormatException e) {// + } } - } - return 0; + return 0; + }; + + @Override + public Comparator getComparator() { + return myComparator; } - }; - - @Override - public Comparator getComparator() { - return myComparator; - } - @Override - public boolean isVisible() { - return false; - } + @Override + public boolean isVisible() { + return false; + } - @Override - public ActionPresentation getPresentation() { - return ALPHA_SORTER.getPresentation(); - } + @Override + public ActionPresentation getPresentation() { + return ALPHA_SORTER.getPresentation(); + } - @Override - public String getName() { - return "ANONYMOUS_CLASSES_SORTER"; - } + @Override + public String getName() { + return "ANONYMOUS_CLASSES_SORTER"; + } } diff --git a/plugin/src/main/java/com/intellij/java/impl/ide/structureView/impl/java/ClassInitializerTreeElement.java b/plugin/src/main/java/com/intellij/java/impl/ide/structureView/impl/java/ClassInitializerTreeElement.java index 95475d5061..2fbfc509f4 100644 --- a/plugin/src/main/java/com/intellij/java/impl/ide/structureView/impl/java/ClassInitializerTreeElement.java +++ b/plugin/src/main/java/com/intellij/java/impl/ide/structureView/impl/java/ClassInitializerTreeElement.java @@ -19,59 +19,63 @@ import com.intellij.java.language.psi.PsiCodeBlock; import com.intellij.java.language.psi.PsiModifier; import com.intellij.java.language.psi.util.PsiUtil; +import consulo.annotation.access.RequiredReadAction; import consulo.fileEditor.structureView.StructureViewTreeElement; -import consulo.java.analysis.codeInsight.JavaCodeInsightBundle; +import consulo.java.analysis.codeInsight.localize.JavaCodeInsightLocalize; import consulo.language.editor.structureView.PsiTreeElementBase; import consulo.language.psi.PsiElement; import consulo.language.psi.PsiWhiteSpace; +import consulo.localize.LocalizeValue; import consulo.util.lang.StringUtil; import java.util.Collection; import java.util.Collections; public class ClassInitializerTreeElement extends PsiTreeElementBase implements AccessLevelProvider { - public ClassInitializerTreeElement(PsiClassInitializer initializer) { - super(initializer); - } - - @Override - public String getPresentableText() { - PsiClassInitializer initializer = getElement(); - assert initializer != null; - String isStatic = initializer.hasModifierProperty(PsiModifier.STATIC) ? PsiModifier.STATIC + " " : ""; - return JavaCodeInsightBundle.message("static.class.initializer", isStatic); - } - - @Override - public String getLocationString() { - PsiClassInitializer initializer = getElement(); - assert initializer != null; - PsiCodeBlock body = initializer.getBody(); - PsiElement first = body.getFirstBodyElement(); - if (first instanceof PsiWhiteSpace) { - first = first.getNextSibling(); + public ClassInitializerTreeElement(PsiClassInitializer initializer) { + super(initializer); } - if (first == body.getRBrace()) { - first = null; + + @Override + @RequiredReadAction + public LocalizeValue getPresentableText() { + PsiClassInitializer initializer = getElement(); + assert initializer != null; + String isStatic = initializer.isStatic() ? PsiModifier.STATIC + " " : ""; + return JavaCodeInsightLocalize.staticClassInitializer(isStatic); } - if (first != null) { - return StringUtil.first(first.getText(), 20, true); + + @Override + @RequiredReadAction + public String getLocationString() { + PsiClassInitializer initializer = getElement(); + assert initializer != null; + PsiCodeBlock body = initializer.getBody(); + PsiElement first = body.getFirstBodyElement(); + if (first instanceof PsiWhiteSpace whiteSpace) { + first = whiteSpace.getNextSibling(); + } + if (first == body.getRBrace()) { + first = null; + } + if (first != null) { + return StringUtil.first(first.getText(), 20, true); + } + return null; } - return null; - } - @Override - public Collection getChildrenBase() { - return Collections.emptyList(); - } + @Override + public Collection getChildrenBase() { + return Collections.emptyList(); + } - @Override - public int getAccessLevel() { - return PsiUtil.ACCESS_LEVEL_PRIVATE; - } + @Override + public int getAccessLevel() { + return PsiUtil.ACCESS_LEVEL_PRIVATE; + } - @Override - public int getSubLevel() { - return 0; - } + @Override + public int getSubLevel() { + return 0; + } } diff --git a/plugin/src/main/java/com/intellij/java/impl/ide/structureView/impl/java/JavaAnonymousClassTreeElement.java b/plugin/src/main/java/com/intellij/java/impl/ide/structureView/impl/java/JavaAnonymousClassTreeElement.java index 885e3556c6..b0220051ea 100644 --- a/plugin/src/main/java/com/intellij/java/impl/ide/structureView/impl/java/JavaAnonymousClassTreeElement.java +++ b/plugin/src/main/java/com/intellij/java/impl/ide/structureView/impl/java/JavaAnonymousClassTreeElement.java @@ -15,82 +15,76 @@ */ package com.intellij.java.impl.ide.structureView.impl.java; -import consulo.application.AllIcons; +import consulo.annotation.access.RequiredReadAction; import com.intellij.java.language.util.JavaAnonymousClassesHelper; import com.intellij.java.language.psi.PsiAnonymousClass; import com.intellij.java.language.psi.PsiClass; +import consulo.localize.LocalizeValue; +import consulo.platform.base.icon.PlatformIconGroup; import consulo.ui.image.Image; /** * @author Konstantin Bulenkov */ -public class JavaAnonymousClassTreeElement extends JavaClassTreeElement -{ - public static final JavaAnonymousClassTreeElement[] EMPTY_ARRAY = {}; +public class JavaAnonymousClassTreeElement extends JavaClassTreeElement { + public static final JavaAnonymousClassTreeElement[] EMPTY_ARRAY = {}; - private String myName; - private String myBaseName; + private String myName; + private String myBaseName; - public JavaAnonymousClassTreeElement(PsiAnonymousClass aClass) - { - super(aClass, false); - } + public JavaAnonymousClassTreeElement(PsiAnonymousClass aClass) { + super(aClass, false); + } - @Override - public boolean isPublic() - { - return false; - } + @Override + @RequiredReadAction + public boolean isPublic() { + return false; + } - @Override - public String getPresentableText() - { - if(myName != null) - { - return myName; - } - PsiClass element = getElement(); + @Override + @RequiredReadAction + public LocalizeValue getPresentableText() { + if (myName != null) { + return LocalizeValue.of(myName); + } + PsiClass element = getElement(); - if(element != null) - { - myName = JavaAnonymousClassesHelper.getName((PsiAnonymousClass) element); - if(myName != null) - { - return myName; - } - } - return "Anonymous"; - } + if (element != null) { + myName = JavaAnonymousClassesHelper.getName((PsiAnonymousClass) element); + if (myName != null) { + return LocalizeValue.of(myName); + } + } + return LocalizeValue.localizeTODO("Anonymous"); + } - @Override - public boolean isSearchInLocationString() - { - return true; - } + @Override + public boolean isSearchInLocationString() { + return true; + } - @Override - public String getLocationString() - { - if(myBaseName == null) - { - PsiAnonymousClass anonymousClass = (PsiAnonymousClass) getElement(); - if(anonymousClass != null) - { - myBaseName = anonymousClass.getBaseClassType().getClassName(); - } - } - return myBaseName; - } + @Override + @RequiredReadAction + public String getLocationString() { + if (myBaseName == null) { + PsiAnonymousClass anonymousClass = (PsiAnonymousClass) getElement(); + if (anonymousClass != null) { + myBaseName = anonymousClass.getBaseClassType().getClassName(); + } + } + return myBaseName; + } - @Override - public String toString() - { - return super.toString() + (myBaseName == null ? "" : " (" + getLocationString() + ")"); - } + @Override + @RequiredReadAction + public String toString() { + return super.toString() + (myBaseName == null ? "" : " (" + getLocationString() + ")"); + } - @Override - public Image getIcon() - { - return AllIcons.Nodes.AnonymousClass; - } + @Override + @RequiredReadAction + public Image getIcon() { + return PlatformIconGroup.nodesAnonymousclass(); + } } diff --git a/plugin/src/main/java/com/intellij/java/impl/ide/structureView/impl/java/JavaClassTreeElement.java b/plugin/src/main/java/com/intellij/java/impl/ide/structureView/impl/java/JavaClassTreeElement.java index a9ffad70a9..ff35213d32 100644 --- a/plugin/src/main/java/com/intellij/java/impl/ide/structureView/impl/java/JavaClassTreeElement.java +++ b/plugin/src/main/java/com/intellij/java/impl/ide/structureView/impl/java/JavaClassTreeElement.java @@ -3,10 +3,12 @@ import com.intellij.java.language.impl.psi.impl.PsiImplUtil; import com.intellij.java.language.psi.*; +import consulo.annotation.access.RequiredReadAction; import consulo.fileEditor.structureView.StructureViewTreeElement; import consulo.language.impl.psi.LightElement; import consulo.language.psi.PsiElement; import consulo.language.psi.PsiFile; +import consulo.localize.LocalizeValue; import java.util.*; @@ -14,90 +16,92 @@ * @author Konstantin Bulenkov */ public class JavaClassTreeElement extends JavaClassTreeElementBase { - public JavaClassTreeElement(PsiClass cls, boolean inherited) { - super(inherited, cls); - } - - /** - * @noinspection unused - * @deprecated use {@link #JavaClassTreeElement(PsiClass, boolean)} - */ - @Deprecated - public JavaClassTreeElement(PsiClass cls, boolean inherited, Set parents) { - this(cls, inherited); - } + public JavaClassTreeElement(PsiClass cls, boolean inherited) { + super(inherited, cls); + } - @Override - public Collection getChildrenBase() { - return getClassChildren(getElement()); - } + /** + * @noinspection unused + * @deprecated use {@link #JavaClassTreeElement(PsiClass, boolean)} + */ + @Deprecated + public JavaClassTreeElement(PsiClass cls, boolean inherited, Set parents) { + this(cls, inherited); + } - static Collection getClassChildren(PsiClass aClass) { - if (aClass == null) { - return Collections.emptyList(); + @Override + @RequiredReadAction + public Collection getChildrenBase() { + return getClassChildren(getElement()); } - LinkedHashSet members = getOwnChildren(aClass); - List children = new ArrayList<>(members.size()); + @RequiredReadAction + static Collection getClassChildren(PsiClass aClass) { + if (aClass == null) { + return Collections.emptyList(); + } - for (PsiElement child : members) { - if (!child.isValid()) { - continue; - } - if (child instanceof PsiClass) { - children.add(new JavaClassTreeElement((PsiClass)child, false)); - } - else if (child instanceof PsiField) { - children.add(new PsiFieldTreeElement((PsiField)child, false)); - } - else if (child instanceof PsiMethod) { - children.add(new PsiMethodTreeElement((PsiMethod)child, false)); - } - else if (child instanceof PsiClassInitializer) { - children.add(new ClassInitializerTreeElement((PsiClassInitializer)child)); - } - } - PsiRecordHeader header = aClass.getRecordHeader(); - if (header != null) { - for (PsiRecordComponent recordComponent : header.getRecordComponents()) { - children.add(new JavaRecordComponentTreeElement(recordComponent, false)); - } + Set members = getOwnChildren(aClass); + List children = new ArrayList<>(members.size()); + + for (PsiElement child : members) { + if (!child.isValid()) { + continue; + } + if (child instanceof PsiClass psiClass) { + children.add(new JavaClassTreeElement(psiClass, false)); + } + else if (child instanceof PsiField field) { + children.add(new PsiFieldTreeElement(field, false)); + } + else if (child instanceof PsiMethod method) { + children.add(new PsiMethodTreeElement(method, false)); + } + else if (child instanceof PsiClassInitializer classInitializer) { + children.add(new ClassInitializerTreeElement(classInitializer)); + } + } + PsiRecordHeader header = aClass.getRecordHeader(); + if (header != null) { + for (PsiRecordComponent recordComponent : header.getRecordComponents()) { + children.add(new JavaRecordComponentTreeElement(recordComponent, false)); + } + } + return children; } - return children; - } - static LinkedHashSet getOwnChildren(PsiClass aClass) { - LinkedHashSet members = new LinkedHashSet<>(); - addPhysicalElements(aClass.getFields(), members, aClass); - addPhysicalElements(aClass.getMethods(), members, aClass); - addPhysicalElements(aClass.getInnerClasses(), members, aClass); - addPhysicalElements(aClass.getInitializers(), members, aClass); - return members; - } + static LinkedHashSet getOwnChildren(PsiClass aClass) { + LinkedHashSet members = new LinkedHashSet<>(); + addPhysicalElements(aClass.getFields(), members, aClass); + addPhysicalElements(aClass.getMethods(), members, aClass); + addPhysicalElements(aClass.getInnerClasses(), members, aClass); + addPhysicalElements(aClass.getInitializers(), members, aClass); + return members; + } - private static void addPhysicalElements(PsiMember[] elements, - Collection to, - PsiClass aClass) { - for (PsiMember element : elements) { - PsiElement mirror = PsiImplUtil.handleMirror(element); - if (mirror instanceof LightElement) { - continue; - } - if (mirror instanceof PsiMember && aClass.equals(((PsiMember)mirror).getContainingClass())) { - to.add(mirror); - } + private static void addPhysicalElements(PsiMember[] elements, Collection to, PsiClass aClass) { + for (PsiMember element : elements) { + PsiElement mirror = PsiImplUtil.handleMirror(element); + if (mirror instanceof LightElement) { + continue; + } + if (mirror instanceof PsiMember && aClass.equals(((PsiMember) mirror).getContainingClass())) { + to.add(mirror); + } + } } - } - @Override - public String getPresentableText() { - PsiClass o = getElement(); - return o == null ? "" : o.getName(); - } + @Override + @RequiredReadAction + public LocalizeValue getPresentableText() { + PsiClass o = getElement(); + return o == null ? LocalizeValue.empty() : LocalizeValue.ofNullable(o.getName()); + } - @Override - public boolean isPublic() { - PsiClass o = getElement(); - return o != null && o.getParent() instanceof PsiFile || super.isPublic(); - } + @Override + @RequiredReadAction + public boolean isPublic() { + PsiClass o = getElement(); + return o != null && o.getParent() instanceof PsiFile || super.isPublic(); + } } diff --git a/plugin/src/main/java/com/intellij/java/impl/ide/structureView/impl/java/JavaFileTreeElement.java b/plugin/src/main/java/com/intellij/java/impl/ide/structureView/impl/java/JavaFileTreeElement.java index 1d85fd16f7..bf5cc84251 100644 --- a/plugin/src/main/java/com/intellij/java/impl/ide/structureView/impl/java/JavaFileTreeElement.java +++ b/plugin/src/main/java/com/intellij/java/impl/ide/structureView/impl/java/JavaFileTreeElement.java @@ -15,8 +15,10 @@ */ package com.intellij.java.impl.ide.structureView.impl.java; +import consulo.annotation.access.RequiredReadAction; import consulo.fileEditor.structureView.StructureViewTreeElement; import consulo.language.editor.structureView.PsiTreeElementBase; +import consulo.localize.LocalizeValue; import consulo.navigation.ItemPresentation; import com.intellij.java.language.psi.PsiClass; import com.intellij.java.language.psi.PsiClassOwner; @@ -25,34 +27,30 @@ import java.util.Collection; import java.util.Collections; -public class JavaFileTreeElement extends PsiTreeElementBase implements ItemPresentation -{ - public JavaFileTreeElement(PsiClassOwner file) - { - super(file); - } +public class JavaFileTreeElement extends PsiTreeElementBase implements ItemPresentation { + public JavaFileTreeElement(PsiClassOwner file) { + super(file); + } - @Override - public String getPresentableText() - { - PsiClassOwner element = getElement(); - return element == null ? "" : element.getName(); - } + @Override + @RequiredReadAction + public LocalizeValue getPresentableText() { + PsiClassOwner element = getElement(); + return element == null ? LocalizeValue.empty() : LocalizeValue.ofNullable(element.getName()); + } - @Override - public Collection getChildrenBase() - { - PsiClassOwner element = getElement(); - if(element == null) - { - return Collections.emptyList(); - } - PsiClass[] classes = element.getClasses(); - ArrayList result = new ArrayList<>(); - for(PsiClass aClass : classes) - { - result.add(new JavaClassTreeElement(aClass, false)); - } - return result; - } + @Override + @RequiredReadAction + public Collection getChildrenBase() { + PsiClassOwner element = getElement(); + if (element == null) { + return Collections.emptyList(); + } + PsiClass[] classes = element.getClasses(); + ArrayList result = new ArrayList<>(); + for (PsiClass aClass : classes) { + result.add(new JavaClassTreeElement(aClass, false)); + } + return result; + } } diff --git a/plugin/src/main/java/com/intellij/java/impl/ide/structureView/impl/java/JavaLambdaTreeElement.java b/plugin/src/main/java/com/intellij/java/impl/ide/structureView/impl/java/JavaLambdaTreeElement.java index a00467bc2e..1eb5d31248 100644 --- a/plugin/src/main/java/com/intellij/java/impl/ide/structureView/impl/java/JavaLambdaTreeElement.java +++ b/plugin/src/main/java/com/intellij/java/impl/ide/structureView/impl/java/JavaLambdaTreeElement.java @@ -15,9 +15,11 @@ */ package com.intellij.java.impl.ide.structureView.impl.java; -import consulo.application.AllIcons; +import consulo.annotation.access.RequiredReadAction; import consulo.fileEditor.structureView.StructureViewTreeElement; import com.intellij.java.language.util.PsiLambdaNameHelper; +import consulo.localize.LocalizeValue; +import consulo.platform.base.icon.PlatformIconGroup; import consulo.project.DumbService; import com.intellij.java.language.psi.PsiLambdaExpression; import com.intellij.java.language.psi.PsiType; @@ -26,81 +28,69 @@ import java.util.Collection; import java.util.Collections; -public class JavaLambdaTreeElement extends JavaClassTreeElementBase -{ - public static final JavaLambdaTreeElement[] EMPTY_ARRAY = {}; +public class JavaLambdaTreeElement extends JavaClassTreeElementBase { + public static final JavaLambdaTreeElement[] EMPTY_ARRAY = {}; - private String myName; - private String myFunctionalName; + private String myName; + private String myFunctionalName; - public JavaLambdaTreeElement(PsiLambdaExpression lambdaExpression) - { - super(false, lambdaExpression); - } + public JavaLambdaTreeElement(PsiLambdaExpression lambdaExpression) { + super(false, lambdaExpression); + } - @Override - public boolean isPublic() - { - return false; - } + @Override + public boolean isPublic() { + return false; + } - @Override - public String getPresentableText() - { - if(myName != null) - { - return myName; - } - PsiLambdaExpression element = getElement(); + @Override + @RequiredReadAction + public LocalizeValue getPresentableText() { + if (myName != null) { + return LocalizeValue.of(myName); + } + PsiLambdaExpression element = getElement(); - if(element != null) - { - myName = PsiLambdaNameHelper.getVMName(element); - return myName; - } - return "Lambda"; - } + if (element != null) { + myName = PsiLambdaNameHelper.getVMName(element); + return LocalizeValue.of(myName); + } + return LocalizeValue.localizeTODO("Lambda"); + } + @Override + public boolean isSearchInLocationString() { + return true; + } - @Override - public boolean isSearchInLocationString() - { - return true; - } + @Override + public String getLocationString() { + if (myFunctionalName == null) { + PsiLambdaExpression lambdaExpression = getElement(); + if (lambdaExpression != null && !DumbService.isDumb(lambdaExpression.getProject())) { + PsiType interfaceType = lambdaExpression.getFunctionalInterfaceType(); + if (interfaceType != null) { + myFunctionalName = interfaceType.getPresentableText(); + } + } + } + return myFunctionalName; + } - @Override - public String getLocationString() - { - if(myFunctionalName == null) - { - PsiLambdaExpression lambdaExpression = getElement(); - if(lambdaExpression != null && !DumbService.isDumb(lambdaExpression.getProject())) - { - PsiType interfaceType = lambdaExpression.getFunctionalInterfaceType(); - if(interfaceType != null) - { - myFunctionalName = interfaceType.getPresentableText(); - } - } - } - return myFunctionalName; - } + @Override + @RequiredReadAction + public String toString() { + return super.toString() + (myFunctionalName == null ? "" : " (" + getLocationString() + ")"); + } - @Override - public String toString() - { - return super.toString() + (myFunctionalName == null ? "" : " (" + getLocationString() + ")"); - } + @Override + public Collection getChildrenBase() { + return Collections.emptyList(); + } - @Override - public Collection getChildrenBase() - { - return Collections.emptyList(); - } - - @Override - public Image getIcon() - { - return AllIcons.Nodes.Lambda; - } + @Override + @RequiredReadAction + public Image getIcon() { + return PlatformIconGroup.nodesLambda(); + } } diff --git a/plugin/src/main/java/com/intellij/java/impl/ide/structureView/impl/java/JavaVariableBaseTreeElement.java b/plugin/src/main/java/com/intellij/java/impl/ide/structureView/impl/java/JavaVariableBaseTreeElement.java index 34a57eb770..b3834f9106 100644 --- a/plugin/src/main/java/com/intellij/java/impl/ide/structureView/impl/java/JavaVariableBaseTreeElement.java +++ b/plugin/src/main/java/com/intellij/java/impl/ide/structureView/impl/java/JavaVariableBaseTreeElement.java @@ -3,39 +3,50 @@ import com.intellij.java.language.psi.PsiSubstitutor; import com.intellij.java.language.psi.PsiVariable; +import consulo.annotation.access.RequiredReadAction; import consulo.fileEditor.structureView.tree.SortableTreeElement; +import consulo.localize.LocalizeValue; import consulo.project.DumbService; import consulo.util.lang.StringUtil; -import org.jspecify.annotations.Nullable; import static com.intellij.java.language.psi.util.PsiFormatUtil.formatVariable; import static com.intellij.java.language.psi.util.PsiFormatUtilBase.*; abstract class JavaVariableBaseTreeElement extends JavaClassTreeElementBase implements SortableTreeElement { - protected JavaVariableBaseTreeElement(boolean isInherited, T element) { - super(isInherited, element); - } + protected JavaVariableBaseTreeElement(boolean isInherited, T element) { + super(isInherited, element); + } - @Override - public @Nullable String getPresentableText() { - T field = getElement(); - if (field == null) return ""; + @Override + @RequiredReadAction + public LocalizeValue getPresentableText() { + T field = getElement(); + if (field == null) { + return LocalizeValue.empty(); + } - boolean dumb = DumbService.isDumb(field.getProject()); - return StringUtil.replace(formatVariable( - field, - SHOW_NAME | (dumb ? 0 : SHOW_TYPE) | TYPE_AFTER | (dumb ? 0 : SHOW_INITIALIZER), - PsiSubstitutor.EMPTY - ), ":", ": "); - } + boolean dumb = DumbService.isDumb(field.getProject()); + return LocalizeValue.of(StringUtil.replace( + formatVariable( + field, + SHOW_NAME | (dumb ? 0 : SHOW_TYPE) | TYPE_AFTER | (dumb ? 0 : SHOW_INITIALIZER), + PsiSubstitutor.EMPTY + ), + ":", + ": " + )); + } - @Override - public String getAlphaSortKey() { - T element = getElement(); - if (element != null) { - String name = element.getName(); - if (name != null) return name; + @Override + @RequiredReadAction + public String getAlphaSortKey() { + T element = getElement(); + if (element != null) { + String name = element.getName(); + if (name != null) { + return name; + } + } + return ""; } - return ""; - } } diff --git a/plugin/src/main/java/com/intellij/java/impl/ide/structureView/impl/java/PropertyGroup.java b/plugin/src/main/java/com/intellij/java/impl/ide/structureView/impl/java/PropertyGroup.java index bc6358ad0d..622c8139b6 100644 --- a/plugin/src/main/java/com/intellij/java/impl/ide/structureView/impl/java/PropertyGroup.java +++ b/plugin/src/main/java/com/intellij/java/impl/ide/structureView/impl/java/PropertyGroup.java @@ -15,11 +15,13 @@ */ package com.intellij.java.impl.ide.structureView.impl.java; -import consulo.application.AllIcons; +import consulo.annotation.access.RequiredReadAction; import consulo.component.util.WeighedItem; import consulo.fileEditor.structureView.tree.Group; import consulo.fileEditor.structureView.tree.TreeElement; import com.intellij.java.language.psi.*; +import consulo.localize.LocalizeValue; +import consulo.platform.base.icon.PlatformIconGroup; import consulo.ui.ex.ColoredItemPresentation; import consulo.navigation.ItemPresentation; import consulo.codeEditor.CodeInsightColors; @@ -29,224 +31,261 @@ import com.intellij.java.language.psi.util.PropertyUtil; import com.intellij.java.language.psi.util.PsiUtil; import consulo.ui.image.Image; +import org.jspecify.annotations.Nullable; import java.util.ArrayList; import java.util.Collection; +import java.util.Objects; public class PropertyGroup implements Group, ColoredItemPresentation, AccessLevelProvider, WeighedItem { - private final String myPropertyName; - private final PsiType myPropertyType; - - private SmartPsiElementPointer myFieldPointer; - private SmartPsiElementPointer myGetterPointer; - private SmartPsiElementPointer mySetterPointer; - private boolean myIsStatic; - public static final Image PROPERTY_READ_ICON = AllIcons.Nodes.PropertyRead; - public static final Image PROPERTY_READ_STATIC_ICON = AllIcons.Nodes.PropertyReadStatic; - public static final Image PROPERTY_WRITE_ICON = AllIcons.Nodes.PropertyWrite; - public static final Image PROPERTY_WRITE_STATIC_ICON = AllIcons.Nodes.PropertyWriteStatic; - public static final Image PROPERTY_READ_WRITE_ICON = AllIcons.Nodes.PropertyReadWrite; - public static final Image PROPERTY_READ_WRITE_STATIC_ICON = AllIcons.Nodes.PropertyReadWriteStatic; - private final Project myProject; - private final Collection myChildren = new ArrayList(); - - private PropertyGroup(String propertyName, PsiType propertyType, boolean isStatic, Project project) { - myPropertyName = propertyName; - myPropertyType = propertyType; - myIsStatic = isStatic; - myProject = project; - } - - public static PropertyGroup createOn(PsiElement object, TreeElement treeElement) { - if (object instanceof PsiField) { - PsiField field = (PsiField)object; - PropertyGroup group = new PropertyGroup(PropertyUtil.suggestPropertyName(field), field.getType(), - field.hasModifierProperty(PsiModifier.STATIC), object.getProject()); - group.setField(field); - group.myChildren.add(treeElement); - return group; - } - else if (object instanceof PsiMethod) { - PsiMethod method = (PsiMethod)object; - if (PropertyUtil.isSimplePropertyGetter(method)) { - PropertyGroup group = new PropertyGroup(PropertyUtil.getPropertyNameByGetter(method), method.getReturnType(), - method.hasModifierProperty(PsiModifier.STATIC), object.getProject()); - group.setGetter(method); - group.myChildren.add(treeElement); - return group; - } - else if (PropertyUtil.isSimplePropertySetter(method)) { - PropertyGroup group = - new PropertyGroup(PropertyUtil.getPropertyNameBySetter(method), method.getParameterList().getParameters()[0].getType(), - method.hasModifierProperty(PsiModifier.STATIC), object.getProject()); - group.setSetter(method); - group.myChildren.add(treeElement); - return group; - } - } - return null; - } - - public Collection getChildren() { - return myChildren; - } - - public ItemPresentation getPresentation() { - return this; - } - - public Image getIcon() { - if (isStatic()) { - if (getGetter() != null && getSetter() != null) { - return PROPERTY_READ_WRITE_STATIC_ICON; - } - else if (getGetter() != null) { - return PROPERTY_READ_STATIC_ICON; - } - else { - return PROPERTY_WRITE_STATIC_ICON; - } - } - else { - if (getGetter() != null && getSetter() != null) { - return PROPERTY_READ_WRITE_ICON; - } - else if (getGetter() != null) { - return PROPERTY_READ_ICON; - } - else { - return PROPERTY_WRITE_ICON; - } - } - - } - - private boolean isStatic() { - return myIsStatic; - } - - public String getLocationString() { - return null; - } - - public String getPresentableText() { - return myPropertyName + ": " + myPropertyType.getPresentableText(); - } - - public String toString() { - return myPropertyName; - } - - - public boolean equals(Object o) { - if (this == o) return true; - if (!(o instanceof PropertyGroup)) return false; - - PropertyGroup propertyGroup = (PropertyGroup)o; - - if (myPropertyName != null ? !myPropertyName.equals(propertyGroup.myPropertyName) : propertyGroup.myPropertyName != null) return false; - - if (myPropertyType != null && !myPropertyType.isValid()) return false; - if (propertyGroup.myPropertyType != null && !propertyGroup.myPropertyType.isValid()) return false; - - if (myPropertyType != null && myPropertyType.isValid() - ? !myPropertyType.equals(propertyGroup.myPropertyType) - : propertyGroup.myPropertyType != null) { - return false; - } - return true; - } - - - - public int hashCode() { - int result; - result = myPropertyName != null?myPropertyName.hashCode():0; - result = 29 * result + (myPropertyType != null ? myPropertyType.hashCode() : 0); - return result; - } - - - public String getGetterName() { - return PropertyUtil.suggestGetterName(myPropertyName, myPropertyType); - } - - public int getAccessLevel() { - int result = PsiUtil.ACCESS_LEVEL_PRIVATE; - if (getGetter() != null) { - result = Math.max(result, PsiUtil.getAccessLevel(getGetter().getModifierList())); - } - if (getSetter() != null) { - result = Math.max(result, PsiUtil.getAccessLevel(getSetter().getModifierList())); - } - if (getField() != null) { - result = Math.max(result, PsiUtil.getAccessLevel(getField().getModifierList())); - } - return result; - } - - public int getSubLevel() { - return 0; - } - - public void setField(PsiField field) { - myFieldPointer = SmartPointerManager.getInstance(myProject).createSmartPsiElementPointer(field); - myIsStatic &= field.hasModifierProperty(PsiModifier.STATIC); - } - - public void setGetter(PsiMethod getter) { - myGetterPointer = SmartPointerManager.getInstance(myProject).createSmartPsiElementPointer(getter); - myIsStatic &= getter.hasModifierProperty(PsiModifier.STATIC); - } + private final String myPropertyName; + private final PsiType myPropertyType; + + private SmartPsiElementPointer myFieldPointer; + private SmartPsiElementPointer myGetterPointer; + private SmartPsiElementPointer mySetterPointer; + private boolean myIsStatic; + public static final Image PROPERTY_READ_ICON = PlatformIconGroup.nodesPropertyread(); + public static final Image PROPERTY_READ_STATIC_ICON = PlatformIconGroup.nodesPropertyreadstatic(); + public static final Image PROPERTY_WRITE_ICON = PlatformIconGroup.nodesPropertywrite(); + public static final Image PROPERTY_WRITE_STATIC_ICON = PlatformIconGroup.nodesPropertywritestatic(); + public static final Image PROPERTY_READ_WRITE_ICON = PlatformIconGroup.nodesPropertyreadwrite(); + public static final Image PROPERTY_READ_WRITE_STATIC_ICON = PlatformIconGroup.nodesPropertyreadwritestatic(); + private final Project myProject; + private final Collection myChildren = new ArrayList<>(); + + private PropertyGroup(String propertyName, PsiType propertyType, boolean isStatic, Project project) { + myPropertyName = propertyName; + myPropertyType = propertyType; + myIsStatic = isStatic; + myProject = project; + } + + public static PropertyGroup createOn(PsiElement object, TreeElement treeElement) { + if (object instanceof PsiField field) { + PropertyGroup group = new PropertyGroup( + PropertyUtil.suggestPropertyName(field), + field.getType(), + field.isStatic(), + object.getProject() + ); + group.setField(field); + group.myChildren.add(treeElement); + return group; + } + else if (object instanceof PsiMethod method) { + if (PropertyUtil.isSimplePropertyGetter(method)) { + PropertyGroup group = new PropertyGroup( + PropertyUtil.getPropertyNameByGetter(method), + method.getReturnType(), + method.isStatic(), + object.getProject() + ); + group.setGetter(method); + group.myChildren.add(treeElement); + return group; + } + else if (PropertyUtil.isSimplePropertySetter(method)) { + PropertyGroup group = + new PropertyGroup( + PropertyUtil.getPropertyNameBySetter(method), + method.getParameterList().getParameters()[0].getType(), + method.isStatic(), + object.getProject() + ); + group.setSetter(method); + group.myChildren.add(treeElement); + return group; + } + } + return null; + } + + @Override + public Collection getChildren() { + return myChildren; + } + + @Override + public ItemPresentation getPresentation() { + return this; + } + + @Override + @RequiredReadAction + public Image getIcon() { + if (isStatic()) { + if (getGetter() != null && getSetter() != null) { + return PROPERTY_READ_WRITE_STATIC_ICON; + } + else if (getGetter() != null) { + return PROPERTY_READ_STATIC_ICON; + } + else { + return PROPERTY_WRITE_STATIC_ICON; + } + } + else { + if (getGetter() != null && getSetter() != null) { + return PROPERTY_READ_WRITE_ICON; + } + else if (getGetter() != null) { + return PROPERTY_READ_ICON; + } + else { + return PROPERTY_WRITE_ICON; + } + } + } + + private boolean isStatic() { + return myIsStatic; + } - public void setSetter(PsiMethod setter) { - mySetterPointer = SmartPointerManager.getInstance(myProject).createSmartPsiElementPointer(setter); - myIsStatic &= setter.hasModifierProperty(PsiModifier.STATIC); - } + @Override + public String getLocationString() { + return null; + } - public PsiField getField() { - return (PsiField)(myFieldPointer == null ? null : myFieldPointer.getElement()); - } + @Override + public LocalizeValue getPresentableText() { + return LocalizeValue.of(myPropertyName + ": " + myPropertyType.getPresentableText()); + } - public PsiMethod getGetter() { - return (PsiMethod)(myGetterPointer == null ? null : myGetterPointer.getElement()); - } + @Override + public String toString() { + return myPropertyName; + } - public PsiMethod getSetter() { - return (PsiMethod)(mySetterPointer == null ? null : mySetterPointer.getElement()); - } + @Override + public boolean equals(@Nullable Object o) { + if (this == o) { + return true; + } + if (!(o instanceof PropertyGroup that)) { + return false; + } + + if (!Objects.equals(myPropertyName, that.myPropertyName)) { + return false; + } + + if (myPropertyType != null && !myPropertyType.isValid()) { + return false; + } + if (that.myPropertyType != null && !that.myPropertyType.isValid()) { + return false; + } + + return myPropertyType != null && myPropertyType.isValid() + ? myPropertyType.equals(that.myPropertyType) + : that.myPropertyType == null; + } - void copyAccessorsFrom(PropertyGroup group) { - if (group.getGetter() != null) setGetter(group.getGetter()); - if (group.getSetter() != null) setSetter(group.getSetter()); - if (group.getField() != null) setField(group.getField()); - myChildren.addAll(group.myChildren); - } - public TextAttributesKey getTextAttributesKey() { - return isDeprecated() ? CodeInsightColors.DEPRECATED_ATTRIBUTES : null; - } + @Override + public int hashCode() { + return 29 * Objects.hashCode(myPropertyName) + Objects.hashCode(myPropertyType); + } - private boolean isDeprecated() { - return isDeprecated(getField()) && isDeprecated(getGetter()) && isDeprecated(getSetter()); - } + public String getGetterName() { + return PropertyUtil.suggestGetterName(myPropertyName, myPropertyType); + } - private static boolean isDeprecated(PsiElement element) { - if (element == null) return false; - if (!element.isValid()) return false; - if (!(element instanceof PsiDocCommentOwner)) return false; - return ((PsiDocCommentOwner)element).isDeprecated(); - } + @Override + public int getAccessLevel() { + int result = PsiUtil.ACCESS_LEVEL_PRIVATE; + if (getGetter() != null) { + result = Math.max(result, PsiUtil.getAccessLevel(getGetter().getModifierList())); + } + if (getSetter() != null) { + result = Math.max(result, PsiUtil.getAccessLevel(getSetter().getModifierList())); + } + if (getField() != null) { + result = Math.max(result, PsiUtil.getAccessLevel(getField().getModifierList())); + } + return result; + } - public boolean isComplete() { - return getGetter() != null || getSetter() != null; - } + @Override + public int getSubLevel() { + return 0; + } - public Object getValue() { - return this; - } + public void setField(PsiField field) { + myFieldPointer = SmartPointerManager.getInstance(myProject).createSmartPsiElementPointer(field); + myIsStatic &= field.isStatic(); + } + + public void setGetter(PsiMethod getter) { + myGetterPointer = SmartPointerManager.getInstance(myProject).createSmartPsiElementPointer(getter); + myIsStatic &= getter.isStatic(); + } - public int getWeight() { - return 60; - } + public void setSetter(PsiMethod setter) { + mySetterPointer = SmartPointerManager.getInstance(myProject).createSmartPsiElementPointer(setter); + myIsStatic &= setter.isStatic(); + } + + @RequiredReadAction + public PsiField getField() { + return (PsiField) (myFieldPointer == null ? null : myFieldPointer.getElement()); + } + + @RequiredReadAction + public PsiMethod getGetter() { + return (PsiMethod) (myGetterPointer == null ? null : myGetterPointer.getElement()); + } + + @RequiredReadAction + public PsiMethod getSetter() { + return (PsiMethod) (mySetterPointer == null ? null : mySetterPointer.getElement()); + } + + @RequiredReadAction + void copyAccessorsFrom(PropertyGroup group) { + if (group.getGetter() != null) { + setGetter(group.getGetter()); + } + if (group.getSetter() != null) { + setSetter(group.getSetter()); + } + if (group.getField() != null) { + setField(group.getField()); + } + myChildren.addAll(group.myChildren); + } + + @Override + @RequiredReadAction + public TextAttributesKey getTextAttributesKey() { + return isDeprecated() ? CodeInsightColors.DEPRECATED_ATTRIBUTES : null; + } + + @RequiredReadAction + private boolean isDeprecated() { + return isDeprecated(getField()) && isDeprecated(getGetter()) && isDeprecated(getSetter()); + } + + @RequiredReadAction + private static boolean isDeprecated(PsiElement element) { + return element != null + && element.isValid() + && element instanceof PsiDocCommentOwner docCommentOwner + && docCommentOwner.isDeprecated(); + } + + @RequiredReadAction + public boolean isComplete() { + return getGetter() != null || getSetter() != null; + } + + public Object getValue() { + return this; + } + + @Override + public int getWeight() { + return 60; + } } diff --git a/plugin/src/main/java/com/intellij/java/impl/ide/structureView/impl/java/PsiFieldTreeElement.java b/plugin/src/main/java/com/intellij/java/impl/ide/structureView/impl/java/PsiFieldTreeElement.java index 4d907528e7..a3a020bef8 100644 --- a/plugin/src/main/java/com/intellij/java/impl/ide/structureView/impl/java/PsiFieldTreeElement.java +++ b/plugin/src/main/java/com/intellij/java/impl/ide/structureView/impl/java/PsiFieldTreeElement.java @@ -5,6 +5,7 @@ import com.intellij.java.language.psi.PsiEnumConstantInitializer; import com.intellij.java.language.psi.PsiField; import com.intellij.java.language.psi.PsiSubstitutor; +import consulo.annotation.access.RequiredReadAction; import consulo.fileEditor.structureView.StructureViewTreeElement; import consulo.fileEditor.structureView.tree.SortableTreeElement; import consulo.project.DumbService; @@ -16,23 +17,24 @@ import static com.intellij.java.language.psi.util.PsiFormatUtil.*; public class PsiFieldTreeElement extends JavaVariableBaseTreeElement implements SortableTreeElement { - public PsiFieldTreeElement(PsiField field, boolean isInherited) { - super(isInherited, field); - } + public PsiFieldTreeElement(PsiField field, boolean isInherited) { + super(isInherited, field); + } - @Override - public Collection getChildrenBase() { - PsiField field = getField(); - if (field instanceof PsiEnumConstant) { - PsiEnumConstantInitializer initializingClass = ((PsiEnumConstant)field).getInitializingClass(); - if (initializingClass != null) { - return JavaClassTreeElement.getClassChildren(initializingClass); - } + @Override + @RequiredReadAction + public Collection getChildrenBase() { + if (getField() instanceof PsiEnumConstant enumConstant) { + PsiEnumConstantInitializer initializingClass = enumConstant.getInitializingClass(); + if (initializingClass != null) { + return JavaClassTreeElement.getClassChildren(initializingClass); + } + } + return Collections.emptyList(); } - return Collections.emptyList(); - } - public PsiField getField() { - return getElement(); - } + @RequiredReadAction + public PsiField getField() { + return getElement(); + } } diff --git a/plugin/src/main/java/com/intellij/java/impl/ide/structureView/impl/java/PsiMethodTreeElement.java b/plugin/src/main/java/com/intellij/java/impl/ide/structureView/impl/java/PsiMethodTreeElement.java index f70ebeaba8..e8d9d61949 100644 --- a/plugin/src/main/java/com/intellij/java/impl/ide/structureView/impl/java/PsiMethodTreeElement.java +++ b/plugin/src/main/java/com/intellij/java/impl/ide/structureView/impl/java/PsiMethodTreeElement.java @@ -5,6 +5,7 @@ import com.intellij.java.language.psi.search.searches.SuperMethodsSearch; import com.intellij.java.language.psi.util.MethodSignatureBackedByPsiMethod; import com.intellij.java.language.psi.util.PsiFormatUtil; +import consulo.annotation.access.RequiredReadAction; import consulo.application.dumb.IndexNotReadyException; import consulo.application.util.registry.Registry; import consulo.codeEditor.CodeInsightColors; @@ -15,6 +16,7 @@ import consulo.language.psi.PsiCompiledElement; import consulo.language.psi.PsiFile; import consulo.language.psi.SyntheticElement; +import consulo.localize.LocalizeValue; import consulo.project.DumbService; import consulo.ui.ex.awt.UIUtil; import consulo.util.lang.StringUtil; @@ -27,118 +29,127 @@ import static com.intellij.java.language.psi.util.PsiFormatUtilBase.*; public class PsiMethodTreeElement extends JavaClassTreeElementBase implements SortableTreeElement { - public PsiMethodTreeElement(PsiMethod method, boolean isInherited) { - super(isInherited, method); - } - - @Override - public Collection getChildrenBase() { - List emptyResult = Collections.emptyList(); - PsiMethod element = getElement(); - if (element == null || element instanceof SyntheticElement || element instanceof LightElement) { - return emptyResult; + public PsiMethodTreeElement(PsiMethod method, boolean isInherited) { + super(isInherited, method); } - PsiFile psiFile = element.getContainingFile(); - if (psiFile == null || psiFile instanceof PsiCompiledElement) { - return emptyResult; - } - - final ArrayList result = new ArrayList<>(); + @Override + @RequiredReadAction + public Collection getChildrenBase() { + List emptyResult = Collections.emptyList(); + PsiMethod element = getElement(); + if (element == null || element instanceof SyntheticElement || element instanceof LightElement) { + return emptyResult; + } - element.accept(new JavaRecursiveElementWalkingVisitor() { - @Override - public void visitClass(PsiClass aClass) { - if (!(aClass instanceof PsiAnonymousClass) && !(aClass instanceof PsiTypeParameter)) { - result.add(new JavaClassTreeElement(aClass, isInherited())); + PsiFile psiFile = element.getContainingFile(); + if (psiFile == null || psiFile instanceof PsiCompiledElement) { + return emptyResult; } - } - }); - return result; - } - - @Override - public String getPresentableText() { - PsiMethod psiMethod = getElement(); - if (psiMethod == null) { - return ""; + + final ArrayList result = new ArrayList<>(); + + element.accept(new JavaRecursiveElementWalkingVisitor() { + @Override + public void visitClass(PsiClass aClass) { + if (!(aClass instanceof PsiAnonymousClass) && !(aClass instanceof PsiTypeParameter)) { + result.add(new JavaClassTreeElement(aClass, isInherited())); + } + } + }); + return result; } - boolean dumb = DumbService.isDumb(psiMethod.getProject()); - String method = PsiFormatUtil.formatMethod(psiMethod, - PsiSubstitutor.EMPTY, - SHOW_NAME | TYPE_AFTER | SHOW_PARAMETERS | (dumb ? 0 : SHOW_TYPE), - dumb ? SHOW_NAME : SHOW_TYPE); - return StringUtil.replace(method, ":", ": "); - } - - - @Override - public String getLocationString() { - if (!Registry.is("show.method.base.class.in.java.file.structure")) { - return null; + + @Override + @RequiredReadAction + public LocalizeValue getPresentableText() { + PsiMethod psiMethod = getElement(); + if (psiMethod == null) { + return LocalizeValue.empty(); + } + boolean dumb = DumbService.isDumb(psiMethod.getProject()); + String method = PsiFormatUtil.formatMethod( + psiMethod, + PsiSubstitutor.EMPTY, + SHOW_NAME | TYPE_AFTER | SHOW_PARAMETERS | (dumb ? 0 : SHOW_TYPE), + dumb ? SHOW_NAME : SHOW_TYPE + ); + return LocalizeValue.of(StringUtil.replace(method, ":", ": ")); } - PsiMethod method = getElement(); - if (myLocation == null && method != null && !DumbService.isDumb(method.getProject())) { - if (isInherited()) { - return super.getLocationString(); - } else { - try { - MethodSignatureBackedByPsiMethod baseMethod = SuperMethodsSearch.search(method, null, true, false).findFirst(); - if (baseMethod != null && !method.isEquivalentTo(baseMethod.getMethod())) { - PsiMethod base = baseMethod.getMethod(); - PsiClass baseClass = base.getContainingClass(); - if (baseClass != null /*&& !CommonClassNames.JAVA_LANG_OBJECT.equals(baseClass.getQualifiedName())*/) { - if (baseClass.getMethods().length > 1) { - myLocation = baseClass.getName(); - } + + @Override + @RequiredReadAction + public String getLocationString() { + if (!Registry.is("show.method.base.class.in.java.file.structure")) { + return null; + } + PsiMethod method = getElement(); + if (myLocation == null && method != null && !DumbService.isDumb(method.getProject())) { + if (isInherited()) { + return super.getLocationString(); + } + else { + try { + MethodSignatureBackedByPsiMethod baseMethod = SuperMethodsSearch.search(method, null, true, false).findFirst(); + if (baseMethod != null && !method.isEquivalentTo(baseMethod.getMethod())) { + PsiMethod base = baseMethod.getMethod(); + PsiClass baseClass = base.getContainingClass(); + if (baseClass != null /*&& !CommonClassNames.JAVA_LANG_OBJECT.equals(baseClass.getQualifiedName())*/) { + if (baseClass.getMethods().length > 1) { + myLocation = baseClass.getName(); + } + } + } + } + catch (IndexNotReadyException e) { + //some searchers (EJB) require indices. What shall we do? + } + + if (StringUtil.isEmpty(myLocation)) { + myLocation = ""; + } + else { + char upArrow = '\u2191'; + myLocation = UIUtil.getLabelFont().canDisplay(upArrow) ? upArrow + myLocation : myLocation; + } } - } - } catch (IndexNotReadyException e) { - //some searchers (EJB) require indices. What shall we do? } + return StringUtil.isEmpty(myLocation) ? null : myLocation; + } - if (StringUtil.isEmpty(myLocation)) { - myLocation = ""; - } else { - char upArrow = '\u2191'; - myLocation = UIUtil.getLabelFont().canDisplay(upArrow) ? upArrow + myLocation : myLocation; + @Override + public TextAttributesKey getTextAttributesKey() { + if (isInherited()) { + return CodeInsightColors.NOT_USED_ELEMENT_ATTRIBUTES; } - } + return super.getTextAttributesKey(); } - return StringUtil.isEmpty(myLocation) ? null : myLocation; - } - @Override - public TextAttributesKey getTextAttributesKey() { - if (isInherited()) { - return CodeInsightColors.NOT_USED_ELEMENT_ATTRIBUTES; + @RequiredReadAction + public PsiMethod getMethod() { + return getElement(); } - return super.getTextAttributesKey(); - } - - public PsiMethod getMethod() { - return getElement(); - } - - @Override - public String getAlphaSortKey() { - PsiMethod method = getElement(); - if (method != null) { - return method.getName() + " " + StringUtil.join(method.getParameterList().getParameters(), psiParameter -> { - PsiTypeElement typeElement = psiParameter.getTypeElement(); - return typeElement != null ? typeElement.getText() : ""; - }, " "); + + @Override + @RequiredReadAction + public String getAlphaSortKey() { + PsiMethod method = getElement(); + if (method != null) { + return method.getName() + " " + StringUtil.join(method.getParameterList().getParameters(), psiParameter -> { + PsiTypeElement typeElement = psiParameter.getTypeElement(); + return typeElement != null ? typeElement.getText() : ""; + }, " "); + } + return ""; + } + + @Override + public String getLocationPrefix() { + return " "; + } + + @Override + public String getLocationSuffix() { + return ""; } - return ""; - } - - @Override - public String getLocationPrefix() { - return " "; - } - - @Override - public String getLocationSuffix() { - return ""; - } } diff --git a/plugin/src/main/java/com/intellij/java/impl/ide/structureView/impl/java/SuperTypeGroup.java b/plugin/src/main/java/com/intellij/java/impl/ide/structureView/impl/java/SuperTypeGroup.java index 3ffd2d5686..f9c9b52c06 100644 --- a/plugin/src/main/java/com/intellij/java/impl/ide/structureView/impl/java/SuperTypeGroup.java +++ b/plugin/src/main/java/com/intellij/java/impl/ide/structureView/impl/java/SuperTypeGroup.java @@ -19,111 +19,117 @@ import com.intellij.java.language.psi.PsiModifierList; import com.intellij.java.language.psi.util.PsiUtil; import consulo.annotation.access.RequiredReadAction; -import consulo.application.AllIcons; import consulo.fileEditor.structureView.tree.Group; import consulo.fileEditor.structureView.tree.TreeElement; import consulo.ide.localize.IdeLocalize; import consulo.language.psi.SmartPointerManager; import consulo.language.psi.SmartPsiElementPointer; +import consulo.localize.LocalizeValue; import consulo.navigation.ItemPresentation; +import consulo.platform.base.icon.PlatformIconGroup; import consulo.ui.image.Image; import org.jspecify.annotations.Nullable; import java.util.ArrayList; import java.util.Collection; +import java.util.Objects; -public class SuperTypeGroup implements Group, ItemPresentation, AccessLevelProvider{ - private final SmartPsiElementPointer mySuperClassPointer; - private final OwnershipType myOverrides; - private final Collection myChildren = new ArrayList<>(); - - public static enum OwnershipType { - IMPLEMENTS, - OVERRIDES, - INHERITS - } - - public SuperTypeGroup(PsiClass superClass, OwnershipType type) { - myOverrides = type; - mySuperClassPointer = SmartPointerManager.getInstance(superClass.getProject()).createSmartPsiElementPointer(superClass); - } - - public Collection getChildren() { - return myChildren; - } - - @Nullable - @RequiredReadAction - private PsiClass getSuperClass() { - return (PsiClass)mySuperClassPointer.getElement(); - } - - public ItemPresentation getPresentation() { - return this; - } - - public Image getIcon() { - switch (myOverrides) { - case IMPLEMENTS: - return AllIcons.General.ImplementingMethod; - case INHERITS: - return AllIcons.General.InheritedMethod; - case OVERRIDES: - return AllIcons.General.OverridingMethod; +public class SuperTypeGroup implements Group, ItemPresentation, AccessLevelProvider { + private final SmartPsiElementPointer mySuperClassPointer; + private final OwnershipType myOverrides; + private final Collection myChildren = new ArrayList<>(); + + public static enum OwnershipType { + IMPLEMENTS(PlatformIconGroup.gutterImplementingmethod()), + OVERRIDES(PlatformIconGroup.gutterOverridingmethod()), + INHERITS(PlatformIconGroup.hierarchySubtypes()); + + private final Image myIcon; + + private OwnershipType(Image icon) { + myIcon = icon; + } + + public Image getIcon() { + return myIcon; + } + } + + public SuperTypeGroup(PsiClass superClass, OwnershipType type) { + myOverrides = type; + mySuperClassPointer = SmartPointerManager.getInstance(superClass.getProject()).createSmartPsiElementPointer(superClass); + } + + @Override + public Collection getChildren() { + return myChildren; + } + + @Nullable + @RequiredReadAction + private PsiClass getSuperClass() { + return (PsiClass) mySuperClassPointer.getElement(); + } + + @Override + public ItemPresentation getPresentation() { + return this; + } + + @Override + public Image getIcon() { + return myOverrides.getIcon(); + } + + @Override + public String getLocationString() { + return null; } - return null; // Can't be - } - - public String getLocationString() { - return null; - } - - @RequiredReadAction - public String getPresentableText() { - return toString(); - } - - @RequiredReadAction - public String toString() { - PsiClass superClass = getSuperClass(); - return superClass != null ? superClass.getName() : IdeLocalize.nodeStructureviewInvalid().get(); - } - - @RequiredReadAction - public boolean equals(Object o) { - if (this == o) return true; - if (!(o instanceof SuperTypeGroup)) return false; - - SuperTypeGroup superTypeGroup = (SuperTypeGroup)o; - - if (myOverrides != superTypeGroup.myOverrides) return false; - PsiClass superClass = getSuperClass(); - return superClass != null ? superClass.equals(superTypeGroup.getSuperClass()) : superTypeGroup.getSuperClass() == null; - } - - @RequiredReadAction - public int hashCode() { - PsiClass superClass = getSuperClass(); - return superClass != null ? superClass .hashCode() : 0; - } - - public Object getValue() { - return this; - } - - @RequiredReadAction - public int getAccessLevel() { - PsiClass superClass = getSuperClass(); - PsiModifierList modifierList = superClass == null ? null : superClass.getModifierList(); - return modifierList == null ? PsiUtil.ACCESS_LEVEL_PUBLIC : PsiUtil.getAccessLevel(modifierList); - } - - public int getSubLevel() { - return 1; - } - - public void addMethod(TreeElement superMethod) { - myChildren.add(superMethod); - } + @Override + @RequiredReadAction + public LocalizeValue getPresentableText() { + PsiClass superClass = getSuperClass(); + return superClass != null ? LocalizeValue.ofNullable(superClass.getName()) : IdeLocalize.nodeStructureviewInvalid(); + } + + @Override + @RequiredReadAction + public String toString() { + return getPresentableText().get(); + } + + @Override + @RequiredReadAction + public boolean equals(@Nullable Object o) { + return this == o + || o instanceof SuperTypeGroup that && myOverrides == that.myOverrides && Objects.equals(getSuperClass(), that.getSuperClass()); + } + + @Override + @RequiredReadAction + public int hashCode() { + return Objects.hashCode(getSuperClass()); + } + + public Object getValue() { + return this; + } + + @Override + @RequiredReadAction + public int getAccessLevel() { + PsiClass superClass = getSuperClass(); + PsiModifierList modifierList = superClass == null ? null : superClass.getModifierList(); + return modifierList == null ? PsiUtil.ACCESS_LEVEL_PUBLIC : PsiUtil.getAccessLevel(modifierList); + } + + @Override + public int getSubLevel() { + return 1; + } + + public void addMethod(TreeElement superMethod) { + myChildren.add(superMethod); + } } diff --git a/plugin/src/main/java/com/intellij/java/impl/ide/util/JavaDeleteTypeDescriptionProvider.java b/plugin/src/main/java/com/intellij/java/impl/ide/util/JavaDeleteTypeDescriptionProvider.java index 54e372a9e6..d64fb8dfad 100644 --- a/plugin/src/main/java/com/intellij/java/impl/ide/util/JavaDeleteTypeDescriptionProvider.java +++ b/plugin/src/main/java/com/intellij/java/impl/ide/util/JavaDeleteTypeDescriptionProvider.java @@ -22,29 +22,34 @@ import consulo.language.psi.ElementDescriptionLocation; import consulo.language.psi.ElementDescriptionProvider; import consulo.language.psi.PsiElement; +import consulo.localize.LocalizeValue; /** * @author yole */ @ExtensionImpl public class JavaDeleteTypeDescriptionProvider implements ElementDescriptionProvider { - public String getElementDescription(PsiElement element, ElementDescriptionLocation location) { - if (location instanceof DeleteTypeDescriptionLocation deleteTypeDescriptionLocation && deleteTypeDescriptionLocation.isPlural()) { - if (element instanceof PsiMethod) { - return IdeLocalize.promptDeleteMethod(2).get(); - } else if (element instanceof PsiField) { - return IdeLocalize.promptDeleteField(2).get(); - } else if (element instanceof PsiClass psiClass) { - if (psiClass.isInterface()) { - return IdeLocalize.promptDeleteInterface(2).get(); + @Override + public LocalizeValue getElementDescription(PsiElement element, ElementDescriptionLocation location) { + if (location instanceof DeleteTypeDescriptionLocation deleteTypeDescriptionLocation && deleteTypeDescriptionLocation.isPlural()) { + if (element instanceof PsiMethod) { + return IdeLocalize.promptDeleteMethod(2); + } + else if (element instanceof PsiField) { + return IdeLocalize.promptDeleteField(2); + } + else if (element instanceof PsiClass psiClass) { + if (psiClass.isInterface()) { + return IdeLocalize.promptDeleteInterface(2); + } + return element instanceof PsiTypeParameter + ? IdeLocalize.promptDeleteTypeParameter(2) + : IdeLocalize.promptDeleteClass(2); + } + else if (element instanceof PsiJavaPackage) { + return IdeLocalize.promptDeletePackage(2); + } } - return element instanceof PsiTypeParameter - ? IdeLocalize.promptDeleteTypeParameter(2).get() - : IdeLocalize.promptDeleteClass(2).get(); - } else if (element instanceof PsiJavaPackage) { - return IdeLocalize.promptDeletePackage(2).get(); - } + return LocalizeValue.empty(); } - return null; - } } diff --git a/plugin/src/main/java/com/intellij/java/impl/refactoring/extractclass/ExtractEnumProcessor.java b/plugin/src/main/java/com/intellij/java/impl/refactoring/extractclass/ExtractEnumProcessor.java index 4218453d49..62f60e5c4e 100644 --- a/plugin/src/main/java/com/intellij/java/impl/refactoring/extractclass/ExtractEnumProcessor.java +++ b/plugin/src/main/java/com/intellij/java/impl/refactoring/extractclass/ExtractEnumProcessor.java @@ -124,7 +124,7 @@ public List findEnumConstantUsages(List fiel result.add(new ConflictUsageInfo( expression, LocalizeValue.localizeTODO( - StringUtil.capitalize(RefactoringUIUtil.getDescription(element, false)) + " is out of project" + RefactoringUIUtil.getDescription(element, false).capitalize().get() + " is out of project" ) )); } diff --git a/plugin/src/main/java/com/intellij/java/impl/refactoring/inheritanceToDelegation/InheritanceToDelegationProcessor.java b/plugin/src/main/java/com/intellij/java/impl/refactoring/inheritanceToDelegation/InheritanceToDelegationProcessor.java index 123ce7060f..e2f173d3bb 100644 --- a/plugin/src/main/java/com/intellij/java/impl/refactoring/inheritanceToDelegation/InheritanceToDelegationProcessor.java +++ b/plugin/src/main/java/com/intellij/java/impl/refactoring/inheritanceToDelegation/InheritanceToDelegationProcessor.java @@ -234,7 +234,7 @@ private void analyzeConflicts(UsageInfo[] usage, MultiMap RefactoringUIUtil.getDescription(psiClass, false), + psiClass -> RefactoringUIUtil.getDescription(psiClass, false).get(), "," ) ) @@ -392,8 +393,8 @@ public static void addInaccessibleMemberConflicts( for (PsiMember container : containers) { Set referencedInaccessible = containersToReferenced.get(container); for (PsiMember referenced : referencedInaccessible) { - String referencedDescription = RefactoringUIUtil.getDescription(referenced, true); - String containerDescription = RefactoringUIUtil.getDescription(container, true); + LocalizeValue referencedDescription = RefactoringUIUtil.getDescription(referenced, true); + LocalizeValue containerDescription = RefactoringUIUtil.getDescription(container, true); LocalizeValue message = RefactoringLocalize.zeroThatIsUsedInInlinedMethodIsNotAccessibleFromCallSiteSIn1( referencedDescription, containerDescription diff --git a/plugin/src/main/java/com/intellij/java/impl/refactoring/makeStatic/MakeMethodOrClassStaticProcessor.java b/plugin/src/main/java/com/intellij/java/impl/refactoring/makeStatic/MakeMethodOrClassStaticProcessor.java index 340d78a144..35009b7bff 100644 --- a/plugin/src/main/java/com/intellij/java/impl/refactoring/makeStatic/MakeMethodOrClassStaticProcessor.java +++ b/plugin/src/main/java/com/intellij/java/impl/refactoring/makeStatic/MakeMethodOrClassStaticProcessor.java @@ -138,14 +138,14 @@ protected MultiMap getConflictDescriptions(UsageInfo[ processed.add(referencedElement); if (referencedElement instanceof PsiField field) { if (mySettings.getNameForField(field) == null) { - String description = RefactoringUIUtil.getDescription(field, true); + LocalizeValue description = RefactoringUIUtil.getDescription(field, true); LocalizeValue message = RefactoringLocalize.zeroUsesNonStatic1WhichIsNotPassedAsAParameter(typeString, description); conflicts.putValue(field, message); } } else { - String description = RefactoringUIUtil.getDescription(referencedElement, true); + LocalizeValue description = RefactoringUIUtil.getDescription(referencedElement, true); LocalizeValue message = RefactoringLocalize.zeroUses1WhichNeedsClassInstance(typeString, description); conflicts.putValue(referencedElement, message); } diff --git a/plugin/src/main/java/com/intellij/java/impl/refactoring/move/moveClassesOrPackages/MoveClassToInnerProcessor.java b/plugin/src/main/java/com/intellij/java/impl/refactoring/move/moveClassesOrPackages/MoveClassToInnerProcessor.java index ffb046b274..d99eed3fa3 100644 --- a/plugin/src/main/java/com/intellij/java/impl/refactoring/move/moveClassesOrPackages/MoveClassToInnerProcessor.java +++ b/plugin/src/main/java/com/intellij/java/impl/refactoring/move/moveClassesOrPackages/MoveClassToInnerProcessor.java @@ -355,7 +355,7 @@ public synchronized void addConflict(PsiElement targetElement, PsiElement source myReportedContainers.add(container); String targetDescription = (targetElement == myClassToMove) ? "Class " + CommonRefactoringUtil.htmlEmphasize(myClassToMove.getName()) - : StringUtil.capitalize(RefactoringUIUtil.getDescription(targetElement, true)); + : RefactoringUIUtil.getDescription(targetElement, true).capitalize().get(); LocalizeValue message = RefactoringLocalize.elementWillNoLongerBeAccessible( targetDescription, RefactoringUIUtil.getDescription(container, true) diff --git a/plugin/src/main/java/com/intellij/java/impl/refactoring/move/moveClassesOrPackages/MoveDirectoryWithClassesProcessor.java b/plugin/src/main/java/com/intellij/java/impl/refactoring/move/moveClassesOrPackages/MoveDirectoryWithClassesProcessor.java index c34413c2d8..e58b69313a 100644 --- a/plugin/src/main/java/com/intellij/java/impl/refactoring/move/moveClassesOrPackages/MoveDirectoryWithClassesProcessor.java +++ b/plugin/src/main/java/com/intellij/java/impl/refactoring/move/moveClassesOrPackages/MoveDirectoryWithClassesProcessor.java @@ -102,7 +102,7 @@ protected UsageViewDescriptor createUsageViewDescriptor(UsageInfo[] usages) { } protected String getTargetName() { - return RefactoringUIUtil.getDescription(getTargetDirectory(null).getTargetDirectory(), false); + return RefactoringUIUtil.getDescription(getTargetDirectory(null).getTargetDirectory(), false).get(); } @Override diff --git a/plugin/src/main/java/com/intellij/java/impl/refactoring/move/moveInner/MoveInnerProcessor.java b/plugin/src/main/java/com/intellij/java/impl/refactoring/move/moveInner/MoveInnerProcessor.java index cf98e9fabc..5d3992c5bb 100644 --- a/plugin/src/main/java/com/intellij/java/impl/refactoring/move/moveInner/MoveInnerProcessor.java +++ b/plugin/src/main/java/com/intellij/java/impl/refactoring/move/moveInner/MoveInnerProcessor.java @@ -393,11 +393,11 @@ private static void registerConflict( containerSet.add(resolved); String placesDescription; if (containerSet.size() == 1) { - placesDescription = RefactoringUIUtil.getDescription(resolved, true); + placesDescription = RefactoringUIUtil.getDescription(resolved, true).get(); } else { placesDescription = "
  1. " + - StringUtil.join(containerSet, element -> RefactoringUIUtil.getDescription(element, true), "
  2. ") + + StringUtil.join(containerSet, element -> RefactoringUIUtil.getDescription(element, true).get(), "
  3. ") + "
"; } LocalizeValue message = diff --git a/plugin/src/main/java/com/intellij/java/impl/refactoring/rename/LocalHidesRenamedLocalUsageInfo.java b/plugin/src/main/java/com/intellij/java/impl/refactoring/rename/LocalHidesRenamedLocalUsageInfo.java index 308d6dd02b..be2785290c 100644 --- a/plugin/src/main/java/com/intellij/java/impl/refactoring/rename/LocalHidesRenamedLocalUsageInfo.java +++ b/plugin/src/main/java/com/intellij/java/impl/refactoring/rename/LocalHidesRenamedLocalUsageInfo.java @@ -40,7 +40,7 @@ public LocalHidesRenamedLocalUsageInfo(PsiElement element, PsiElement conflictin public LocalizeValue getDescription() { PsiElement element = getElement(); String type = element == null ? "element" : UsageViewUtil.getType(element); - String elemDescr = RefactoringUIUtil.getDescription(myConflictingElement, true); + LocalizeValue elemDescr = RefactoringUIUtil.getDescription(myConflictingElement, true); return RefactoringLocalize.thereIsAlreadyA0ItWillConflictWithTheRenamed1(elemDescr, type); } } diff --git a/plugin/src/main/java/com/intellij/java/impl/refactoring/replaceConstructorWithFactory/ReplaceConstructorWithFactoryProcessor.java b/plugin/src/main/java/com/intellij/java/impl/refactoring/replaceConstructorWithFactory/ReplaceConstructorWithFactoryProcessor.java index 0bb9a025d4..b4489e17d3 100644 --- a/plugin/src/main/java/com/intellij/java/impl/refactoring/replaceConstructorWithFactory/ReplaceConstructorWithFactoryProcessor.java +++ b/plugin/src/main/java/com/intellij/java/impl/refactoring/replaceConstructorWithFactory/ReplaceConstructorWithFactoryProcessor.java @@ -159,7 +159,7 @@ protected boolean preprocessUsages(SimpleReference refUsages) { } Set reportedContainers = new HashSet<>(); - String targetClassDescription = RefactoringUIUtil.getDescription(myTargetClass, true); + LocalizeValue targetClassDescription = RefactoringUIUtil.getDescription(myTargetClass, true); for (UsageInfo usage : usages) { PsiElement container = ConflictsUtil.getContainer(usage.getElement()); if (!reportedContainers.contains(container)) { diff --git a/plugin/src/main/java/com/intellij/java/impl/refactoring/util/ConflictsUtil.java b/plugin/src/main/java/com/intellij/java/impl/refactoring/util/ConflictsUtil.java index 0808ebb642..ca1a88b01c 100644 --- a/plugin/src/main/java/com/intellij/java/impl/refactoring/util/ConflictsUtil.java +++ b/plugin/src/main/java/com/intellij/java/impl/refactoring/util/ConflictsUtil.java @@ -72,8 +72,8 @@ public static void checkMethodConflicts( if (method != null && method != refactoredMethod) { if (aClass.equals(method.getContainingClass())) { - String classDescr = aClass instanceof PsiAnonymousClass - ? RefactoringLocalize.currentClass().get() + LocalizeValue classDescr = aClass instanceof PsiAnonymousClass + ? RefactoringLocalize.currentClass() : RefactoringUIUtil.getDescription(aClass, false); conflicts.putValue( method, @@ -130,23 +130,21 @@ public static void checkFieldConflicts(@Nullable PsiClass aClass, String newName PsiField existingField = aClass != null ? aClass.findFieldByName(newName, true) : null; if (existingField != null) { if (aClass.equals(existingField.getContainingClass())) { - String className = aClass instanceof PsiAnonymousClass - ? RefactoringLocalize.currentClass().get() + LocalizeValue className = aClass instanceof PsiAnonymousClass + ? RefactoringLocalize.currentClass() : RefactoringUIUtil.getDescription(aClass, false); LocalizeValue conflict = RefactoringLocalize.field0IsAlreadyDefinedInThe1(existingField.getName(), className); conflicts.putValue(existingField, conflict); } - else { // method somewhere in base class - if (!existingField.isPrivate()) { - String fieldInfo = PsiFormatUtil.formatVariable( - existingField, - PsiFormatUtil.SHOW_NAME | PsiFormatUtil.SHOW_TYPE | PsiFormatUtil.TYPE_AFTER, - PsiSubstitutor.EMPTY - ); - String className = RefactoringUIUtil.getDescription(existingField.getContainingClass(), false); - LocalizeValue descr = RefactoringLocalize.field0WillHideField1OfTheBaseClass(newName, fieldInfo, className); - conflicts.putValue(existingField, descr); - } + else if (!existingField.isPrivate()) { // method somewhere in base class + String fieldInfo = PsiFormatUtil.formatVariable( + existingField, + PsiFormatUtil.SHOW_NAME | PsiFormatUtil.SHOW_TYPE | PsiFormatUtil.TYPE_AFTER, + PsiSubstitutor.EMPTY + ); + LocalizeValue className = RefactoringUIUtil.getDescription(existingField.getContainingClass(), false); + LocalizeValue descr = RefactoringLocalize.field0WillHideField1OfTheBaseClass(newName, fieldInfo, className); + conflicts.putValue(existingField, descr); } } } diff --git a/plugin/src/main/java/com/intellij/java/impl/refactoring/util/JavaNonCodeSearchElementDescriptionProvider.java b/plugin/src/main/java/com/intellij/java/impl/refactoring/util/JavaNonCodeSearchElementDescriptionProvider.java index 404102d478..ac7cebe5fc 100644 --- a/plugin/src/main/java/com/intellij/java/impl/refactoring/util/JavaNonCodeSearchElementDescriptionProvider.java +++ b/plugin/src/main/java/com/intellij/java/impl/refactoring/util/JavaNonCodeSearchElementDescriptionProvider.java @@ -18,39 +18,50 @@ import com.intellij.java.language.psi.PsiClass; import com.intellij.java.language.psi.PsiJavaPackage; import com.intellij.java.language.psi.PsiMember; +import consulo.annotation.access.RequiredReadAction; import consulo.annotation.component.ExtensionImpl; -import consulo.util.lang.StringUtil; +import consulo.language.editor.refactoring.util.NonCodeSearchDescriptionLocation; import consulo.language.psi.ElementDescriptionLocation; import consulo.language.psi.ElementDescriptionProvider; import consulo.language.psi.PsiElement; -import consulo.language.editor.refactoring.util.NonCodeSearchDescriptionLocation; +import consulo.localize.LocalizeValue; /** * @author yole */ @ExtensionImpl public class JavaNonCodeSearchElementDescriptionProvider implements ElementDescriptionProvider { - @Override - public String getElementDescription(PsiElement element, ElementDescriptionLocation location) { - if (!(location instanceof NonCodeSearchDescriptionLocation)) return null; - NonCodeSearchDescriptionLocation ncdLocation = (NonCodeSearchDescriptionLocation) location; - if (element instanceof PsiJavaPackage) { - return ncdLocation.isNonJava() ? ((PsiJavaPackage) element).getQualifiedName() : StringUtil.notNullize(((PsiJavaPackage) element).getName()); - } - if (element instanceof PsiClass) { - return ncdLocation.isNonJava() ? ((PsiClass) element).getQualifiedName() : ((PsiClass) element).getName(); - } - if (element instanceof PsiMember) { - PsiMember member = (PsiMember) element; - String name = member.getName(); - if (name == null) return null; - if (!ncdLocation.isNonJava()) { - return name; - } - PsiClass containingClass = member.getContainingClass(); - if (containingClass == null || containingClass.getQualifiedName() == null) return null; - return containingClass.getQualifiedName() + "." + name; + @Override + @RequiredReadAction + public LocalizeValue getElementDescription(PsiElement element, ElementDescriptionLocation location) { + if (!(location instanceof NonCodeSearchDescriptionLocation)) { + return LocalizeValue.empty(); + } + NonCodeSearchDescriptionLocation ncdLocation = (NonCodeSearchDescriptionLocation) location; + if (element instanceof PsiJavaPackage javaPackage) { + return ncdLocation.isNonJava() + ? LocalizeValue.ofNullable(javaPackage.getQualifiedName()) + : LocalizeValue.ofNullable(javaPackage.getName()); + } + if (element instanceof PsiClass psiClass) { + return ncdLocation.isNonJava() + ? LocalizeValue.ofNullable(psiClass.getQualifiedName()) + : LocalizeValue.ofNullable(psiClass.getName()); + } + if (element instanceof PsiMember member) { + String name = member.getName(); + if (name == null) { + return LocalizeValue.empty(); + } + if (!ncdLocation.isNonJava()) { + return LocalizeValue.of(name); + } + PsiClass containingClass = member.getContainingClass(); + if (containingClass == null || containingClass.getQualifiedName() == null) { + return LocalizeValue.empty(); + } + return LocalizeValue.of(containingClass.getQualifiedName() + "." + name); + } + return LocalizeValue.empty(); } - return null; - } } diff --git a/plugin/src/main/java/com/intellij/java/impl/refactoring/util/JavaRefactoringElementDescriptionProvider.java b/plugin/src/main/java/com/intellij/java/impl/refactoring/util/JavaRefactoringElementDescriptionProvider.java index d85b9bc746..9859120d76 100644 --- a/plugin/src/main/java/com/intellij/java/impl/refactoring/util/JavaRefactoringElementDescriptionProvider.java +++ b/plugin/src/main/java/com/intellij/java/impl/refactoring/util/JavaRefactoringElementDescriptionProvider.java @@ -17,6 +17,7 @@ import com.intellij.java.language.psi.*; import com.intellij.java.language.psi.util.PsiFormatUtil; +import consulo.annotation.access.RequiredReadAction; import consulo.annotation.component.ExtensionImpl; import consulo.language.editor.refactoring.localize.RefactoringLocalize; import consulo.language.editor.refactoring.util.CommonRefactoringUtil; @@ -25,62 +26,76 @@ import consulo.language.psi.ElementDescriptionLocation; import consulo.language.psi.ElementDescriptionProvider; import consulo.language.psi.PsiElement; +import consulo.localize.LocalizeValue; @ExtensionImpl public class JavaRefactoringElementDescriptionProvider implements ElementDescriptionProvider { - public String getElementDescription(PsiElement element, ElementDescriptionLocation location) { - if (!(location instanceof RefactoringDescriptionLocation)) return null; - RefactoringDescriptionLocation rdLocation = (RefactoringDescriptionLocation) location; + @Override + @RequiredReadAction + public LocalizeValue getElementDescription(PsiElement element, ElementDescriptionLocation location) { + if (!(location instanceof RefactoringDescriptionLocation rdLocation)) { + return LocalizeValue.empty(); + } - if (element instanceof PsiField field) { - int options = PsiFormatUtil.SHOW_NAME; - if (rdLocation.includeParent()) { - options |= PsiFormatUtil.SHOW_CONTAINING_CLASS; - } - String fieldEmphasized = CommonRefactoringUtil.htmlEmphasize(PsiFormatUtil.formatVariable(field, options, PsiSubstitutor.EMPTY)); - return RefactoringLocalize.fieldDescription(fieldEmphasized).get(); - } + if (element instanceof PsiField field) { + int options = PsiFormatUtil.SHOW_NAME; + if (rdLocation.includeParent()) { + options |= PsiFormatUtil.SHOW_CONTAINING_CLASS; + } + String fieldEmphasized = CommonRefactoringUtil.htmlEmphasize(PsiFormatUtil.formatVariable( + field, + options, + PsiSubstitutor.EMPTY + )); + return RefactoringLocalize.fieldDescription(fieldEmphasized); + } - if (element instanceof PsiMethod method) { - int options = PsiFormatUtil.SHOW_NAME | PsiFormatUtil.SHOW_PARAMETERS; - if (rdLocation.includeParent()) { - options |= PsiFormatUtil.SHOW_CONTAINING_CLASS; - } - String empasizedMethod = - CommonRefactoringUtil.htmlEmphasize(PsiFormatUtil.formatMethod(method, PsiSubstitutor.EMPTY, options, PsiFormatUtil.SHOW_TYPE)); - return method.isConstructor() - ? RefactoringLocalize.constructorDescription(empasizedMethod).get() - : RefactoringLocalize.methodDescription(empasizedMethod).get(); - } + if (element instanceof PsiMethod method) { + int options = PsiFormatUtil.SHOW_NAME | PsiFormatUtil.SHOW_PARAMETERS; + if (rdLocation.includeParent()) { + options |= PsiFormatUtil.SHOW_CONTAINING_CLASS; + } + String emphasizedMethod = CommonRefactoringUtil.htmlEmphasize(PsiFormatUtil.formatMethod( + method, + PsiSubstitutor.EMPTY, + options, + PsiFormatUtil.SHOW_TYPE + )); + return method.isConstructor() + ? RefactoringLocalize.constructorDescription(emphasizedMethod) + : RefactoringLocalize.methodDescription(emphasizedMethod); + } - if (element instanceof PsiClassInitializer) { - PsiClassInitializer initializer = (PsiClassInitializer) element; - boolean isStatic = initializer.hasModifierProperty(PsiModifier.STATIC); - String elementDescription = getElementDescription(initializer.getContainingClass(), RefactoringDescriptionLocation.WITHOUT_PARENT); - return isStatic - ? RefactoringLocalize.staticInitializerDescription(elementDescription).get() - : RefactoringLocalize.instanceInitializerDescription(elementDescription).get(); - } + if (element instanceof PsiClassInitializer initializer) { + boolean isStatic = initializer.isStatic(); + LocalizeValue elementDescription = getElementDescription( + initializer.getContainingClass(), + RefactoringDescriptionLocation.WITHOUT_PARENT + ); + return isStatic + ? RefactoringLocalize.staticInitializerDescription(elementDescription) + : RefactoringLocalize.instanceInitializerDescription(elementDescription); + } - if (element instanceof PsiParameter parameter) { - String paramNameEmpasized = CommonRefactoringUtil.htmlEmphasize(parameter.getName()); - return parameter.getDeclarationScope() instanceof PsiForeachStatement - ? RefactoringLocalize.localVariableDescription(paramNameEmpasized).get() - : RefactoringLocalize.parameterDescription(paramNameEmpasized).get(); - } + if (element instanceof PsiParameter parameter) { + String paramNameEmphasized = CommonRefactoringUtil.htmlEmphasize(parameter.getName()); + return parameter.getDeclarationScope() instanceof PsiForeachStatement + ? RefactoringLocalize.localVariableDescription(paramNameEmphasized) + : RefactoringLocalize.parameterDescription(paramNameEmphasized); + } - if (element instanceof PsiLocalVariable localVariable) { - return RefactoringLocalize.localVariableDescription(CommonRefactoringUtil.htmlEmphasize(localVariable.getName())).get(); - } + if (element instanceof PsiLocalVariable localVariable) { + return RefactoringLocalize.localVariableDescription(CommonRefactoringUtil.htmlEmphasize(localVariable.getName())); + } - if (element instanceof PsiJavaPackage javaPackage) { - return RefactoringLocalize.packageDescription(CommonRefactoringUtil.htmlEmphasize(javaPackage.getName())).get(); - } + if (element instanceof PsiJavaPackage javaPackage) { + return RefactoringLocalize.packageDescription(CommonRefactoringUtil.htmlEmphasize(javaPackage.getName())); + } - if (element instanceof PsiClass psiClass) { - //TODO : local & anonymous - return RefactoringLocalize.classDescription(CommonRefactoringUtil.htmlEmphasize(DescriptiveNameUtil.getDescriptiveName(psiClass))).get(); + if (element instanceof PsiClass psiClass) { + //TODO : local & anonymous + return RefactoringLocalize.classDescription(CommonRefactoringUtil.htmlEmphasize(DescriptiveNameUtil.getDescriptiveName(psiClass))); + } + return LocalizeValue.empty(); } - return null; - } } diff --git a/plugin/src/main/java/com/intellij/java/impl/refactoring/util/RefactoringConflictsUtil.java b/plugin/src/main/java/com/intellij/java/impl/refactoring/util/RefactoringConflictsUtil.java index 4fe0c33294..658d3299e1 100644 --- a/plugin/src/main/java/com/intellij/java/impl/refactoring/util/RefactoringConflictsUtil.java +++ b/plugin/src/main/java/com/intellij/java/impl/refactoring/util/RefactoringConflictsUtil.java @@ -19,28 +19,27 @@ import com.intellij.java.language.psi.util.PsiUtil; import com.intellij.java.language.util.VisibilityUtil; import consulo.annotation.access.RequiredReadAction; +import consulo.java.localize.JavaRefactoringLocalize; import consulo.language.editor.refactoring.localize.RefactoringLocalize; -import consulo.localize.LocalizeValue; -import consulo.module.Module; -import consulo.module.content.util.ModuleContentUtil; -import consulo.project.Project; -import consulo.module.content.ModuleRootManager; -import consulo.module.content.ProjectRootManager; -import consulo.virtualFileSystem.VirtualFile; -import consulo.language.psi.*; +import consulo.language.editor.refactoring.ui.RefactoringUIUtil; +import consulo.language.editor.refactoring.util.CommonRefactoringUtil; import consulo.language.impl.psi.LightElement; +import consulo.language.psi.*; import consulo.language.psi.scope.GlobalSearchScope; import consulo.language.psi.scope.PsiSearchScopeUtil; import consulo.language.psi.search.ReferencesSearch; import consulo.language.psi.util.PsiTreeUtil; -import consulo.language.psi.PsiUtilCore; -import consulo.language.editor.refactoring.util.CommonRefactoringUtil; +import consulo.language.util.IncorrectOperationException; +import consulo.localize.LocalizeValue; +import consulo.module.Module; +import consulo.module.content.ModuleRootManager; +import consulo.module.content.ProjectRootManager; +import consulo.module.content.util.ModuleContentUtil; +import consulo.project.Project; import consulo.usage.MoveRenameUsageInfo; -import consulo.language.editor.refactoring.ui.RefactoringUIUtil; import consulo.usage.UsageInfo; -import consulo.language.util.IncorrectOperationException; import consulo.util.collection.MultiMap; - +import consulo.virtualFileSystem.VirtualFile; import org.jspecify.annotations.Nullable; import java.util.Collection; @@ -233,10 +232,10 @@ else if (newContext instanceof PsiClass psiClass if (fieldInSubClass != null && fieldInSubClass != refMember) { conflicts.putValue( refMember, - LocalizeValue.localizeTODO( - CommonRefactoringUtil.capitalize(RefactoringUIUtil.getDescription(fieldInSubClass, true)) + - " would hide " + RefactoringUIUtil.getDescription(refMember, true) + - " which is used by moved " + RefactoringUIUtil.getDescription(member, false) + JavaRefactoringLocalize.dialogMessage0WouldHideWhich1UsedByMoved2( + RefactoringUIUtil.getDescription(fieldInSubClass, true).capitalize(), + RefactoringUIUtil.getDescription(refMember, true), + RefactoringUIUtil.getDescription(member, false) ) ); } @@ -297,9 +296,9 @@ public void visitReferenceElement(PsiJavaCodeReferenceElement reference) { && !CommonRefactoringUtil.isAncestor(resolved, scopes) && !PsiSearchScopeUtil.isInScope(resolveScope, resolved) && !(resolved instanceof LightElement)) { - String scopeDescription = RefactoringUIUtil.getDescription(ConflictsUtil.getContainer(reference), true); + LocalizeValue scopeDescription = RefactoringUIUtil.getDescription(ConflictsUtil.getContainer(reference), true); LocalizeValue message = RefactoringLocalize.zeroReferencedIn1WillNotBeAccessibleInModule2( - CommonRefactoringUtil.capitalize(RefactoringUIUtil.getDescription(resolved, true)), + RefactoringUIUtil.getDescription(resolved, true).capitalize(), scopeDescription, CommonRefactoringUtil.htmlEmphasize(targetModule.getName()) ); @@ -332,7 +331,7 @@ public void visitReferenceElement(PsiJavaCodeReferenceElement reference) { else { container = usageFile; } - String scopeDescription = RefactoringUIUtil.getDescription(container, true); + LocalizeValue scopeDescription = RefactoringUIUtil.getDescription(container, true); VirtualFile usageVFile = usageFile.getVirtualFile(); if (usageVFile != null) { Module module = ProjectRootManager.getInstance(project).getFileIndex().getModuleForFile(usageVFile); @@ -342,7 +341,7 @@ public void visitReferenceElement(PsiJavaCodeReferenceElement reference) { ? moveRenameUsageInfo.getReferencedElement() : usage.getElement(); assert referencedElement != null : usage; - String description = RefactoringUIUtil.getDescription(referencedElement, true); + LocalizeValue description = RefactoringUIUtil.getDescription(referencedElement, true); String emphasizedName = CommonRefactoringUtil.htmlEmphasize(module.getName()); if (module == targetModule && isInTestSources) { message = RefactoringLocalize.zeroReferencedIn1WillNotBeAccessibleFromProductionOfModule2( diff --git a/plugin/src/main/java/com/intellij/java/impl/slicer/SliceManager.java b/plugin/src/main/java/com/intellij/java/impl/slicer/SliceManager.java index fcf60b60f5..ff569c5833 100644 --- a/plugin/src/main/java/com/intellij/java/impl/slicer/SliceManager.java +++ b/plugin/src/main/java/com/intellij/java/impl/slicer/SliceManager.java @@ -35,6 +35,7 @@ import consulo.language.psi.PsiManager; import consulo.language.psi.event.PsiTreeChangeAdapter; import consulo.language.psi.event.PsiTreeChangeEvent; +import consulo.localize.LocalizeValue; import consulo.project.Project; import consulo.project.ui.wm.ToolWindowManager; import consulo.ui.ex.awt.UIUtil; @@ -198,11 +199,10 @@ public static String getElementDescription(String prefix, PsiElement element, St if (elementToSlice == null) { elementToSlice = element; } - String desc = ElementDescriptionUtil.getElementDescription(elementToSlice, RefactoringDescriptionLocation.WITHOUT_PARENT); - return "" + UIUtil.getCssFontDeclaration(getLabelFont()) + "" + (prefix == null ? "" : prefix) + StringUtil.first( - desc, - 100, - true) + (suffix == null ? "" : suffix) + + LocalizeValue desc = ElementDescriptionUtil.getElementDescription(elementToSlice, RefactoringDescriptionLocation.WITHOUT_PARENT); + return "" + UIUtil.getCssFontDeclaration(getLabelFont()) + "" + (prefix == null ? "" : prefix) + + StringUtil.first(desc.get(), 100, true) + + (suffix == null ? "" : suffix) + ""; } diff --git a/plugin/src/main/java/com/intellij/java/impl/usageView/JavaUsageViewDescriptionProvider.java b/plugin/src/main/java/com/intellij/java/impl/usageView/JavaUsageViewDescriptionProvider.java index 1390cedf39..b87d68801a 100644 --- a/plugin/src/main/java/com/intellij/java/impl/usageView/JavaUsageViewDescriptionProvider.java +++ b/plugin/src/main/java/com/intellij/java/impl/usageView/JavaUsageViewDescriptionProvider.java @@ -17,50 +17,60 @@ import com.intellij.java.language.psi.*; import com.intellij.java.language.psi.util.PsiFormatUtil; +import consulo.annotation.access.RequiredReadAction; import consulo.annotation.component.ExtensionImpl; -import consulo.language.LangBundle; +import consulo.language.localize.LanguageLocalize; import consulo.language.psi.ElementDescriptionLocation; import consulo.language.psi.ElementDescriptionProvider; import consulo.language.psi.PsiElement; -import consulo.usage.UsageViewBundle; +import consulo.localize.LocalizeValue; import consulo.usage.UsageViewLongNameLocation; import consulo.usage.UsageViewShortNameLocation; - +import consulo.usage.localize.UsageLocalize; /** * @author yole */ @ExtensionImpl public class JavaUsageViewDescriptionProvider implements ElementDescriptionProvider { - public String getElementDescription(PsiElement element, ElementDescriptionLocation location) { - if (location instanceof UsageViewShortNameLocation) { - if (element instanceof PsiThrowStatement) { - return UsageViewBundle.message("usage.target.exception"); - } - } + @Override + @RequiredReadAction + public LocalizeValue getElementDescription(PsiElement element, ElementDescriptionLocation location) { + if (location instanceof UsageViewShortNameLocation) { + if (element instanceof PsiThrowStatement) { + return UsageLocalize.usageTargetException(); + } + } - if (location instanceof UsageViewLongNameLocation) { - if (element instanceof PsiJavaPackage) { - return ((PsiJavaPackage) element).getQualifiedName(); - } else if (element instanceof PsiClass) { - if (element instanceof PsiAnonymousClass) { - return LangBundle.message("java.terms.anonymous.class"); - } else { - String ret = ((PsiClass) element).getQualifiedName(); // It happens for local classes - if (ret == null) { - ret = ((PsiClass) element).getName(); - } - return ret; + if (location instanceof UsageViewLongNameLocation) { + if (element instanceof PsiJavaPackage javaPackage) { + return LocalizeValue.ofNullable(javaPackage.getQualifiedName()); + } + else if (element instanceof PsiClass psiClass) { + if (element instanceof PsiAnonymousClass) { + return LanguageLocalize.javaTermsAnonymousClass(); + } + else { + String ret = psiClass.getQualifiedName(); // It happens for local classes + if (ret == null) { + ret = psiClass.getName(); + } + return LocalizeValue.ofNullable(ret); + } + } + else if (element instanceof PsiVariable variable) { + return LocalizeValue.ofNullable(variable.getName()); + } + else if (element instanceof PsiMethod method) { + return LocalizeValue.of(PsiFormatUtil.formatMethod( + method, + PsiSubstitutor.EMPTY, + PsiFormatUtil.SHOW_NAME | PsiFormatUtil.SHOW_PARAMETERS, + PsiFormatUtil.SHOW_TYPE + )); + } } - } else if (element instanceof PsiVariable) { - return ((PsiVariable) element).getName(); - } else if (element instanceof PsiMethod) { - PsiMethod psiMethod = (PsiMethod) element; - return PsiFormatUtil.formatMethod(psiMethod, PsiSubstitutor.EMPTY, - PsiFormatUtil.SHOW_NAME | PsiFormatUtil.SHOW_PARAMETERS, PsiFormatUtil.SHOW_TYPE); - } - } - return null; - } + return LocalizeValue.empty(); + } } diff --git a/plugin/src/main/resources/LOCALIZE-LIB/en_US/consulo.java.JavaRefactoringLocalize.yaml b/plugin/src/main/resources/LOCALIZE-LIB/en_US/consulo.java.JavaRefactoringLocalize.yaml index 1c79fddca1..ee31aec15c 100644 --- a/plugin/src/main/resources/LOCALIZE-LIB/en_US/consulo.java.JavaRefactoringLocalize.yaml +++ b/plugin/src/main/resources/LOCALIZE-LIB/en_US/consulo.java.JavaRefactoringLocalize.yaml @@ -549,3 +549,5 @@ wrap.return.value.title: text: Wrap Return Value wrapped.return.command.name: text: Wrapped return as {0} for {1}{2}{3}() +dialog.message.0.would.hide.which.1.used.by.moved.2: + text: '{0} would hide {1} which is used by moved {2}.' \ No newline at end of file