| package com.intellij.projectView; |
| |
| import com.intellij.ide.projectView.impl.AbstractProjectViewPSIPane; |
| import com.intellij.ide.structureView.impl.java.JavaInheritedMembersNodeProvider; |
| import com.intellij.ide.structureView.newStructureView.StructureViewComponent; |
| import com.intellij.openapi.fileEditor.FileEditor; |
| import com.intellij.openapi.fileEditor.FileEditorManager; |
| import com.intellij.openapi.util.Disposer; |
| import com.intellij.openapi.vfs.VirtualFile; |
| import com.intellij.psi.JavaDirectoryService; |
| import com.intellij.psi.PsiClass; |
| import com.intellij.psi.PsiField; |
| import com.intellij.psi.PsiFile; |
| import com.intellij.testFramework.IdeaTestUtil; |
| import com.intellij.testFramework.ProjectViewTestUtil; |
| import com.intellij.util.IncorrectOperationException; |
| import com.intellij.util.ui.tree.TreeUtil; |
| |
| import java.io.IOException; |
| |
| public class ProjectTreeBuilderTest extends BaseProjectViewTestCase { |
| public void testStandardProviders() throws Exception { |
| getProjectTreeStructure().setProviders(); |
| |
| final PsiClass aClass = JavaDirectoryService.getInstance().getClasses(getPackageDirectory())[0]; |
| |
| PsiFile element = aClass.getContainingFile(); |
| |
| myStructure.checkNavigateFromSourceBehaviour(element, element.getVirtualFile(), myStructure.createPane()); |
| } |
| |
| public void testShowClassMembers() throws IncorrectOperationException, IOException { |
| myStructure.setShowMembers(true); |
| useStandardProviders(); |
| final PsiClass[] classes = JavaDirectoryService.getInstance().getClasses(getPackageDirectory()); |
| sortClassesByName(classes); |
| PsiClass aClass = classes[1]; |
| PsiClass innerClass1 = aClass.getInnerClasses()[0]; |
| PsiClass innerClass12 = innerClass1.getInnerClasses()[0]; |
| PsiClass innerClass13 = innerClass12.getInnerClasses()[0]; |
| PsiClass innerClass14 = innerClass13.getInnerClasses()[0]; |
| PsiClass innerClass15 = innerClass14.getInnerClasses()[0]; |
| |
| PsiClass innerClass2 = aClass.getInnerClasses()[1]; |
| PsiClass innerClass21 = innerClass2.getInnerClasses()[0]; |
| PsiClass innerClass23 = innerClass21.getInnerClasses()[0]; |
| PsiClass innerClass24 = innerClass23.getInnerClasses()[0]; |
| |
| PsiField innerClass1Field = innerClass14.getFields()[0]; |
| PsiField innerClass2Field = innerClass24.getFields()[0]; |
| |
| final AbstractProjectViewPSIPane pane = myStructure.createPane(); |
| |
| myStructure.checkNavigateFromSourceBehaviour(innerClass2Field, innerClass2Field.getContainingFile().getVirtualFile(), pane); |
| |
| IdeaTestUtil.assertTreeEqual(pane.getTree(), "-Project\n" + |
| " -PsiDirectory: showClassMembers\n" + |
| " -PsiDirectory: src\n" + |
| " -PsiDirectory: com\n" + |
| " -PsiDirectory: package1\n" + |
| " +Class1\n" + |
| " -Class2\n" + |
| " +InnerClass1\n" + |
| " -InnerClass2\n" + |
| " -InnerClass22\n" + |
| " -InnerClass23\n" + |
| " -InnerClass24\n" + |
| " +InnerClass25\n" + |
| " myFieldToSelect:int\n" + |
| " myInnerClassField:int\n" + |
| " myInnerClassField:int\n" + |
| " myInnerClassField:int\n" + |
| " getValue():int\n" + |
| " myField1:boolean\n" + |
| " myField2:boolean\n" + |
| " myField3:boolean\n" + |
| " myField4:boolean\n" + |
| getRootFiles() + |
| " +External Libraries\n" |
| ); |
| |
| assertFalse(ProjectViewTestUtil.isExpanded(innerClass15.getFields()[0], pane)); |
| assertFalse(ProjectViewTestUtil.isExpanded(innerClass1Field, pane)); |
| assertTrue(ProjectViewTestUtil.isExpanded(innerClass2Field, pane)); |
| |
| VirtualFile virtualFile = aClass.getContainingFile().getVirtualFile(); |
| FileEditorManager fileEditorManager = FileEditorManager.getInstance(myProject); |
| FileEditor[] fileEditors = fileEditorManager.openFile(virtualFile, false); |
| StructureViewComponent structureViewComponent2 = null; |
| StructureViewComponent structureViewComponent = null; |
| |
| try { |
| structureViewComponent = (StructureViewComponent)fileEditors[0].getStructureViewBuilder().createStructureView(fileEditors[0], myProject); |
| TreeUtil.collapseAll(structureViewComponent.getTree(), -1); |
| |
| structureViewComponent.select(innerClass2Field, true); |
| |
| String expected = "-Class2.java\n" + |
| " -Class2\n" + |
| " +InnerClass1\n" + |
| " -InnerClass2\n" + |
| " -InnerClass22\n" + |
| " -InnerClass23\n" + |
| " -InnerClass24\n" + |
| " +InnerClass25\n" + |
| " myFieldToSelect: int\n" + |
| " myInnerClassField: int\n" + |
| " myInnerClassField: int\n" + |
| " myInnerClassField: int\n" + |
| " getValue(): int\n" + |
| " myField1: boolean\n" + |
| " myField2: boolean\n" + |
| " myField3: boolean\n" + |
| " myField4: boolean\n"; |
| |
| IdeaTestUtil.assertTreeEqual(structureViewComponent.getTree(), |
| expected); |
| |
| |
| Disposer.dispose(structureViewComponent); |
| |
| final FileEditor fileEditor = fileEditors[0]; |
| structureViewComponent2 = (StructureViewComponent)fileEditor.getStructureViewBuilder().createStructureView(fileEditor, myProject); |
| structureViewComponent2.setActionActive(JavaInheritedMembersNodeProvider.ID, false); |
| IdeaTestUtil.assertTreeEqual(structureViewComponent2.getTree(), expected); |
| } |
| finally { |
| fileEditorManager.closeFile(virtualFile); |
| if (structureViewComponent2 != null) { |
| Disposer.dispose(structureViewComponent2); |
| } |
| } |
| } |
| } |