mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-08-19 01:09:52 +07:00
135 lines
6.5 KiB
Java
135 lines
6.5 KiB
Java
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);
|
|
}
|
|
}
|
|
}
|
|
}
|