use of com.intellij.ide.projectView.ProjectView in project intellij-community by JetBrains.
the class GroupByTypeComparator method compare.
@Override
public int compare(NodeDescriptor descriptor1, NodeDescriptor descriptor2) {
if (!isSortByType() && descriptor1 instanceof ProjectViewNode && ((ProjectViewNode) descriptor1).isSortByFirstChild()) {
final Collection<AbstractTreeNode> children = ((ProjectViewNode) descriptor1).getChildren();
if (!children.isEmpty()) {
descriptor1 = children.iterator().next();
descriptor1.update();
}
}
if (!isSortByType() && descriptor2 instanceof ProjectViewNode && ((ProjectViewNode) descriptor2).isSortByFirstChild()) {
final Collection<AbstractTreeNode> children = ((ProjectViewNode) descriptor2).getChildren();
if (!children.isEmpty()) {
descriptor2 = children.iterator().next();
descriptor2.update();
}
}
if (descriptor1 instanceof ProjectViewNode && descriptor2 instanceof ProjectViewNode) {
final Project project = descriptor1.getProject();
final ProjectView projectView = ProjectView.getInstance(project);
ProjectViewNode node1 = (ProjectViewNode) descriptor1;
ProjectViewNode node2 = (ProjectViewNode) descriptor2;
if (isManualOrder()) {
final Comparable key1 = node1.getManualOrderKey();
final Comparable key2 = node2.getManualOrderKey();
int result = compare(key1, key2);
if (result != 0)
return result;
}
boolean isFoldersOnTop = !(projectView instanceof ProjectViewImpl && !((ProjectViewImpl) projectView).isFoldersAlwaysOnTop());
if (isFoldersOnTop) {
int typeWeight1 = node1.getTypeSortWeight(isSortByType());
int typeWeight2 = node2.getTypeSortWeight(isSortByType());
if (typeWeight1 != 0 && typeWeight2 == 0) {
return -1;
}
if (typeWeight1 == 0 && typeWeight2 != 0) {
return 1;
}
if (typeWeight1 != 0 && typeWeight2 != typeWeight1) {
return typeWeight1 - typeWeight2;
}
}
if (isSortByType()) {
final Comparable typeSortKey1 = node1.getTypeSortKey();
final Comparable typeSortKey2 = node2.getTypeSortKey();
int result = compare(typeSortKey1, typeSortKey2);
if (result != 0)
return result;
} else {
final Comparable typeSortKey1 = node1.getSortKey();
final Comparable typeSortKey2 = node2.getSortKey();
if (typeSortKey1 != null && typeSortKey2 != null) {
int result = compare(typeSortKey1, typeSortKey2);
if (result != 0)
return result;
}
}
if (isAbbreviateQualifiedNames()) {
String key1 = node1.getQualifiedNameSortKey();
String key2 = node2.getQualifiedNameSortKey();
if (key1 != null && key2 != null) {
return naturalCompare(key1, key2);
}
}
}
if (descriptor1 == null)
return -1;
if (descriptor2 == null)
return 1;
return AlphaComparator.INSTANCE.compare(descriptor1, descriptor2);
}
use of com.intellij.ide.projectView.ProjectView in project intellij-community by JetBrains.
the class PsiPackageImplementationHelperImpl method navigate.
@Override
public void navigate(@NotNull final PsiPackage psiPackage, final boolean requestFocus) {
final Project project = psiPackage.getProject();
ToolWindow window = ToolWindowManager.getInstance(project).getToolWindow(ToolWindowId.PROJECT_VIEW);
window.activate(null);
window.getActivation().doWhenDone(() -> {
final ProjectView projectView = ProjectView.getInstance(project);
PsiDirectory[] directories = suggestMostAppropriateDirectories(psiPackage);
if (directories.length == 0)
return;
projectView.select(directories[0], directories[0].getVirtualFile(), requestFocus);
});
}
use of com.intellij.ide.projectView.ProjectView in project intellij-community by JetBrains.
the class ClassesScopeTreeStructureExpander method treeWillExpand.
public void treeWillExpand(TreeExpansionEvent event) throws ExpandVetoException {
if (myProject.isDisposed())
return;
ProjectView projectView = ProjectView.getInstance(myProject);
final TreePath path = event.getPath();
if (path == null)
return;
final DefaultMutableTreeNode node = (DefaultMutableTreeNode) path.getLastPathComponent();
if (node instanceof DirectoryNode) {
Set<ClassNode> classNodes = null;
for (int i = node.getChildCount() - 1; i >= 0; i--) {
final TreeNode childNode = node.getChildAt(i);
if (childNode instanceof FileNode) {
final FileNode fileNode = (FileNode) childNode;
final PsiElement file = fileNode.getPsiElement();
if (file instanceof PsiJavaFile) {
final VirtualFile virtualFile = ((PsiJavaFile) file).getVirtualFile();
if (virtualFile == null || (virtualFile.getFileType() != StdFileTypes.JAVA && virtualFile.getFileType() != StdFileTypes.CLASS)) {
return;
}
final PsiClass[] psiClasses = ((PsiJavaFile) file).getClasses();
if (psiClasses.length > 0) {
if (classNodes == null) {
classNodes = new HashSet<>();
}
for (final PsiClass psiClass : psiClasses) {
if (psiClass != null && psiClass.isValid()) {
final ClassNode classNode = new ClassNode(psiClass);
classNodes.add(classNode);
if (projectView.isShowMembers(ScopeViewPane.ID)) {
final List<PsiElement> result = new ArrayList<>();
PsiClassChildrenSource.DEFAULT_CHILDREN.addChildren(psiClass, result);
for (PsiElement psiElement : result) {
psiElement.accept(new JavaElementVisitor() {
@Override
public void visitClass(PsiClass aClass) {
classNode.add(new ClassNode(aClass));
}
@Override
public void visitMethod(PsiMethod method) {
classNode.add(new MethodNode(method));
}
@Override
public void visitField(PsiField field) {
classNode.add(new FieldNode(field));
}
});
}
}
}
}
node.remove(fileNode);
}
}
}
}
if (classNodes != null) {
for (ClassNode classNode : classNodes) {
node.add(classNode);
}
}
TreeUtil.sort(node, getNodeComparator());
final Object source = event.getSource();
if (source instanceof JTree) {
((DefaultTreeModel) ((JTree) source).getModel()).reload(node);
}
}
}
use of com.intellij.ide.projectView.ProjectView in project intellij-community by JetBrains.
the class ProjectViewSwitchingTest method testSelectProject.
public void testSelectProject() {
ProjectView projectView = ProjectView.getInstance(getProject());
projectView.changeView(ProjectViewPane.ID);
assertEquals(ProjectViewPane.ID, projectView.getCurrentViewId());
//FavoritesManager favoritesManager = FavoritesManager.getInstance(getProject());
//favoritesManager.createNewList("xxxx");
//
//AbstractProjectViewPane currentPane = projectView.getCurrentProjectViewPane();
//assertEquals(FavoritesProjectViewPane.ID, currentPane.getId());
//assertEquals("xxxx", currentPane.getSubId());
//
//favoritesManager.createNewList("yyyy");
//currentPane = projectView.getCurrentProjectViewPane();
//assertEquals(FavoritesProjectViewPane.ID, currentPane.getId());
//assertEquals("yyyy", currentPane.getSubId());
//
//favoritesManager.removeFavoritesList("xxxx");
//currentPane = projectView.getCurrentProjectViewPane();
//assertEquals(FavoritesProjectViewPane.ID, currentPane.getId());
//assertEquals("yyyy", currentPane.getSubId());
}
use of com.intellij.ide.projectView.ProjectView in project intellij-community by JetBrains.
the class NavigateFromSourceTest method testAutoscrollFromSourceOnOpening.
public void testAutoscrollFromSourceOnOpening() throws Exception {
final PsiClass[] classes = JavaDirectoryService.getInstance().getClasses(getPackageDirectory());
PsiClass psiClass = classes[0];
FileEditorManager.getInstance(getProject()).openFile(psiClass.getContainingFile().getVirtualFile(), true);
ProjectView projectView = ProjectView.getInstance(getProject());
((ProjectViewImpl) projectView).setAutoscrollFromSource(true, ProjectViewPane.ID);
ToolWindow toolWindow = ToolWindowManager.getInstance(getProject()).getToolWindow(ToolWindowId.PROJECT_VIEW);
new ProjectViewToolWindowFactory().createToolWindowContent(getProject(), toolWindow);
projectView.changeView(ProjectViewPane.ID);
UIUtil.dispatchAllInvocationEvents();
JComponent component = ((ProjectViewImpl) projectView).getComponent();
DataContext context = DataManager.getInstance().getDataContext(component);
PsiElement element = CommonDataKeys.PSI_ELEMENT.getData(context);
assertEquals("Class1.java", ((PsiJavaFile) element).getName());
}
Aggregations