From 513d14676f581756a19724e27b01546551ef1e63 Mon Sep 17 00:00:00 2001 From: UNV Date: Sat, 10 Oct 2026 02:00:44 +0300 Subject: [PATCH] Localizing ClassPresentationUtil. --- .../codeInsight/PsiClassListCellRenderer.java | 50 ++--- .../java/ClassPresentationProvider.java | 71 +++---- .../java/ClassPresentationUtil.java | 134 +++++++------ .../daemon/impl/GutterIconTooltipHelper.java | 8 +- .../StaticImportMethodQuestionAction.java | 64 ++++-- .../PsiClassFavoriteNodeProvider.java | 186 +++++++++--------- .../PsiFieldFavoriteNodeProvider.java | 163 ++++++++------- .../PsiMethodFavoriteNodeProvider.java | 152 +++++++------- .../call/CallHierarchyNodeDescriptor.java | 11 +- .../method/MethodHierarchyNodeDescriptor.java | 4 +- .../type/JavaTypeHierarchyModel.java | 16 +- .../type/TypeHierarchyNodeDescriptor.java | 18 +- .../impl/ide/scopeView/nodes/ClassNode.java | 52 ++--- ...ctionalExpressionPresentationProvider.java | 2 +- ...ctionalExpressionPresentationProvider.java | 2 +- .../ClassHierarchyScopeDescriptor.java | 60 +++--- .../inCallers/JavaMethodNode.java | 115 +++++------ 17 files changed, 591 insertions(+), 517 deletions(-) diff --git a/java-language-impl/src/main/java/com/intellij/java/language/impl/codeInsight/PsiClassListCellRenderer.java b/java-language-impl/src/main/java/com/intellij/java/language/impl/codeInsight/PsiClassListCellRenderer.java index e0822b09c8..2df66859be 100644 --- a/java-language-impl/src/main/java/com/intellij/java/language/impl/codeInsight/PsiClassListCellRenderer.java +++ b/java-language-impl/src/main/java/com/intellij/java/language/impl/codeInsight/PsiClassListCellRenderer.java @@ -15,42 +15,42 @@ */ package com.intellij.java.language.impl.codeInsight; -import consulo.language.editor.ui.PsiElementListCellRenderer; import com.intellij.java.language.impl.psi.presentation.java.ClassPresentationUtil; import com.intellij.java.language.psi.PsiClass; import com.intellij.java.language.psi.PsiClassOwner; +import consulo.annotation.access.RequiredReadAction; +import consulo.language.editor.ui.PsiElementListCellRenderer; import consulo.language.psi.PsiElement; -import consulo.language.psi.PsiFile; import org.jspecify.annotations.Nullable; public class PsiClassListCellRenderer extends PsiElementListCellRenderer { - public static final PsiClassListCellRenderer INSTANCE = new PsiClassListCellRenderer(); + public static final PsiClassListCellRenderer INSTANCE = new PsiClassListCellRenderer(); - @Override - public String getElementText(PsiClass element) { - return ClassPresentationUtil.getNameForClass(element, false); - } + @Override + @RequiredReadAction + public String getElementText(PsiClass element) { + return ClassPresentationUtil.getNameForClass(element, false).get(); + } - @Override - protected String getContainerText(PsiClass element, final String name) { - return getContainerTextStatic(element); - } + @Override + protected String getContainerText(PsiClass element, String name) { + return getContainerTextStatic(element); + } - @Nullable - public static String getContainerTextStatic(final PsiElement element) { - PsiFile file = element.getContainingFile(); - if (file instanceof PsiClassOwner) { - String packageName = ((PsiClassOwner) file).getPackageName(); - if (packageName.isEmpty()) { + @Nullable + public static String getContainerTextStatic(PsiElement element) { + if (element.getContainingFile() instanceof PsiClassOwner classOwner) { + String packageName = classOwner.getPackageName(); + if (packageName.isEmpty()) { + return null; + } + return "(" + packageName + ")"; + } return null; - } - return "(" + packageName + ")"; } - return null; - } - @Override - public int getIconFlags() { - return 0; - } + @Override + public int getIconFlags() { + return 0; + } } 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 9cedd34065..4019467332 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 @@ -17,6 +17,7 @@ import com.intellij.java.language.psi.PsiClass; import com.intellij.java.language.psi.PsiClassOwner; +import consulo.annotation.access.RequiredReadAction; import consulo.annotation.component.ExtensionImpl; import consulo.codeEditor.CodeInsightColors; import consulo.colorScheme.TextAttributesKey; @@ -33,43 +34,43 @@ */ @ExtensionImpl public class ClassPresentationProvider implements ItemPresentationProvider { - @Override - public Class getItemClass() { - return PsiClass.class; - } + @Override + public Class getItemClass() { + return PsiClass.class; + } - @Override - public ItemPresentation getPresentation(final PsiClass psiClass) { - return new ColoredItemPresentation() { - @Override - public String getPresentableText() { - return ClassPresentationUtil.getNameForClass(psiClass, false); - } + @Override + public ItemPresentation getPresentation(final PsiClass psiClass) { + return new ColoredItemPresentation() { + @Override + @RequiredReadAction + public String getPresentableText() { + return ClassPresentationUtil.getNameForClass(psiClass, false).get(); + } - @Override - public String getLocationString() { - PsiFile file = psiClass.getContainingFile(); - if (file instanceof PsiClassOwner) { - PsiClassOwner classOwner = (PsiClassOwner) file; - String packageName = classOwner.getPackageName(); - if (packageName.length() == 0) return null; - return "(" + packageName + ")"; - } - return null; - } + @Override + public String getLocationString() { + PsiFile file = psiClass.getContainingFile(); + if (file instanceof PsiClassOwner classOwner) { + String packageName = classOwner.getPackageName(); + return packageName.isEmpty() ? null : "(" + packageName + ")"; + } + return null; + } - @Override - public TextAttributesKey getTextAttributesKey() { - if (psiClass.isDeprecated()) { - return CodeInsightColors.DEPRECATED_ATTRIBUTES; - } - return null; - } + @Override + public TextAttributesKey getTextAttributesKey() { + if (psiClass.isDeprecated()) { + return CodeInsightColors.DEPRECATED_ATTRIBUTES; + } + return null; + } - @Override - public Image getIcon() { - return IconDescriptorUpdaters.getIcon(psiClass, Iconable.ICON_FLAG_VISIBILITY | Iconable.ICON_FLAG_READ_STATUS); - } - }; - } + @Override + @RequiredReadAction + public Image getIcon() { + return IconDescriptorUpdaters.getIcon(psiClass, Iconable.ICON_FLAG_VISIBILITY | Iconable.ICON_FLAG_READ_STATUS); + } + }; + } } diff --git a/java-language-impl/src/main/java/com/intellij/java/language/impl/psi/presentation/java/ClassPresentationUtil.java b/java-language-impl/src/main/java/com/intellij/java/language/impl/psi/presentation/java/ClassPresentationUtil.java index 0f07e0e106..2d0d57083d 100644 --- a/java-language-impl/src/main/java/com/intellij/java/language/impl/psi/presentation/java/ClassPresentationUtil.java +++ b/java-language-impl/src/main/java/com/intellij/java/language/impl/psi/presentation/java/ClassPresentationUtil.java @@ -16,75 +16,93 @@ package com.intellij.java.language.impl.psi.presentation.java; import com.intellij.java.language.psi.*; -import consulo.language.psi.PsiBundle; +import consulo.annotation.access.RequiredReadAction; +import consulo.language.localize.LanguageLocalize; import consulo.language.psi.PsiElement; import consulo.language.psi.PsiFile; import consulo.language.psi.util.PsiTreeUtil; +import consulo.localize.LocalizeValue; +import consulo.util.lang.StringUtil; +import org.jspecify.annotations.Nullable; public class ClassPresentationUtil { - private ClassPresentationUtil() { - } - - public static String getNameForClass(PsiClass aClass, boolean qualified) { - if (aClass instanceof PsiAnonymousClass) { - if (aClass instanceof PsiEnumConstantInitializer) { - PsiEnumConstant enumConstant = ((PsiEnumConstantInitializer) aClass).getEnumConstant(); - String name = enumConstant.getName(); - return PsiBundle.message("enum.constant.context", name, getContextName(enumConstant, qualified)); - } - return PsiBundle.message("anonymous.class.context.display", getContextName(aClass, qualified)); - } - if (qualified) { - String qName = aClass.getQualifiedName(); - if (qName != null) { - return qName; - } + private ClassPresentationUtil() { } - String className = aClass.getName(); - String contextName = getContextName(aClass, qualified); - return contextName != null ? PsiBundle.message("class.context.display", className, contextName) : className; - } + @RequiredReadAction + public static LocalizeValue getNameForClass(PsiClass aClass, boolean qualified) { + if (aClass instanceof PsiAnonymousClass) { + if (aClass instanceof PsiEnumConstantInitializer enumInitializer) { + PsiEnumConstant enumConstant = enumInitializer.getEnumConstant(); + return LanguageLocalize.enumConstantContext( + StringUtil.notNullize(enumConstant.getName()), + StringUtil.notNullize(getContextName(enumConstant, qualified)) + ); + } + return LanguageLocalize.anonymousClassContextDisplay(StringUtil.notNullize(getContextName(aClass, qualified))); + } + if (qualified) { + String qName = aClass.getQualifiedName(); + if (qName != null) { + return LocalizeValue.of(qName); + } + } - private static String getNameForElement(PsiElement element, boolean qualified) { - if (element instanceof PsiClass) { - return getNameForClass((PsiClass) element, qualified); - } else if (element instanceof PsiMethod) { - PsiMethod method = (PsiMethod) element; - String methodName = method.getName(); - return PsiBundle.message("method.context.display", methodName, getContextName(method, qualified)); - } else if (element instanceof PsiClassOwner) { - return null; - } else if (element instanceof PsiFile) { - return ((PsiFile) element).getName(); - } else if (element instanceof PsiField) { - return ((PsiField) element).getName(); - } else { - return null; + String className = aClass.getName(); + String contextName = getContextName(aClass, qualified); + return contextName != null + ? LanguageLocalize.classContextDisplay(StringUtil.notNullize(className), contextName) + : LocalizeValue.ofNullable(className); } - } - public static String getContextName(PsiElement element, boolean qualified) { - PsiElement parent = PsiTreeUtil.getStubOrPsiParentOfType(element, PsiMember.class); - if (parent == null) { - parent = element.getContainingFile(); + @RequiredReadAction + private static LocalizeValue getNameForElement(PsiElement element, boolean qualified) { + if (element instanceof PsiClass psiClass) { + return getNameForClass(psiClass, qualified); + } + else if (element instanceof PsiMethod method) { + return LanguageLocalize.methodContextDisplay( + StringUtil.notNullize(method.getName()), + StringUtil.notNullize(getContextName(method, qualified)) + ); + } + else if (element instanceof PsiClassOwner) { + return LocalizeValue.empty(); + } + else if (element instanceof PsiFile file) { + return LocalizeValue.of(file.getName()); + } + else if (element instanceof PsiField field) { + return LocalizeValue.ofNullable(field.getName()); + } + else { + return LocalizeValue.empty(); + } } - while (true) { - if (parent == null) { - return null; - } - String name = getNameForElement(parent, qualified); - if (name != null) { - return name; - } - if (parent instanceof PsiFile) { - return null; - } - parent = PsiTreeUtil.getStubOrPsiParent(parent); + + @RequiredReadAction + public static @Nullable String getContextName(PsiElement element, boolean qualified) { + PsiElement parent = PsiTreeUtil.getStubOrPsiParentOfType(element, PsiMember.class); + if (parent == null) { + parent = element.getContainingFile(); + } + while (true) { + if (parent == null) { + return null; + } + LocalizeValue name = getNameForElement(parent, qualified); + if (name.isNotEmpty()) { + return name.get(); + } + if (parent instanceof PsiFile) { + return null; + } + parent = PsiTreeUtil.getStubOrPsiParent(parent); + } } - } - public static String getFunctionalExpressionPresentation(PsiFunctionalExpression functionalExpression, boolean qualified) { - return "Functional expression in " + getContextName(functionalExpression, qualified); - } + @RequiredReadAction + public static LocalizeValue getFunctionalExpressionPresentation(PsiFunctionalExpression functionalExpression, boolean qualified) { + return LocalizeValue.localizeTODO("Functional expression in " + getContextName(functionalExpression, qualified)); + } } diff --git a/plugin/src/main/java/com/intellij/java/impl/codeInsight/daemon/impl/GutterIconTooltipHelper.java b/plugin/src/main/java/com/intellij/java/impl/codeInsight/daemon/impl/GutterIconTooltipHelper.java index f077d101e5..7583a24a8b 100644 --- a/plugin/src/main/java/com/intellij/java/impl/codeInsight/daemon/impl/GutterIconTooltipHelper.java +++ b/plugin/src/main/java/com/intellij/java/impl/codeInsight/daemon/impl/GutterIconTooltipHelper.java @@ -65,14 +65,14 @@ public static HtmlChunk.Element composeText( Set names = new LinkedHashSet<>(); for (PsiElement element : elements) { if (element instanceof PsiClass psiClass) { - String className = ClassPresentationUtil.getNameForClass(psiClass, true); - names.add(pattern.apply("", className)); + LocalizeValue className = ClassPresentationUtil.getNameForClass(psiClass, true); + names.add(pattern.apply("", className.get())); } else if (element instanceof PsiMethod method) { String methodName = method.getName(); PsiClass aClass = method.getContainingClass(); - String className = aClass == null ? "" : ClassPresentationUtil.getNameForClass(aClass, true); - names.add(pattern.apply(methodName, className)); + LocalizeValue className = aClass == null ? LocalizeValue.empty() : ClassPresentationUtil.getNameForClass(aClass, true); + names.add(pattern.apply(methodName, className.get())); } else if (element instanceof PsiFile file) { names.add(pattern.apply("", file.getName())); diff --git a/plugin/src/main/java/com/intellij/java/impl/codeInsight/daemon/impl/quickfix/StaticImportMethodQuestionAction.java b/plugin/src/main/java/com/intellij/java/impl/codeInsight/daemon/impl/quickfix/StaticImportMethodQuestionAction.java index 5427e3104f..8087fb00ba 100644 --- a/plugin/src/main/java/com/intellij/java/impl/codeInsight/daemon/impl/quickfix/StaticImportMethodQuestionAction.java +++ b/plugin/src/main/java/com/intellij/java/impl/codeInsight/daemon/impl/quickfix/StaticImportMethodQuestionAction.java @@ -23,11 +23,12 @@ import com.intellij.java.language.psi.PsiDocCommentOwner; import com.intellij.java.language.psi.PsiMember; import com.intellij.java.language.psi.util.PsiUtil; -import consulo.application.ApplicationManager; +import consulo.annotation.access.RequiredReadAction; +import consulo.application.Application; import consulo.codeEditor.Editor; import consulo.codeEditor.EditorPopupHelper; import consulo.colorScheme.TextAttributes; -import consulo.java.analysis.impl.JavaQuickFixBundle; +import consulo.java.analysis.impl.localize.JavaQuickFixLocalize; import consulo.language.editor.WriteCommandAction; import consulo.language.editor.hint.QuestionAction; import consulo.language.editor.ui.PsiElementListCellRenderer; @@ -59,7 +60,12 @@ public class StaticImportMethodQuestionAction implements Qu private List myCandidates; private final SmartPsiElementPointer myRef; - public StaticImportMethodQuestionAction(Project project, Editor editor, List candidates, SmartPsiElementPointer ref) { + public StaticImportMethodQuestionAction( + Project project, + Editor editor, + List candidates, + SmartPsiElementPointer ref + ) { myProject = project; myEditor = editor; myCandidates = candidates; @@ -67,10 +73,11 @@ public StaticImportMethodQuestionAction(Project project, Editor editor, List } protected String getPopupTitle() { - return JavaQuickFixBundle.message("method.to.import.chooser.title"); + return JavaQuickFixLocalize.methodToImportChooserTitle().get(); } @Override + @RequiredUIAccess public boolean execute() { PsiDocumentManager.getInstance(myProject).commitAllDocuments(); @@ -94,23 +101,33 @@ public boolean execute() { return true; } + @RequiredUIAccess private void doImport(T toImport) { Project project = toImport.getProject(); PsiElement element = myRef.getElement(); if (element == null) { return; } - WriteCommandAction.runWriteCommandAction(project, JavaQuickFixBundle.message("add.import"), null, () -> AddSingleMemberStaticImportAction.bindAllClassRefs(element.getContainingFile(), - toImport, toImport.getName(), toImport.getContainingClass())); + WriteCommandAction.runWriteCommandAction( + project, + JavaQuickFixLocalize.addImport().get(), + null, + () -> AddSingleMemberStaticImportAction.bindAllClassRefs( + element.getContainingFile(), + toImport, + toImport.getName(), + toImport.getContainingClass() + ) + ); } + @RequiredUIAccess private void chooseAndImport(Editor editor, final Project project) { - if (ApplicationManager.getApplication().isUnitTestMode()) { + if (Application.get().isUnitTestMode()) { doImport(myCandidates.get(0)); return; } - final BaseListPopupStep step = new BaseListPopupStep(getPopupTitle(), myCandidates) { - + BaseListPopupStep step = new BaseListPopupStep(getPopupTitle(), myCandidates) { @Override public boolean isAutoSelectionEnabled() { return false; @@ -128,8 +145,7 @@ public PopupStep onChosen(T selectedValue, boolean finalChoice) { } if (finalChoice) { - return doFinalStep(() -> - { + return doFinalStep(() -> { PsiDocumentManager.getInstance(project).commitAllDocuments(); LOG.assertTrue(selectedValue.isValid()); doImport(selectedValue); @@ -145,6 +161,7 @@ public boolean hasSubstep(T selectedValue) { } @Override + @RequiredReadAction public String getTextFor(T value) { return getElementPresentableName(value); } @@ -159,14 +176,18 @@ public Image getIconFor(T aValue) { AWTListPopup popup = ((AWTPopupFactory) JBPopupFactory.getInstance()).createListPopup(project, step, listPopup -> { PopupListElementRenderer rightArrow = new PopupListElementRenderer(listPopup); return new PsiElementListCellRenderer() { + @Override + @RequiredReadAction public String getElementText(T element) { return getElementPresentableName(element); } + @Override public String getContainerText(T element, String name) { return PsiClassListCellRenderer.getContainerTextStatic(element); } + @Override public int getIconFlags() { return 0; } @@ -175,7 +196,7 @@ public int getIconFlags() { @Override protected TextAttributes getNavigationItemAttributes(Object value) { TextAttributes attrs = super.getNavigationItemAttributes(value); - if (value instanceof PsiDocCommentOwner && !((PsiDocCommentOwner) value).isDeprecated()) { + if (value instanceof PsiDocCommentOwner docCommentOwner && !docCommentOwner.isDeprecated()) { PsiClass psiClass = ((T) value).getContainingClass(); if (psiClass != null && psiClass.isDeprecated()) { return TextAttributes.merge(attrs, super.getNavigationItemAttributes(psiClass)); @@ -189,10 +210,22 @@ protected DefaultListCellRenderer getRightCellRenderer(Object value) { final DefaultListCellRenderer moduleRenderer = super.getRightCellRenderer(value); return new DefaultListCellRenderer() { @Override - public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected, boolean cellHasFocus) { + public Component getListCellRendererComponent( + JList list, + Object value, + int index, + boolean isSelected, + boolean cellHasFocus + ) { JPanel panel = new JPanel(new BorderLayout()); if (moduleRenderer != null) { - Component moduleComponent = moduleRenderer.getListCellRendererComponent(list, value, index, isSelected, cellHasFocus); + Component moduleComponent = moduleRenderer.getListCellRendererComponent( + list, + value, + index, + isSelected, + cellHasFocus + ); if (!isSelected) { moduleComponent.setBackground(TargetAWT.to(getBackgroundColor(value))); } @@ -210,10 +243,11 @@ public Component getListCellRendererComponent(JList list, Object value, int inde EditorPopupHelper.getInstance().showPopupInBestPositionFor(editor, popup); } + @RequiredReadAction private String getElementPresentableName(T element) { PsiClass aClass = element.getContainingClass(); LOG.assertTrue(aClass != null); - return ClassPresentationUtil.getNameForClass(aClass, false) + "." + element.getName(); + return ClassPresentationUtil.getNameForClass(aClass, false).get() + "." + element.getName(); } } diff --git a/plugin/src/main/java/com/intellij/java/impl/ide/favoritesTreeView/PsiClassFavoriteNodeProvider.java b/plugin/src/main/java/com/intellij/java/impl/ide/favoritesTreeView/PsiClassFavoriteNodeProvider.java index e7b8187098..18078b6413 100644 --- a/plugin/src/main/java/com/intellij/java/impl/ide/favoritesTreeView/PsiClassFavoriteNodeProvider.java +++ b/plugin/src/main/java/com/intellij/java/impl/ide/favoritesTreeView/PsiClassFavoriteNodeProvider.java @@ -33,7 +33,6 @@ import consulo.language.psi.PsiElement; import consulo.language.psi.PsiFile; import consulo.language.psi.scope.GlobalSearchScope; -import consulo.language.util.ModuleUtilCore; import consulo.module.Module; import consulo.module.ModuleManager; import consulo.project.Project; @@ -47,111 +46,118 @@ @ExtensionImpl public class PsiClassFavoriteNodeProvider implements BookmarkNodeProvider { - @Override - public Collection getFavoriteNodes(DataContext context, ViewSettings viewSettings) { - Project project = context.getData(Project.KEY); - if (project == null) return null; - PsiElement[] elements = context.getData(PsiElement.KEY_OF_ARRAY); - if (elements == null) { - PsiElement element = context.getData(PsiElement.KEY); - if (element != null) { - elements = new PsiElement[]{element}; - } - } - if (elements != null) { - Collection result = new ArrayList<>(); - for (PsiElement element : elements) { - if (element instanceof PsiClass && checkClassUnderSources(element, project)) { - result.add(new ClassSmartPointerNode(project, element, viewSettings)); + @Override + public Collection getFavoriteNodes(DataContext context, ViewSettings viewSettings) { + Project project = context.getData(Project.KEY); + if (project == null) { + return null; } - } - return result.isEmpty() ? null : result; - } - return null; - } - - private boolean checkClassUnderSources(PsiElement element, Project project) { - PsiFile file = element.getContainingFile(); - if (file != null && file.getVirtualFile() != null) { - FileIndexFacade indexFacade = FileIndexFacade.getInstance(project); - VirtualFile vf = file.getVirtualFile(); - return indexFacade.isInSource(vf) || indexFacade.isInSourceContent(vf); + PsiElement[] elements = context.getData(PsiElement.KEY_OF_ARRAY); + if (elements == null) { + PsiElement element = context.getData(PsiElement.KEY); + if (element != null) { + elements = new PsiElement[]{element}; + } + } + if (elements != null) { + Collection result = new ArrayList<>(); + for (PsiElement element : elements) { + if (element instanceof PsiClass && checkClassUnderSources(element, project)) { + result.add(new ClassSmartPointerNode(project, element, viewSettings)); + } + } + return result.isEmpty() ? null : result; + } + return null; } - return false; - } - @Override - public AbstractTreeNode createNode(Project project, Object element, ViewSettings viewSettings) { - if (element instanceof PsiClass psiClass && checkClassUnderSources(psiClass, project)) { - return new ClassSmartPointerNode(project, element, viewSettings); + private boolean checkClassUnderSources(PsiElement element, Project project) { + PsiFile file = element.getContainingFile(); + if (file != null && file.getVirtualFile() != null) { + FileIndexFacade indexFacade = FileIndexFacade.getInstance(project); + VirtualFile vf = file.getVirtualFile(); + return indexFacade.isInSource(vf) || indexFacade.isInSourceContent(vf); + } + return false; } - return BookmarkNodeProvider.super.createNode(project, element, viewSettings); - } - @Override - public boolean elementContainsFile(Object element, VirtualFile vFile) { - if (element instanceof PsiClass psiClass) { - PsiFile file = psiClass.getContainingFile(); - if (file != null && Comparing.equal(file.getVirtualFile(), vFile)) return true; + @Override + public AbstractTreeNode createNode(Project project, Object element, ViewSettings viewSettings) { + if (element instanceof PsiClass psiClass && checkClassUnderSources(psiClass, project)) { + return new ClassSmartPointerNode(project, element, viewSettings); + } + return BookmarkNodeProvider.super.createNode(project, element, viewSettings); } - return false; - } - @Override - public int getElementWeight(Object value, boolean isSortByType) { - if (value instanceof PsiClass psiClass) { - return isSortByType ? ClassTreeNode.getClassPosition(psiClass) : 3; + @Override + public boolean elementContainsFile(Object element, VirtualFile vFile) { + if (element instanceof PsiClass psiClass) { + PsiFile file = psiClass.getContainingFile(); + if (file != null && Comparing.equal(file.getVirtualFile(), vFile)) { + return true; + } + } + return false; } - return -1; - } + @Override + public int getElementWeight(Object value, boolean isSortByType) { + if (value instanceof PsiClass psiClass) { + return isSortByType ? ClassTreeNode.getClassPosition(psiClass) : 3; + } - @Override - public String getElementLocation(Object element) { - return element instanceof PsiClass psiClass ? ClassPresentationUtil.getNameForClass(psiClass, true) : null; - } + return -1; + } - @Override - public boolean isInvalidElement(Object element) { - return element instanceof PsiClass psiClass && !psiClass.isValid(); - } + @Override + @RequiredReadAction + public String getElementLocation(Object element) { + return element instanceof PsiClass psiClass ? ClassPresentationUtil.getNameForClass(psiClass, true).get() : null; + } - @Override - public String getFavoriteTypeId() { - return "class"; - } + @Override + @RequiredReadAction + public boolean isInvalidElement(Object element) { + return element instanceof PsiClass psiClass && !psiClass.isValid(); + } - @Override - public String getElementUrl(Object element) { - return element instanceof PsiClass aClass ? aClass.getQualifiedName() : null; - } + @Override + public String getFavoriteTypeId() { + return "class"; + } - @Override - @RequiredReadAction - public String getElementModuleName(Object element) { - if (element instanceof PsiClass) { - PsiClass aClass = (PsiClass) element; - Module module = ModuleUtilCore.findModuleForPsiElement(aClass); - return module != null ? module.getName() : null; + @Override + public String getElementUrl(Object element) { + return element instanceof PsiClass aClass ? aClass.getQualifiedName() : null; } - return null; - } - @Override - @RequiredReadAction - public Object[] createPathFromUrl(Project project, String url, String moduleName) { - GlobalSearchScope scope = null; - if (moduleName != null) { - Module module = ModuleManager.getInstance(project).findModuleByName(moduleName); - if (module != null) { - scope = GlobalSearchScope.moduleScope(module); - } + @Override + @RequiredReadAction + public String getElementModuleName(Object element) { + if (element instanceof PsiClass aClass) { + Module module = aClass.getModule(); + return module != null ? module.getName() : null; + } + return null; } - if (scope == null) { - scope = GlobalSearchScope.allScope(project); + + @Override + @RequiredReadAction + public Object[] createPathFromUrl(Project project, String url, String moduleName) { + GlobalSearchScope scope = null; + if (moduleName != null) { + Module module = ModuleManager.getInstance(project).findModuleByName(moduleName); + if (module != null) { + scope = GlobalSearchScope.moduleScope(module); + } + } + if (scope == null) { + scope = GlobalSearchScope.allScope(project); + } + PsiClass aClass = JavaPsiFacade.getInstance(project).findClass(url, scope); + if (aClass == null) { + return null; + } + return new Object[]{aClass}; } - PsiClass aClass = JavaPsiFacade.getInstance(project).findClass(url, scope); - if (aClass == null) return null; - return new Object[]{aClass}; - } } \ No newline at end of file diff --git a/plugin/src/main/java/com/intellij/java/impl/ide/favoritesTreeView/PsiFieldFavoriteNodeProvider.java b/plugin/src/main/java/com/intellij/java/impl/ide/favoritesTreeView/PsiFieldFavoriteNodeProvider.java index 2e07af0a53..144244a549 100644 --- a/plugin/src/main/java/com/intellij/java/impl/ide/favoritesTreeView/PsiFieldFavoriteNodeProvider.java +++ b/plugin/src/main/java/com/intellij/java/impl/ide/favoritesTreeView/PsiFieldFavoriteNodeProvider.java @@ -31,7 +31,6 @@ import consulo.dataContext.DataContext; import consulo.language.psi.PsiElement; import consulo.language.psi.scope.GlobalSearchScope; -import consulo.language.util.ModuleUtilCore; import consulo.module.Module; import consulo.module.ModuleManager; import consulo.project.Project; @@ -44,101 +43,101 @@ @ExtensionImpl public class PsiFieldFavoriteNodeProvider implements BookmarkNodeProvider { - @Override - public Collection getFavoriteNodes(DataContext context, ViewSettings viewSettings) { - Project project = context.getData(Project.KEY); - if (project == null) { - return null; - } - PsiElement[] elements = context.getData(PsiElement.KEY_OF_ARRAY); - if (elements == null) { - PsiElement element = context.getData(PsiElement.KEY); - if (element != null) { - elements = new PsiElement[]{element}; - } + @Override + public Collection getFavoriteNodes(DataContext context, ViewSettings viewSettings) { + Project project = context.getData(Project.KEY); + if (project == null) { + return null; + } + PsiElement[] elements = context.getData(PsiElement.KEY_OF_ARRAY); + if (elements == null) { + PsiElement element = context.getData(PsiElement.KEY); + if (element != null) { + elements = new PsiElement[]{element}; + } + } + if (elements != null) { + Collection result = new ArrayList<>(); + for (PsiElement element : elements) { + if (element instanceof PsiField) { + result.add(new FieldSmartPointerNode(project, element, viewSettings)); + } + } + return result.isEmpty() ? null : result; + } + return null; } - if (elements != null) { - Collection result = new ArrayList<>(); - for (PsiElement element : elements) { + + @Override + public AbstractTreeNode createNode(Project project, Object element, ViewSettings viewSettings) { if (element instanceof PsiField) { - result.add(new FieldSmartPointerNode(project, element, viewSettings)); + return new FieldSmartPointerNode(project, element, viewSettings); } - } - return result.isEmpty() ? null : result; + return BookmarkNodeProvider.super.createNode(project, element, viewSettings); } - return null; - } - @Override - public AbstractTreeNode createNode(Project project, Object element, ViewSettings viewSettings) { - if (element instanceof PsiField) { - return new FieldSmartPointerNode(project, element, viewSettings); + @Override + public boolean elementContainsFile(Object element, VirtualFile vFile) { + return false; } - return BookmarkNodeProvider.super.createNode(project, element, viewSettings); - } - @Override - public boolean elementContainsFile(Object element, VirtualFile vFile) { - return false; - } - - @Override - public int getElementWeight(Object value, boolean isSortByType) { - return value instanceof PsiField ? 4 : -1; - } - - @Override - public String getElementLocation(Object element) { - if (element instanceof PsiField) { - PsiClass psiClass = ((PsiField) element).getContainingClass(); - if (psiClass != null) { - return ClassPresentationUtil.getNameForClass(psiClass, true); - } + @Override + public int getElementWeight(Object value, boolean isSortByType) { + return value instanceof PsiField ? 4 : -1; } - return null; - } - - @Override - public boolean isInvalidElement(Object element) { - return element instanceof PsiField field && !field.isValid(); - } - - @Override - public String getFavoriteTypeId() { - return "field"; - } - @Override - public String getElementUrl(Object element) { - return element instanceof PsiField field ? field.getContainingClass().getQualifiedName() + ";" + field.getName() : null; - } + @Override + @RequiredReadAction + public String getElementLocation(Object element) { + if (element instanceof PsiField field) { + PsiClass psiClass = field.getContainingClass(); + if (psiClass != null) { + return ClassPresentationUtil.getNameForClass(psiClass, true).get(); + } + } + return null; + } - @Override - @RequiredReadAction - public String getElementModuleName(Object element) { - if (element instanceof PsiField) { - Module module = ModuleUtilCore.findModuleForPsiElement((PsiField) element); - return module != null ? module.getName() : null; + @Override + @RequiredReadAction + public boolean isInvalidElement(Object element) { + return element instanceof PsiField field && !field.isValid(); } - return null; - } - @Override - @RequiredReadAction - public Object[] createPathFromUrl(Project project, String url, String moduleName) { - Module module = moduleName != null ? ModuleManager.getInstance(project).findModuleByName(moduleName) : null; - GlobalSearchScope scope = module != null ? GlobalSearchScope.moduleScope(module) : GlobalSearchScope.allScope(project); - String[] paths = url.split(";"); - if (paths == null || paths.length != 2) { - return null; + @Override + public String getFavoriteTypeId() { + return "field"; } - PsiClass aClass = JavaPsiFacade.getInstance(project).findClass(paths[0], scope); - if (aClass == null) { - return null; + + @Override + public String getElementUrl(Object element) { + return element instanceof PsiField field ? field.getContainingClass().getQualifiedName() + ";" + field.getName() : null; } - PsiField aField = aClass.findFieldByName(paths[1], false); - return new Object[]{aField}; - } + @Override + @RequiredReadAction + public String getElementModuleName(Object element) { + if (element instanceof PsiField field) { + Module module = field.getModule(); + return module != null ? module.getName() : null; + } + return null; + } + @Override + @RequiredReadAction + public Object[] createPathFromUrl(Project project, String url, String moduleName) { + Module module = moduleName != null ? ModuleManager.getInstance(project).findModuleByName(moduleName) : null; + GlobalSearchScope scope = module != null ? GlobalSearchScope.moduleScope(module) : GlobalSearchScope.allScope(project); + String[] paths = url.split(";"); + if (paths == null || paths.length != 2) { + return null; + } + PsiClass aClass = JavaPsiFacade.getInstance(project).findClass(paths[0], scope); + if (aClass == null) { + return null; + } + PsiField aField = aClass.findFieldByName(paths[1], false); + return new Object[]{aField}; + } } \ No newline at end of file diff --git a/plugin/src/main/java/com/intellij/java/impl/ide/favoritesTreeView/PsiMethodFavoriteNodeProvider.java b/plugin/src/main/java/com/intellij/java/impl/ide/favoritesTreeView/PsiMethodFavoriteNodeProvider.java index bc889a4eab..e2d0957a1c 100644 --- a/plugin/src/main/java/com/intellij/java/impl/ide/favoritesTreeView/PsiMethodFavoriteNodeProvider.java +++ b/plugin/src/main/java/com/intellij/java/impl/ide/favoritesTreeView/PsiMethodFavoriteNodeProvider.java @@ -32,7 +32,6 @@ import consulo.dataContext.DataContext; import consulo.language.psi.PsiElement; import consulo.language.psi.PsiManager; -import consulo.language.util.ModuleUtilCore; import consulo.module.Module; import consulo.project.Project; import consulo.project.ui.view.tree.AbstractTreeNode; @@ -44,93 +43,96 @@ @ExtensionImpl public class PsiMethodFavoriteNodeProvider implements BookmarkNodeProvider { - @Override - public Collection getFavoriteNodes(DataContext context, ViewSettings viewSettings) { - Project project = context.getData(Project.KEY); - if (project == null) { - return null; - } - PsiElement[] elements = context.getData(PsiElement.KEY_OF_ARRAY); - if (elements == null) { - PsiElement element = context.getData(PsiElement.KEY); - if (element != null) { - elements = new PsiElement[]{element}; - } - } - if (elements != null) { - Collection result = new ArrayList<>(); - for (PsiElement element : elements) { - if (element instanceof PsiMethod) { - result.add(new MethodSmartPointerNode(project, element, viewSettings)); + @Override + public Collection getFavoriteNodes(DataContext context, ViewSettings viewSettings) { + Project project = context.getData(Project.KEY); + if (project == null) { + return null; + } + PsiElement[] elements = context.getData(PsiElement.KEY_OF_ARRAY); + if (elements == null) { + PsiElement element = context.getData(PsiElement.KEY); + if (element != null) { + elements = new PsiElement[]{element}; + } + } + if (elements != null) { + Collection result = new ArrayList<>(); + for (PsiElement element : elements) { + if (element instanceof PsiMethod) { + result.add(new MethodSmartPointerNode(project, element, viewSettings)); + } + } + return result.isEmpty() ? null : result; } - } - return result.isEmpty() ? null : result; + return null; } - return null; - } - @Override - public AbstractTreeNode createNode(Project project, Object element, ViewSettings viewSettings) { - return element instanceof PsiMethod - ? new MethodSmartPointerNode(project, element, viewSettings) - : BookmarkNodeProvider.super.createNode(project, element, viewSettings); - } + @Override + public AbstractTreeNode createNode(Project project, Object element, ViewSettings viewSettings) { + return element instanceof PsiMethod + ? new MethodSmartPointerNode(project, element, viewSettings) + : BookmarkNodeProvider.super.createNode(project, element, viewSettings); + } - @Override - public boolean elementContainsFile(Object element, VirtualFile vFile) { - return false; - } + @Override + public boolean elementContainsFile(Object element, VirtualFile vFile) { + return false; + } - @Override - public int getElementWeight(Object value, boolean isSortByType) { - if (value instanceof PsiMethod) { - return 5; + @Override + public int getElementWeight(Object value, boolean isSortByType) { + if (value instanceof PsiMethod) { + return 5; + } + return -1; } - return -1; - } - @Override - public String getElementLocation(Object element) { - if (element instanceof PsiMethod method) { - PsiClass parent = method.getContainingClass(); - if (parent != null) { - return ClassPresentationUtil.getNameForClass(parent, true); - } + @Override + @RequiredReadAction + public String getElementLocation(Object element) { + if (element instanceof PsiMethod method) { + PsiClass parent = method.getContainingClass(); + if (parent != null) { + return ClassPresentationUtil.getNameForClass(parent, true).get(); + } + } + return null; } - return null; - } - @Override - public boolean isInvalidElement(Object element) { - return element instanceof PsiMethod method && !method.isValid(); - } + @Override + @RequiredReadAction + public boolean isInvalidElement(Object element) { + return element instanceof PsiMethod method && !method.isValid(); + } - @Override - public String getFavoriteTypeId() { - return "method"; - } + @Override + public String getFavoriteTypeId() { + return "method"; + } - @Override - public String getElementUrl(Object element) { - return element instanceof PsiMethod method ? PsiFormatUtil.getExternalName(method) : null; - } + @Override + public String getElementUrl(Object element) { + return element instanceof PsiMethod method ? PsiFormatUtil.getExternalName(method) : null; + } - @Override - @RequiredReadAction - public String getElementModuleName(Object element) { - if (element instanceof PsiMethod aMethod) { - Module module = ModuleUtilCore.findModuleForPsiElement(aMethod); - return module != null ? module.getName() : null; + @Override + @RequiredReadAction + public String getElementModuleName(Object element) { + if (element instanceof PsiMethod method) { + Module module = method.getModule(); + return module != null ? module.getName() : null; + } + return null; } - return null; - } - @Override - public Object[] createPathFromUrl(Project project, String url, String moduleName) { - PsiMethod method = RefMethodImpl.findPsiMethod(PsiManager.getInstance(project), url); - if (method == null) { - return null; + @Override + @RequiredReadAction + public Object[] createPathFromUrl(Project project, String url, String moduleName) { + PsiMethod method = RefMethodImpl.findPsiMethod(PsiManager.getInstance(project), url); + if (method == null) { + return null; + } + return new Object[]{method}; } - return new Object[]{method}; - } } \ No newline at end of file diff --git a/plugin/src/main/java/com/intellij/java/impl/ide/hierarchy/call/CallHierarchyNodeDescriptor.java b/plugin/src/main/java/com/intellij/java/impl/ide/hierarchy/call/CallHierarchyNodeDescriptor.java index 0951c788b7..59728d92ea 100644 --- a/plugin/src/main/java/com/intellij/java/impl/ide/hierarchy/call/CallHierarchyNodeDescriptor.java +++ b/plugin/src/main/java/com/intellij/java/impl/ide/hierarchy/call/CallHierarchyNodeDescriptor.java @@ -146,7 +146,7 @@ public final boolean update() { if (myColor != null) { mainTextAttributes = new TextAttributes(myColor, null, null, null, Font.PLAIN); } - if (enclosingElement instanceof PsiMethod) { + if (enclosingElement instanceof PsiMethod enclosingMethod) { if (enclosingElement instanceof SyntheticElement) { PsiFile file = enclosingElement.getContainingFile(); myHighlightedText.getEnding().addText( @@ -155,15 +155,14 @@ public final boolean update() { ); } else { - PsiMethod method = (PsiMethod)enclosingElement; StringBuilder buffer = new StringBuilder(128); - PsiClass containingClass = method.getContainingClass(); + PsiClass containingClass = enclosingMethod.getContainingClass(); if (containingClass != null) { - buffer.append(ClassPresentationUtil.getNameForClass(containingClass, false)); + buffer.append(ClassPresentationUtil.getNameForClass(containingClass, false).get()); buffer.append('.'); } String methodText = PsiFormatUtil.formatMethod( - method, + enclosingMethod, PsiSubstitutor.EMPTY, PsiFormatUtilBase.SHOW_NAME | PsiFormatUtilBase.SHOW_PARAMETERS, PsiFormatUtilBase.SHOW_TYPE @@ -175,7 +174,7 @@ public final boolean update() { } else { myHighlightedText.getEnding() - .addText(ClassPresentationUtil.getNameForClass((PsiClass)enclosingElement, false), mainTextAttributes); + .addText(ClassPresentationUtil.getNameForClass((PsiClass)enclosingElement, false).get(), mainTextAttributes); } if (myUsageCount > 1) { diff --git a/plugin/src/main/java/com/intellij/java/impl/ide/hierarchy/method/MethodHierarchyNodeDescriptor.java b/plugin/src/main/java/com/intellij/java/impl/ide/hierarchy/method/MethodHierarchyNodeDescriptor.java index 96b4ad7453..840b76406a 100644 --- a/plugin/src/main/java/com/intellij/java/impl/ide/hierarchy/method/MethodHierarchyNodeDescriptor.java +++ b/plugin/src/main/java/com/intellij/java/impl/ide/hierarchy/method/MethodHierarchyNodeDescriptor.java @@ -138,7 +138,7 @@ public final boolean update() { classNameAttributes = new TextAttributes(myColor, null, null, null, Font.PLAIN); } if (aClass instanceof PsiClass psiClass) { - myHighlightedText.getEnding().addText(ClassPresentationUtil.getNameForClass(psiClass, false), classNameAttributes); + myHighlightedText.getEnding().addText(ClassPresentationUtil.getNameForClass(psiClass, false).get(), classNameAttributes); myHighlightedText.getEnding().addText( " (" + JavaHierarchyUtil.getPackageName(psiClass) + ")", HierarchyNodeDescriptor.getPackageNameAttributes() @@ -146,7 +146,7 @@ public final boolean update() { } else if (aClass instanceof PsiFunctionalExpression functionalExpression) { myHighlightedText.getEnding() - .addText(ClassPresentationUtil.getFunctionalExpressionPresentation(functionalExpression, false)); + .addText(ClassPresentationUtil.getFunctionalExpressionPresentation(functionalExpression, false).get()); } myName = myHighlightedText.getText(); diff --git a/plugin/src/main/java/com/intellij/java/impl/ide/hierarchy/type/JavaTypeHierarchyModel.java b/plugin/src/main/java/com/intellij/java/impl/ide/hierarchy/type/JavaTypeHierarchyModel.java index df68639813..004617b419 100644 --- a/plugin/src/main/java/com/intellij/java/impl/ide/hierarchy/type/JavaTypeHierarchyModel.java +++ b/plugin/src/main/java/com/intellij/java/impl/ide/hierarchy/type/JavaTypeHierarchyModel.java @@ -69,14 +69,14 @@ public List getViewTypes() { ); } - @RequiredReadAction @Override + @RequiredReadAction public HierarchyViewType getDefaultViewType() { return StandardHierarchyViewTypes.CLASS; } - @RequiredReadAction @Override + @RequiredReadAction public HierarchyViewType correctViewType(HierarchyViewType viewType) { return StandardHierarchyViewTypes.CLASS.equals(viewType) && isInterface(myTarget) ? StandardHierarchyViewTypes.SUBTYPES @@ -93,8 +93,8 @@ public boolean isScopeApplicable(HierarchyViewType viewType) { return !StandardHierarchyViewTypes.SUPERTYPES.equals(viewType); } - @RequiredReadAction @Override + @RequiredReadAction public @Nullable HierarchyTreeStructure createTreeStructure(HierarchyRequest request) { PsiClass target = request.getTarget(); HierarchyViewType viewType = request.getViewType(); @@ -113,31 +113,31 @@ public boolean isScopeApplicable(HierarchyViewType viewType) { return null; } - @RequiredReadAction @Override + @RequiredReadAction public boolean isApplicableElement(PsiElement element) { return element instanceof PsiClass; } - @RequiredReadAction @Override + @RequiredReadAction public boolean canBeBase(PsiElement element) { return element instanceof PsiClass psiClass && !CommonClassNames.JAVA_LANG_OBJECT.equals(psiClass.getQualifiedName()); } - @RequiredReadAction @Override + @RequiredReadAction public LocalizeValue getBaseOnThisText(PsiElement element) { return isInterface(element) ? LanguageEditorLocalize.actionBaseOnThisInterface() : LanguageEditorLocalize.actionBaseOnThisClass(); } - @RequiredReadAction @Override + @RequiredReadAction public LocalizeValue getContentDisplayName(HierarchyViewType viewType, PsiElement element) { return element instanceof PsiClass psiClass - ? viewType.contentTitle(ClassPresentationUtil.getNameForClass(psiClass, false)) + ? viewType.contentTitle(ClassPresentationUtil.getNameForClass(psiClass, false).get()) : LocalizeValue.empty(); } diff --git a/plugin/src/main/java/com/intellij/java/impl/ide/hierarchy/type/TypeHierarchyNodeDescriptor.java b/plugin/src/main/java/com/intellij/java/impl/ide/hierarchy/type/TypeHierarchyNodeDescriptor.java index c6cc368144..65ee4f58cc 100644 --- a/plugin/src/main/java/com/intellij/java/impl/ide/hierarchy/type/TypeHierarchyNodeDescriptor.java +++ b/plugin/src/main/java/com/intellij/java/impl/ide/hierarchy/type/TypeHierarchyNodeDescriptor.java @@ -20,19 +20,19 @@ import com.intellij.java.language.psi.PsiAnonymousClass; import com.intellij.java.language.psi.PsiClass; import com.intellij.java.language.psi.PsiFunctionalExpression; -import consulo.application.AllIcons; import consulo.colorScheme.TextAttributes; -import consulo.language.editor.hierarchy.HierarchyNodeDescriptor; -import consulo.ui.ex.util.CompositeAppearance; import consulo.ide.localize.IdeLocalize; +import consulo.language.editor.hierarchy.HierarchyNodeDescriptor; import consulo.language.psi.PsiElement; +import consulo.platform.base.icon.PlatformIconGroup; import consulo.project.Project; import consulo.ui.annotation.RequiredUIAccess; +import consulo.ui.ex.util.CompositeAppearance; import consulo.ui.image.ImageEffects; -import consulo.util.lang.Comparing; import org.jspecify.annotations.Nullable; import java.awt.*; +import java.util.Objects; public final class TypeHierarchyNodeDescriptor extends HierarchyNodeDescriptor { public TypeHierarchyNodeDescriptor( @@ -59,6 +59,7 @@ public boolean canBeDeleted() { return getPsiElement() instanceof PsiClass psiClass ? psiClass.getQualifiedName() : ""; } + @Override @RequiredUIAccess public final boolean update() { boolean changes = super.update(); @@ -72,7 +73,7 @@ public final boolean update() { } if (changes && myIsBase) { - setIcon(ImageEffects.appendRight(AllIcons.Hierarchy.Base, getIcon())); + setIcon(ImageEffects.appendRight(PlatformIconGroup.hierarchyBase(), getIcon())); } PsiElement psiElement = getPsiClass(); @@ -86,18 +87,19 @@ public final boolean update() { classNameAttributes = new TextAttributes(myColor, null, null, null, Font.PLAIN); } if (psiElement instanceof PsiClass psiClass) { - myHighlightedText.getEnding().addText(ClassPresentationUtil.getNameForClass(psiClass, false), classNameAttributes); + myHighlightedText.getEnding().addText(ClassPresentationUtil.getNameForClass(psiClass, false).get(), classNameAttributes); myHighlightedText.getEnding().addText( " (" + JavaHierarchyUtil.getPackageName(psiClass) + ")", HierarchyNodeDescriptor.getPackageNameAttributes() ); } else if (psiElement instanceof PsiFunctionalExpression functionalExpression) { - myHighlightedText.getEnding().addText(ClassPresentationUtil.getFunctionalExpressionPresentation(functionalExpression, false)); + myHighlightedText.getEnding() + .addText(ClassPresentationUtil.getFunctionalExpressionPresentation(functionalExpression, false).get()); } myName = myHighlightedText.getText(); - if (!Comparing.equal(myHighlightedText, oldText)) { + if (!Objects.equals(myHighlightedText, oldText)) { changes = true; } return changes; diff --git a/plugin/src/main/java/com/intellij/java/impl/ide/scopeView/nodes/ClassNode.java b/plugin/src/main/java/com/intellij/java/impl/ide/scopeView/nodes/ClassNode.java index 34e2cb42dd..abf5032c3c 100644 --- a/plugin/src/main/java/com/intellij/java/impl/ide/scopeView/nodes/ClassNode.java +++ b/plugin/src/main/java/com/intellij/java/impl/ide/scopeView/nodes/ClassNode.java @@ -15,36 +15,44 @@ */ package com.intellij.java.impl.ide.scopeView.nodes; -import consulo.ide.impl.idea.ide.scopeView.nodes.BasePsiNode; import com.intellij.java.impl.ide.projectView.impl.nodes.ClassTreeNode; import com.intellij.java.language.impl.psi.presentation.java.ClassPresentationUtil; import com.intellij.java.language.psi.PsiClass; +import consulo.annotation.access.RequiredReadAction; +import consulo.ide.impl.idea.ide.scopeView.nodes.BasePsiNode; /** - * User: anna - * Date: 30-Jan-2006 + * @author anna + * @since 2006-01-30 */ -public class ClassNode extends BasePsiNode implements Comparable{ - public ClassNode(PsiClass aClass) { - super(aClass); - } +public class ClassNode extends BasePsiNode implements Comparable { + @RequiredReadAction + public ClassNode(PsiClass aClass) { + super(aClass); + } - public String toString() { - PsiClass aClass = (PsiClass)getPsiElement(); - return aClass != null && aClass.isValid() ? ClassPresentationUtil.getNameForClass(aClass, false) : ""; - } + @Override + @RequiredReadAction + public String toString() { + PsiClass aClass = (PsiClass) getPsiElement(); + return aClass != null && aClass.isValid() ? ClassPresentationUtil.getNameForClass(aClass, false).get() : ""; + } - @Override - public boolean isDeprecated() { - PsiClass psiClass = (PsiClass)getPsiElement(); - return psiClass != null && psiClass.isDeprecated(); - } + @Override + @RequiredReadAction + public boolean isDeprecated() { + PsiClass psiClass = (PsiClass) getPsiElement(); + return psiClass != null && psiClass.isDeprecated(); + } - public int compareTo(ClassNode o) { - int comparision = ClassTreeNode.getClassPosition((PsiClass)getPsiElement()) - ClassTreeNode.getClassPosition((PsiClass)o.getPsiElement()); - if (comparision == 0) { - return toString().compareToIgnoreCase(o.toString()); + @Override + @RequiredReadAction + public int compareTo(ClassNode o) { + int comparison = ClassTreeNode.getClassPosition((PsiClass) getPsiElement()) - + ClassTreeNode.getClassPosition((PsiClass) o.getPsiElement()); + if (comparison == 0) { + return toString().compareToIgnoreCase(o.toString()); + } + return comparison; } - return comparision; - } } diff --git a/plugin/src/main/java/com/intellij/java/impl/ide/util/MethodOrFunctionalExpressionPresentationProvider.java b/plugin/src/main/java/com/intellij/java/impl/ide/util/MethodOrFunctionalExpressionPresentationProvider.java index 958ddd6401..a05fb9fe0c 100644 --- a/plugin/src/main/java/com/intellij/java/impl/ide/util/MethodOrFunctionalExpressionPresentationProvider.java +++ b/plugin/src/main/java/com/intellij/java/impl/ide/util/MethodOrFunctionalExpressionPresentationProvider.java @@ -47,7 +47,7 @@ public TargetPresentation getPresentation(NavigatablePsiElement element) { PsiNamedElement container = fetchContainer(method); String text = container instanceof PsiClass psiClass - ? ClassPresentationUtil.getNameForClass(psiClass, false) + ? ClassPresentationUtil.getNameForClass(psiClass, false).get() : String.valueOf(container.getName()); if (showMethodNames) { text += "." + PsiFormatUtil.formatMethod( diff --git a/plugin/src/main/java/com/intellij/java/impl/ide/util/PsiClassOrFunctionalExpressionPresentationProvider.java b/plugin/src/main/java/com/intellij/java/impl/ide/util/PsiClassOrFunctionalExpressionPresentationProvider.java index c34146e52a..33f7dad050 100644 --- a/plugin/src/main/java/com/intellij/java/impl/ide/util/PsiClassOrFunctionalExpressionPresentationProvider.java +++ b/plugin/src/main/java/com/intellij/java/impl/ide/util/PsiClassOrFunctionalExpressionPresentationProvider.java @@ -23,7 +23,7 @@ public class PsiClassOrFunctionalExpressionPresentationProvider implements Targe @RequiredReadAction public TargetPresentation getPresentation(NavigatablePsiElement element) { String text = element instanceof PsiClass psiClass - ? ClassPresentationUtil.getNameForClass(psiClass, false) + ? ClassPresentationUtil.getNameForClass(psiClass, false).get() : PsiExpressionTrimRenderer.render((PsiExpression)element); TargetPresentationBuilder builder = Application.get().getInstance(PsiTargetPresentationFactory.class) diff --git a/plugin/src/main/java/com/intellij/java/impl/ide/util/scopeChooser/ClassHierarchyScopeDescriptor.java b/plugin/src/main/java/com/intellij/java/impl/ide/util/scopeChooser/ClassHierarchyScopeDescriptor.java index 47fc928a2d..f13ccbdb1c 100644 --- a/plugin/src/main/java/com/intellij/java/impl/ide/util/scopeChooser/ClassHierarchyScopeDescriptor.java +++ b/plugin/src/main/java/com/intellij/java/impl/ide/util/scopeChooser/ClassHierarchyScopeDescriptor.java @@ -33,47 +33,51 @@ import consulo.language.psi.PsiElement; import consulo.language.psi.scope.LocalSearchScope; import consulo.project.Project; +import consulo.ui.annotation.RequiredUIAccess; import org.jspecify.annotations.Nullable; import java.util.LinkedList; import java.util.List; public class ClassHierarchyScopeDescriptor extends ScopeDescriptor { - private SearchScope myCachedScope; - private final Project myProject; + private SearchScope myCachedScope; + private final Project myProject; - public ClassHierarchyScopeDescriptor(Project project) { - super(null); - myProject = project; - } + public ClassHierarchyScopeDescriptor(Project project) { + super(null); + myProject = project; + } + + @Override + public String getDisplayName() { + return JavaLocalize.javaScopeClassHierarchy().get(); + } - @Override - public String getDisplayName() { - return JavaLocalize.javaScopeClassHierarchy().get(); - } + @Nullable + @RequiredUIAccess + public SearchScope getScope() { + if (myCachedScope == null) { + TreeClassChooser chooser = TreeClassChooserFactory.getInstance(myProject) + .createAllProjectScopeChooser(IdeLocalize.promptChooseBaseClassOfTheHierarchy().get()); - @Nullable - public SearchScope getScope() { - if (myCachedScope == null) { - TreeClassChooser chooser = TreeClassChooserFactory.getInstance(myProject) - .createAllProjectScopeChooser(IdeLocalize.promptChooseBaseClassOfTheHierarchy().get()); + chooser.showDialog(); - chooser.showDialog(); + PsiClass aClass = chooser.getSelected(); + if (aClass == null) { + return null; + } - PsiClass aClass = chooser.getSelected(); - if (aClass == null) return null; + List classesToSearch = new LinkedList<>(); + classesToSearch.add(aClass); - List classesToSearch = new LinkedList<>(); - classesToSearch.add(aClass); + classesToSearch.addAll(ClassInheritorsSearch.search(aClass, true).findAll()); - classesToSearch.addAll(ClassInheritorsSearch.search(aClass, true).findAll()); + myCachedScope = new LocalSearchScope( + PsiUtilBase.toPsiElementArray(classesToSearch), + IdeLocalize.scopeHierarchy(ClassPresentationUtil.getNameForClass(aClass, true)).get() + ); + } - myCachedScope = new LocalSearchScope( - PsiUtilBase.toPsiElementArray(classesToSearch), - IdeLocalize.scopeHierarchy(ClassPresentationUtil.getNameForClass(aClass, true)).get() - ); + return myCachedScope; } - - return myCachedScope; - } } \ No newline at end of file diff --git a/plugin/src/main/java/com/intellij/java/impl/refactoring/changeSignature/inCallers/JavaMethodNode.java b/plugin/src/main/java/com/intellij/java/impl/refactoring/changeSignature/inCallers/JavaMethodNode.java index 3029bbb71d..e59391a0bf 100644 --- a/plugin/src/main/java/com/intellij/java/impl/refactoring/changeSignature/inCallers/JavaMethodNode.java +++ b/plugin/src/main/java/com/intellij/java/impl/refactoring/changeSignature/inCallers/JavaMethodNode.java @@ -19,9 +19,9 @@ import com.intellij.java.language.impl.psi.presentation.java.ClassPresentationUtil; import com.intellij.java.language.psi.*; import com.intellij.java.language.psi.util.PsiFormatUtil; +import consulo.annotation.access.RequiredReadAction; import consulo.language.editor.refactoring.changeSignature.MethodNodeBase; import consulo.language.psi.PsiElement; -import consulo.language.psi.PsiFile; import consulo.language.psi.PsiReference; import consulo.language.psi.scope.GlobalSearchScope; import consulo.language.psi.util.PsiTreeUtil; @@ -39,71 +39,72 @@ public class JavaMethodNode extends MethodNodeBase { - protected JavaMethodNode(PsiMethod method, Set called, Project project, Runnable cancelCallback) { - super(method, called, project, cancelCallback); - } + protected JavaMethodNode(PsiMethod method, Set called, Project project, Runnable cancelCallback) { + super(method, called, project, cancelCallback); + } - @Override - protected MethodNodeBase createNode(PsiMethod caller, HashSet called) { - return new JavaMethodNode(caller, called, myProject, myCancelCallback); - } + @Override + protected MethodNodeBase createNode(PsiMethod caller, HashSet called) { + return new JavaMethodNode(caller, called, myProject, myCancelCallback); + } - @Override - protected List computeCallers() { - PsiReference[] refs = - MethodReferencesSearch.search(myMethod, GlobalSearchScope.allScope(myProject), true).toArray(PsiReference.EMPTY_ARRAY); + @Override + @RequiredReadAction + protected List computeCallers() { + PsiReference[] refs = + MethodReferencesSearch.search(myMethod, GlobalSearchScope.allScope(myProject), true).toArray(PsiReference.EMPTY_ARRAY); - List result = new ArrayList(); - for (PsiReference ref : refs) { - PsiElement element = ref.getElement(); - if (!(element instanceof PsiReferenceExpression) || - !(((PsiReferenceExpression)element).getQualifierExpression() instanceof PsiSuperExpression)) { - PsiElement enclosingContext = PsiTreeUtil.getParentOfType(element, PsiMethod.class, PsiClass.class); - if (enclosingContext instanceof PsiMethod && - !myMethod.equals(enclosingContext) && !myCalled.contains(myMethod)) { //do not add recursive methods - result.add((PsiMethod)enclosingContext); + List result = new ArrayList<>(); + for (PsiReference ref : refs) { + PsiElement element = ref.getElement(); + if (!(element instanceof PsiReferenceExpression refExpr) + || !(refExpr.getQualifierExpression() instanceof PsiSuperExpression)) { + PsiElement enclosingContext = PsiTreeUtil.getParentOfType(element, PsiMethod.class, PsiClass.class); + if (enclosingContext instanceof PsiMethod enclosingMethod + && !myMethod.equals(enclosingMethod) + && !myCalled.contains(myMethod)) { //do not add recursive methods + result.add(enclosingMethod); + } + else if (element instanceof PsiClass aClass) { + result.add(JavaPsiFacade.getElementFactory(myProject).createMethodFromText(aClass.getName() + "(){}", aClass)); + } + } } - else if (element instanceof PsiClass) { - PsiClass aClass = (PsiClass)element; - result.add(JavaPsiFacade.getElementFactory(myProject).createMethodFromText(aClass.getName() + "(){}", aClass)); - } - } + return result; } - return result; - } - @Override - protected void customizeRendererText(ColoredTreeCellRenderer renderer) { - StringBuffer buffer = new StringBuffer(128); - PsiClass containingClass = myMethod.getContainingClass(); - if (containingClass != null) { - buffer.append(ClassPresentationUtil.getNameForClass(containingClass, false)); - buffer.append('.'); - } - String methodText = PsiFormatUtil.formatMethod( - myMethod, - PsiSubstitutor.EMPTY, PsiFormatUtil.SHOW_NAME | PsiFormatUtil.SHOW_PARAMETERS, - PsiFormatUtil.SHOW_TYPE - ); - buffer.append(methodText); + @Override + @RequiredReadAction + protected void customizeRendererText(ColoredTreeCellRenderer renderer) { + StringBuilder buffer = new StringBuilder(128); + PsiClass containingClass = myMethod.getContainingClass(); + if (containingClass != null) { + buffer.append(ClassPresentationUtil.getNameForClass(containingClass, false).get()); + buffer.append('.'); + } + String methodText = PsiFormatUtil.formatMethod( + myMethod, + PsiSubstitutor.EMPTY, PsiFormatUtil.SHOW_NAME | PsiFormatUtil.SHOW_PARAMETERS, + PsiFormatUtil.SHOW_TYPE + ); + buffer.append(methodText); - SimpleTextAttributes attributes = isEnabled() ? - new SimpleTextAttributes(SimpleTextAttributes.STYLE_PLAIN, UIUtil.getTreeForeground()) : - SimpleTextAttributes.EXCLUDED_ATTRIBUTES; - renderer.append(buffer.toString(), attributes); + SimpleTextAttributes attributes = isEnabled() + ? new SimpleTextAttributes(SimpleTextAttributes.STYLE_PLAIN, UIUtil.getTreeForeground()) + : SimpleTextAttributes.EXCLUDED_ATTRIBUTES; + renderer.append(buffer.toString(), attributes); - if (containingClass != null) { - String packageName = getPackageName(containingClass); - renderer.append(" (" + packageName + ")", new SimpleTextAttributes(SimpleTextAttributes.STYLE_ITALIC, JBColor.GRAY)); + if (containingClass != null) { + String packageName = getPackageName(containingClass); + renderer.append(" (" + packageName + ")", new SimpleTextAttributes(SimpleTextAttributes.STYLE_ITALIC, JBColor.GRAY)); + } } - } - @Nullable - private static String getPackageName(PsiClass aClass) { - PsiFile file = aClass.getContainingFile(); - if (file instanceof PsiJavaFile) { - return ((PsiJavaFile)file).getPackageName(); + @Nullable + private static String getPackageName(PsiClass aClass) { + if (aClass.getContainingFile() instanceof PsiJavaFile javaFile) { + return javaFile.getPackageName(); + } + return null; } - return null; - } }