From 2c8e2f3b05dd693380729fbd1e7c43da2adf7755 Mon Sep 17 00:00:00 2001 From: Bas Leijdekkers Date: Fri, 10 Oct 2025 23:09:32 +0200 Subject: [PATCH] Java: make Sort by Kind visible in Structure View (IDEA-154161) GitOrigin-RevId: 97c1a3a6a9b59b787930947b09508fa56de997c4 --- .../impl/java/JavaClassTreeElement.java | 29 +- .../structureView/impl/java/KindSorter.java | 18 +- .../structureView/JavaStructureViewTest.java | 8 + .../structureView/JavaTreeStructureTest.java | 274 +++++++++--------- .../structureView/PropertyElementTest.java | 7 +- .../StructureViewUpdatingTest.java | 3 + .../projectView/ProjectTreeBuilderTest.java | 2 + .../messages/StructureViewBundle.properties | 2 +- .../groovy/lang/GroovyStructureViewTest.java | 6 +- .../java/decompiler/IdeaDecompilerTest.kt | 4 +- .../LombokStructureViewExtensionTest.java | 2 + 11 files changed, 185 insertions(+), 170 deletions(-) diff --git a/java/java-structure-view/src/com/intellij/ide/structureView/impl/java/JavaClassTreeElement.java b/java/java-structure-view/src/com/intellij/ide/structureView/impl/java/JavaClassTreeElement.java index e14be0512bb2..deb5f741ce83 100644 --- a/java/java-structure-view/src/com/intellij/ide/structureView/impl/java/JavaClassTreeElement.java +++ b/java/java-structure-view/src/com/intellij/ide/structureView/impl/java/JavaClassTreeElement.java @@ -1,10 +1,11 @@ -// Copyright 2000-2024 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license. +// Copyright 2000-2025 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license. package com.intellij.ide.structureView.impl.java; import com.intellij.ide.structureView.StructureViewTreeElement; import com.intellij.psi.*; import com.intellij.psi.impl.PsiImplUtil; import com.intellij.psi.impl.light.LightElement; +import com.siyeh.ig.psiutils.PsiElementOrderComparator; import org.jetbrains.annotations.NotNull; import java.util.*; @@ -26,22 +27,18 @@ public class JavaClassTreeElement extends JavaClassTreeElementBase { static Collection getClassChildren(PsiClass aClass) { if (aClass == null) return Collections.emptyList(); - LinkedHashSet members = getOwnChildren(aClass); + List members = new ArrayList<>(getOwnChildren(aClass)); + members.sort(PsiElementOrderComparator.getInstance()); List children = new ArrayList<>(members.size()); 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)); + switch (child) { + case PsiClass c -> children.add(new JavaClassTreeElement(c, false)); + case PsiField f -> children.add(new PsiFieldTreeElement(f, false)); + case PsiMethod m -> children.add(new PsiMethodTreeElement(m, false)); + case PsiClassInitializer i -> children.add(new ClassInitializerTreeElement(i)); + default -> {} } } PsiRecordHeader header = aClass.getRecordHeader(); @@ -53,8 +50,8 @@ public class JavaClassTreeElement extends JavaClassTreeElementBase { return children; } - static @NotNull LinkedHashSet getOwnChildren(@NotNull PsiClass aClass) { - LinkedHashSet members = new LinkedHashSet<>(); + static @NotNull Set getOwnChildren(@NotNull PsiClass aClass) { + HashSet members = new HashSet<>(); addPhysicalElements(aClass.getFields(), members, aClass); addPhysicalElements(aClass.getMethods(), members, aClass); addPhysicalElements(aClass.getInnerClasses(), members, aClass); @@ -66,7 +63,7 @@ public class JavaClassTreeElement extends JavaClassTreeElementBase { for (PsiMember element : elements) { PsiElement mirror = PsiImplUtil.handleMirror(element); if (mirror instanceof LightElement) continue; - if (mirror instanceof PsiMember && aClass.equals(((PsiMember)mirror).getContainingClass())) { + if (mirror instanceof PsiMember member && aClass.equals(member.getContainingClass())) { to.add(mirror); } } diff --git a/java/java-structure-view/src/com/intellij/ide/structureView/impl/java/KindSorter.java b/java/java-structure-view/src/com/intellij/ide/structureView/impl/java/KindSorter.java index 8a6335d57ada..58d4faf4fc9f 100644 --- a/java/java-structure-view/src/com/intellij/ide/structureView/impl/java/KindSorter.java +++ b/java/java-structure-view/src/com/intellij/ide/structureView/impl/java/KindSorter.java @@ -1,15 +1,19 @@ -// Copyright 2000-2024 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license. +// Copyright 2000-2025 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license. package com.intellij.ide.structureView.impl.java; +import com.intellij.icons.AllIcons; +import com.intellij.ide.structureView.StructureViewBundle; import com.intellij.ide.util.treeView.smartTree.ActionPresentation; +import com.intellij.ide.util.treeView.smartTree.ActionPresentationData; import com.intellij.ide.util.treeView.smartTree.Sorter; +import com.intellij.ide.util.treeView.smartTree.TreeActionWithDefaultState; import com.intellij.psi.PsiMethod; import org.jetbrains.annotations.NonNls; import org.jetbrains.annotations.NotNull; import java.util.Comparator; -public class KindSorter implements Sorter { +public class KindSorter implements Sorter, TreeActionWithDefaultState { public static final Sorter INSTANCE = new KindSorter(false); public static final Sorter POPUP_INSTANCE = new KindSorter(true); @@ -61,12 +65,18 @@ public class KindSorter implements Sorter { @Override public boolean isVisible() { - return false; + return true; + } + + @Override + public boolean isEnabledByDefault() { + return true; } @Override public @NotNull ActionPresentation getPresentation() { - throw new IllegalStateException(); + return new ActionPresentationData( + StructureViewBundle.message("action.structureview.sort.by.kind"), null, AllIcons.ObjectBrowser.SortByType); } @Override diff --git a/java/java-tests/testSrc/com/intellij/java/structureView/JavaStructureViewTest.java b/java/java-tests/testSrc/com/intellij/java/structureView/JavaStructureViewTest.java index e29ae43768bd..89cf42a71036 100644 --- a/java/java-tests/testSrc/com/intellij/java/structureView/JavaStructureViewTest.java +++ b/java/java-tests/testSrc/com/intellij/java/structureView/JavaStructureViewTest.java @@ -458,6 +458,7 @@ public class JavaStructureViewTest extends LightJavaStructureViewTestCaseBase { public void testVisibilitySorterComparingEqualKnown() { init(); myFixture.testStructureView(svc -> { + svc.setActionActive(KindSorter.ID, true); svc.setActionActive(InheritedMembersNodeProvider.ID, true); PlatformTestUtil.assertTreeEqual(svc.getTree(), """ @@ -522,6 +523,7 @@ public class JavaStructureViewTest extends LightJavaStructureViewTestCaseBase { public void testVisibilitySorterCompareInheritanceGroups() { init(); myFixture.testStructureView(svc -> { + svc.setActionActive(KindSorter.ID, true); svc.setActionActive(PropertiesGrouper.ID, true); svc.setActionActive(SuperTypesGrouper.ID, true); svc.setActionActive(InheritedMembersNodeProvider.ID, true); @@ -560,6 +562,7 @@ public class JavaStructureViewTest extends LightJavaStructureViewTestCaseBase { myFixture.configureByText("Derived.java", DERIVED); myFixture.testStructureView(svc -> { + svc.setActionActive(KindSorter.ID, true); svc.setActionActive(FieldsFilter.ID, true); svc.setActionActive(Sorter.getAlphaSorterId(), true); @@ -587,6 +590,7 @@ public class JavaStructureViewTest extends LightJavaStructureViewTestCaseBase { init(); myFixture.testStructureView(svc -> { + svc.setActionActive(KindSorter.ID, true); svc.setActionActive(InheritedMembersNodeProvider.ID, true); svc.setActionActive(PropertiesGrouper.ID, true); svc.setActionActive(SuperTypesGrouper.ID, true); @@ -613,6 +617,7 @@ public class JavaStructureViewTest extends LightJavaStructureViewTestCaseBase { init(); myFixture.testStructureView(svc -> { + svc.setActionActive(KindSorter.ID, true); svc.setActionActive(InheritedMembersNodeProvider.ID, true); svc.setActionActive(PropertiesGrouper.ID, false); svc.setActionActive(SuperTypesGrouper.ID, true); @@ -671,6 +676,7 @@ public class JavaStructureViewTest extends LightJavaStructureViewTestCaseBase { init(); myFixture.testStructureView(svc -> { + svc.setActionActive(KindSorter.ID, true); svc.setActionActive(InheritedMembersNodeProvider.ID, true); svc.setActionActive(PropertiesGrouper.ID, false); svc.setActionActive(SuperTypesGrouper.ID, true); @@ -722,6 +728,7 @@ public class JavaStructureViewTest extends LightJavaStructureViewTestCaseBase { myFixture.configureByText("a.java", "enum F { A,B,C}"); myFixture.testStructureView(svc -> { + svc.setActionActive(KindSorter.ID, true); svc.setActionActive(InheritedMembersNodeProvider.ID, true); svc.setActionActive(PropertiesGrouper.ID, false); svc.setActionActive(SuperTypesGrouper.ID, true); @@ -777,6 +784,7 @@ public class JavaStructureViewTest extends LightJavaStructureViewTestCaseBase { boolean showInherited) { myFixture.configureByText("Test.java", classText); myFixture.testStructureView(svc -> { + svc.setActionActive(KindSorter.ID, true); svc.setActionActive(SuperTypesGrouper.ID, showInterfaces); svc.setActionActive(PropertiesGrouper.ID, showProperties); svc.setActionActive(InheritedMembersNodeProvider.ID, showInherited); diff --git a/java/java-tests/testSrc/com/intellij/java/structureView/JavaTreeStructureTest.java b/java/java-tests/testSrc/com/intellij/java/structureView/JavaTreeStructureTest.java index f2d886079c32..7dd74060e042 100644 --- a/java/java-tests/testSrc/com/intellij/java/structureView/JavaTreeStructureTest.java +++ b/java/java-tests/testSrc/com/intellij/java/structureView/JavaTreeStructureTest.java @@ -1,4 +1,4 @@ -// Copyright 2000-2018 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. +// Copyright 2000-2025 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license. package com.intellij.java.structureView; import com.intellij.JavaTestUtil; @@ -24,176 +24,164 @@ public class JavaTreeStructureTest extends TestSourceBasedTestCase { } public void testJavaClassStructure() { - doTest(new CheckAction() { - @Override - public void testClassStructure(StructureViewComponent svc) { - svc.setActionActive(InheritedMembersNodeProvider.ID, true); + doTest(svc -> { + svc.setActionActive(InheritedMembersNodeProvider.ID, true); - PlatformTestUtil.assertTreeEqual( - svc.getTree(), - """ - -Class1.java - -Class1 - getValue(): int - getClass(): Class - hashCode(): int - equals(Object): boolean - clone(): Object - toString(): String - notify(): void - notifyAll(): void - wait(long): void - wait(long, int): void - wait(): void - finalize(): void - myField1: boolean - myField2: boolean - """); + PlatformTestUtil.assertTreeEqual( + svc.getTree(), + """ + -Class1.java + -Class1 + myField1: boolean + myField2: boolean + getValue(): int + getClass(): Class + hashCode(): int + equals(Object): boolean + clone(): Object + toString(): String + notify(): void + notifyAll(): void + wait(long): void + wait(long, int): void + wait(): void + finalize(): void + """); - svc.setActionActive(InheritedMembersNodeProvider.ID, false); - svc.setActionActive(InheritedMembersNodeProvider.ID, true); - svc.setActionActive(InheritedMembersNodeProvider.ID, false); + svc.setActionActive(InheritedMembersNodeProvider.ID, false); + svc.setActionActive(InheritedMembersNodeProvider.ID, true); + svc.setActionActive(InheritedMembersNodeProvider.ID, false); - PlatformTestUtil.assertTreeEqual( - svc.getTree(), - """ - -Class1.java - -Class1 - getValue(): int - myField1: boolean - myField2: boolean - """); + PlatformTestUtil.assertTreeEqual( + svc.getTree(), + """ + -Class1.java + -Class1 + myField1: boolean + myField2: boolean + getValue(): int + """); - svc.setActionActive(PublicElementsFilter.ID, true); + svc.setActionActive(PublicElementsFilter.ID, true); - PlatformTestUtil.assertTreeEqual( - svc.getTree(), - """ - -Class1.java - -Class1 - getValue(): int - myField1: boolean - myField2: boolean - """); + PlatformTestUtil.assertTreeEqual( + svc.getTree(), + """ + -Class1.java + -Class1 + myField1: boolean + myField2: boolean + getValue(): int + """); - svc.setActionActive(PublicElementsFilter.ID, false); + svc.setActionActive(PublicElementsFilter.ID, false); - PlatformTestUtil.assertTreeEqual( - svc.getTree(), - """ - -Class1.java - -Class1 - getValue(): int - myField1: boolean - myField2: boolean - """); - } + PlatformTestUtil.assertTreeEqual( + svc.getTree(), + """ + -Class1.java + -Class1 + myField1: boolean + myField2: boolean + getValue(): int + """); }); } public void testShowClassMembers() { - doTest(new CheckAction() { - @Override - public void testClassStructure(StructureViewComponent svc) { - svc.setActionActive(InheritedMembersNodeProvider.ID, true); + doTest(svc -> { + svc.setActionActive(InheritedMembersNodeProvider.ID, true); - JTree tree = svc.getTree(); - tree.collapseRow(2); - PlatformTestUtil.assertTreeEqual( - tree, - """ - -Class2.java - -Class2 - +InnerClass1 - +InnerClass2 - getValue(): int - getClass(): Class - hashCode(): int - equals(Object): boolean - clone(): Object - toString(): String - notify(): void - notifyAll(): void - wait(long): void - wait(long, int): void - wait(): void - finalize(): void - myField1: boolean - myField2: boolean - myField3: boolean - myField4: boolean - """); + JTree tree = svc.getTree(); + tree.collapseRow(2); + PlatformTestUtil.assertTreeEqual( + tree, + """ + -Class2.java + -Class2 + myField1: boolean + myField2: boolean + myField3: boolean + myField4: boolean + getValue(): int + +InnerClass1 + +InnerClass2 + getClass(): Class + hashCode(): int + equals(Object): boolean + clone(): Object + toString(): String + notify(): void + notifyAll(): void + wait(long): void + wait(long, int): void + wait(): void + finalize(): void + """); - svc.setActionActive(InheritedMembersNodeProvider.ID, false); + svc.setActionActive(InheritedMembersNodeProvider.ID, false); - PlatformTestUtil.assertTreeEqual( - svc.getTree(), - """ - -Class2.java - -Class2 - +InnerClass1 - +InnerClass2 - getValue(): int - myField1: boolean - myField2: boolean - myField3: boolean - myField4: boolean - """); - } + PlatformTestUtil.assertTreeEqual( + svc.getTree(), + """ + -Class2.java + -Class2 + myField1: boolean + myField2: boolean + myField3: boolean + myField4: boolean + getValue(): int + +InnerClass1 + +InnerClass2 + """); }); } public void testVisibilitySorter() { - doTest(new CheckAction() { - @Override - public void testClassStructure(StructureViewComponent svc) { - svc.setActionActive(InheritedMembersNodeProvider.ID, false); + doTest(svc -> { + svc.setActionActive(InheritedMembersNodeProvider.ID, false); - PlatformTestUtil.assertTreeEqual( - svc.getTree(), - """ - -Class2.java - -Class2 - __myPrivateFiield: int - _myProtectedField: int - myPublicField: int - """); + PlatformTestUtil.assertTreeEqual( + svc.getTree(), + """ + -Class2.java + -Class2 + __myPrivateFiield: int + _myProtectedField: int + myPublicField: int + """); - svc.setActionActive(VisibilitySorter.ID, true); + svc.setActionActive(VisibilitySorter.ID, true); - PlatformTestUtil.assertTreeEqual( - svc.getTree(), - """ - -Class2.java - -Class2 - myPublicField: int - _myProtectedField: int - __myPrivateFiield: int - """); - } + PlatformTestUtil.assertTreeEqual( + svc.getTree(), + """ + -Class2.java + -Class2 + myPublicField: int + _myProtectedField: int + __myPrivateFiield: int + """); }); } public void testMembersOrder() { - doTest(new CheckAction() { - @Override - public void testClassStructure(StructureViewComponent svc) { - svc.setActionActive(InheritedMembersNodeProvider.ID, false); + doTest(svc -> { + svc.setActionActive(InheritedMembersNodeProvider.ID, false); - PlatformTestUtil.assertTreeEqual( - svc.getTree(), + PlatformTestUtil.assertTreeEqual( + svc.getTree(), + """ + -Class2.java + -Class2 + ab: int + z: int + af(): void + zf(): void + Class2() """ - -Class2.java - -Class2 - Class2() - af(): void - zf(): void - ab: int - z: int - """ - ); - } + ); }); } diff --git a/java/java-tests/testSrc/com/intellij/java/structureView/PropertyElementTest.java b/java/java-tests/testSrc/com/intellij/java/structureView/PropertyElementTest.java index b07946be5fcd..18b463eea49b 100644 --- a/java/java-tests/testSrc/com/intellij/java/structureView/PropertyElementTest.java +++ b/java/java-tests/testSrc/com/intellij/java/structureView/PropertyElementTest.java @@ -1,10 +1,7 @@ // Copyright 2000-2024 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license. package com.intellij.java.structureView; -import com.intellij.ide.structureView.impl.java.FieldsFilter; -import com.intellij.ide.structureView.impl.java.PropertiesGrouper; -import com.intellij.ide.structureView.impl.java.PropertyGroup; -import com.intellij.ide.structureView.impl.java.PublicElementsFilter; +import com.intellij.ide.structureView.impl.java.*; import com.intellij.ide.structureView.newStructureView.StructureViewComponent; import com.intellij.ide.util.InheritedMembersNodeProvider; import com.intellij.ide.util.treeView.smartTree.GroupWrapper; @@ -128,6 +125,7 @@ public class PropertyElementTest extends LightJavaStructureViewTestCaseBase { init(); myFixture.testStructureView(component -> { + component.setActionActive(KindSorter.ID, true); component.setActionActive(PropertiesGrouper.ID, true); component.setActionActive(Sorter.getAlphaSorterId(), true); JTree tree = component.getTree(); @@ -181,6 +179,7 @@ public class PropertyElementTest extends LightJavaStructureViewTestCaseBase { myFixture.configureByText("A.java", NOT_STATIC_GETTERS); myFixture.testStructureView(component -> { + component.setActionActive(KindSorter.ID, true); component.setActionActive(PropertiesGrouper.ID, true); component.setActionActive(Sorter.getAlphaSorterId(), true); component.setActionActive(InheritedMembersNodeProvider.ID, false); diff --git a/java/java-tests/testSrc/com/intellij/java/structureView/StructureViewUpdatingTest.java b/java/java-tests/testSrc/com/intellij/java/structureView/StructureViewUpdatingTest.java index a7c356986d01..09b6acf4c274 100644 --- a/java/java-tests/testSrc/com/intellij/java/structureView/StructureViewUpdatingTest.java +++ b/java/java-tests/testSrc/com/intellij/java/structureView/StructureViewUpdatingTest.java @@ -2,6 +2,7 @@ package com.intellij.java.structureView; import com.intellij.JavaTestUtil; +import com.intellij.ide.structureView.impl.java.KindSorter; import com.intellij.ide.structureView.newStructureView.StructureViewComponent; import com.intellij.ide.util.InheritedMembersNodeProvider; import com.intellij.openapi.command.CommandProcessor; @@ -44,6 +45,7 @@ public class StructureViewUpdatingTest extends TestSourceBasedTestCase { Disposer.register(getTestRootDisposable(), svc); fileEditorManager.closeFile(virtualFile); Document document = PsiDocumentManager.getInstance(myProject).getDocument(psiClass.getContainingFile()); + svc.setActionActive(KindSorter.ID, true); svc.setActionActive(InheritedMembersNodeProvider.ID, true); PlatformTestUtil.assertTreeEqual( svc.getTree(), @@ -106,6 +108,7 @@ public class StructureViewUpdatingTest extends TestSourceBasedTestCase { FileEditor fileEditor = fileEditors[0]; StructureViewComponent svc = (StructureViewComponent)fileEditor.getStructureViewBuilder() .createStructureView(fileEditor, myProject); + svc.setActionActive(KindSorter.ID, true); Disposer.register(getTestRootDisposable(), svc); fileEditorManager.closeFile(virtualFile); PlatformTestUtil.waitForPromise(svc.rebuildAndUpdate()); diff --git a/java/java-tests/testSrc/com/intellij/projectView/ProjectTreeBuilderTest.java b/java/java-tests/testSrc/com/intellij/projectView/ProjectTreeBuilderTest.java index f0d9031c1607..1254de2e017a 100644 --- a/java/java-tests/testSrc/com/intellij/projectView/ProjectTreeBuilderTest.java +++ b/java/java-tests/testSrc/com/intellij/projectView/ProjectTreeBuilderTest.java @@ -3,6 +3,7 @@ package com.intellij.projectView; import com.intellij.ide.projectView.impl.AbstractProjectViewPane; import com.intellij.ide.structureView.impl.java.JavaInheritedMembersNodeProvider; +import com.intellij.ide.structureView.impl.java.KindSorter; import com.intellij.ide.structureView.newStructureView.StructureViewComponent; import com.intellij.openapi.fileEditor.FileEditor; import com.intellij.openapi.fileEditor.FileEditorManager; @@ -92,6 +93,7 @@ public class ProjectTreeBuilderTest extends BaseProjectViewTestCase { FileEditor[] fileEditors = fileEditorManager.openFile(virtualFile, false); StructureViewComponent svc = (StructureViewComponent)fileEditors[0].getStructureViewBuilder() .createStructureView(fileEditors[0], myProject); + svc.setActionActive(KindSorter.ID, true); Disposer.register(getTestRootDisposable(), svc); TreeUtil.collapseAll(svc.getTree(), -1); fileEditorManager.closeFile(virtualFile); diff --git a/platform/structure-view-impl/resources/messages/StructureViewBundle.properties b/platform/structure-view-impl/resources/messages/StructureViewBundle.properties index 4d48c7d2c94c..01e10cc21076 100644 --- a/platform/structure-view-impl/resources/messages/StructureViewBundle.properties +++ b/platform/structure-view-impl/resources/messages/StructureViewBundle.properties @@ -3,13 +3,13 @@ action.structureview.group.methods.by.defining.type=Members by Defining Type action.structureview.show.fields=Fields action.structureview.show.inherited=Inherited action.structureview.sort.by.visibility=By Visibility +action.structureview.sort.by.kind=By Kind file.structure.toggle.show.inherited=Inherited members node.structureview.invalid= node.structureview.empty= structureview.subgroup.sort=Sort structureview.subgroup.filter=Show structureview.subgroup.group=Group -structureview.action.show.logical=Logical Structure action.logical.structure.dump.yaml.text=Dump Logical Structure structureview.tab.logical=Logical structureview.tab.physical=Physical diff --git a/plugins/groovy/test/org/jetbrains/plugins/groovy/lang/GroovyStructureViewTest.java b/plugins/groovy/test/org/jetbrains/plugins/groovy/lang/GroovyStructureViewTest.java index c09b970fbbb9..7b8f78630c99 100644 --- a/plugins/groovy/test/org/jetbrains/plugins/groovy/lang/GroovyStructureViewTest.java +++ b/plugins/groovy/test/org/jetbrains/plugins/groovy/lang/GroovyStructureViewTest.java @@ -1,6 +1,7 @@ -// Copyright 2000-2024 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license. +// Copyright 2000-2025 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license. package org.jetbrains.plugins.groovy.lang; +import com.intellij.ide.structureView.impl.java.KindSorter; import com.intellij.ide.util.InheritedMembersNodeProvider; import com.intellij.testFramework.PlatformTestUtil; import com.intellij.testFramework.fixtures.LightJavaCodeInsightFixtureTestCase; @@ -17,6 +18,7 @@ public class GroovyStructureViewTest extends LightJavaCodeInsightFixtureTestCase } """); myFixture.testStructureView(component -> { + component.setActionActive(KindSorter.ID, true); component.setActionActive(InheritedMembersNodeProvider.ID, false); PlatformTestUtil.assertTreeEqual(component.getTree(), """ -a.groovy @@ -40,6 +42,7 @@ public class GroovyStructureViewTest extends LightJavaCodeInsightFixtureTestCase } """); myFixture.testStructureView(component -> { + component.setActionActive(KindSorter.ID, true); component.setActionActive(InheritedMembersNodeProvider.ID, true); PlatformTestUtil.assertTreeEqual(component.getTree(), """ -a.groovy @@ -87,6 +90,7 @@ public class GroovyStructureViewTest extends LightJavaCodeInsightFixtureTestCase } """); myFixture.testStructureView(component -> { + component.setActionActive(KindSorter.ID, true); component.setActionActive(InheritedMembersNodeProvider.ID, false); PlatformTestUtil.assertTreeEqual(component.getTree(), """ -a.groovy diff --git a/plugins/java-decompiler/plugin/test/com/intellij/java/decompiler/IdeaDecompilerTest.kt b/plugins/java-decompiler/plugin/test/com/intellij/java/decompiler/IdeaDecompilerTest.kt index ee8f22e07dcd..6a0e7561455e 100644 --- a/plugins/java-decompiler/plugin/test/com/intellij/java/decompiler/IdeaDecompilerTest.kt +++ b/plugins/java-decompiler/plugin/test/com/intellij/java/decompiler/IdeaDecompilerTest.kt @@ -1,4 +1,4 @@ -// Copyright 2000-2024 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license. +// Copyright 2000-2025 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license. package com.intellij.java.decompiler import com.intellij.JavaTestUtil @@ -11,6 +11,7 @@ import com.intellij.ide.highlighter.ArchiveFileType import com.intellij.ide.highlighter.JavaClassFileType import com.intellij.ide.structureView.StructureViewBuilder import com.intellij.ide.structureView.impl.java.JavaAnonymousClassesNodeProvider +import com.intellij.ide.structureView.impl.java.KindSorter import com.intellij.ide.structureView.newStructureView.StructureViewComponent import com.intellij.lang.java.JavaLanguage import com.intellij.openapi.application.PluginPathManager @@ -321,6 +322,7 @@ class IdeaDecompilerTest : LightJavaCodeInsightFixtureTestCase() { val builder = StructureViewBuilder.getProvider().getStructureViewBuilder(JavaClassFileType.INSTANCE, file, project)!! val svc = builder.createStructureView(editor, project) as StructureViewComponent Disposer.register(myFixture.testRootDisposable, svc) + svc.setActionActive(KindSorter.ID, true) svc.setActionActive(JavaAnonymousClassesNodeProvider.ID, true) PlatformTestUtil.expandAll(svc.tree) PlatformTestUtil.assertTreeEqual(svc.tree, s.trimIndent()) diff --git a/plugins/lombok/src/test/java/de/plushnikov/intellij/plugin/extension/LombokStructureViewExtensionTest.java b/plugins/lombok/src/test/java/de/plushnikov/intellij/plugin/extension/LombokStructureViewExtensionTest.java index 4bb020a5bc1c..c6b5421cd1a9 100644 --- a/plugins/lombok/src/test/java/de/plushnikov/intellij/plugin/extension/LombokStructureViewExtensionTest.java +++ b/plugins/lombok/src/test/java/de/plushnikov/intellij/plugin/extension/LombokStructureViewExtensionTest.java @@ -1,6 +1,7 @@ package de.plushnikov.intellij.plugin.extension; import com.intellij.ide.structureView.impl.java.JavaAnonymousClassesNodeProvider; +import com.intellij.ide.structureView.impl.java.KindSorter; import com.intellij.ide.structureView.impl.java.PropertiesGrouper; import com.intellij.ide.structureView.impl.java.SuperTypesGrouper; import com.intellij.testFramework.PlatformTestUtil; @@ -68,6 +69,7 @@ public class LombokStructureViewExtensionTest extends AbstractLombokLightCodeIns svc.setActionActive(SuperTypesGrouper.ID, showInterfaces); svc.setActionActive(PropertiesGrouper.ID, showProperties); svc.setActionActive(JavaAnonymousClassesNodeProvider.ID, true); + svc.setActionActive(KindSorter.ID, true); JTree tree = svc.getTree(); PlatformTestUtil.waitWhileBusy(tree); PlatformTestUtil.expandAll(tree);