Search in sources :

Example 6 with ProjectView

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);
}
Also used : Project(com.intellij.openapi.project.Project) ProjectViewNode(com.intellij.ide.projectView.ProjectViewNode) AbstractTreeNode(com.intellij.ide.util.treeView.AbstractTreeNode) ProjectView(com.intellij.ide.projectView.ProjectView)

Example 7 with ProjectView

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);
    });
}
Also used : Project(com.intellij.openapi.project.Project) ToolWindow(com.intellij.openapi.wm.ToolWindow) ProjectView(com.intellij.ide.projectView.ProjectView)

Example 8 with ProjectView

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);
        }
    }
}
Also used : VirtualFile(com.intellij.openapi.vfs.VirtualFile) ArrayList(java.util.ArrayList) DirectoryNode(com.intellij.packageDependencies.ui.DirectoryNode) MethodNode(com.intellij.ide.scopeView.nodes.MethodNode) ProjectView(com.intellij.ide.projectView.ProjectView) ClassNode(com.intellij.ide.scopeView.nodes.ClassNode) FieldNode(com.intellij.ide.scopeView.nodes.FieldNode) FileNode(com.intellij.packageDependencies.ui.FileNode)

Example 9 with ProjectView

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());
}
Also used : ProjectView(com.intellij.ide.projectView.ProjectView)

Example 10 with ProjectView

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());
}
Also used : ToolWindow(com.intellij.openapi.wm.ToolWindow) DataContext(com.intellij.openapi.actionSystem.DataContext) ProjectView(com.intellij.ide.projectView.ProjectView) ProjectViewImpl(com.intellij.ide.projectView.impl.ProjectViewImpl) ProjectViewToolWindowFactory(com.intellij.ide.projectView.impl.ProjectViewToolWindowFactory)

Aggregations

ProjectView (com.intellij.ide.projectView.ProjectView)19 NotNull (org.jetbrains.annotations.NotNull)8 Project (com.intellij.openapi.project.Project)4 VirtualFile (com.intellij.openapi.vfs.VirtualFile)4 SelectInTarget (com.intellij.ide.SelectInTarget)3 AbstractProjectViewPane (com.intellij.ide.projectView.impl.AbstractProjectViewPane)3 Module (com.intellij.openapi.module.Module)3 ActionCallback (com.intellij.openapi.util.ActionCallback)3 ToolWindow (com.intellij.openapi.wm.ToolWindow)3 CompositeSelectInTarget (com.intellij.ide.CompositeSelectInTarget)2 DataContext (com.intellij.openapi.actionSystem.DataContext)2 ToolWindowManager (com.intellij.openapi.wm.ToolWindowManager)2 ArrayList (java.util.ArrayList)2 GuiTask (org.fest.swing.edt.GuiTask)2 Condition (org.fest.swing.timing.Condition)2 Assert.assertNotNull (org.junit.Assert.assertNotNull)2 DataManager (com.intellij.ide.DataManager)1 PsiCopyPasteManager (com.intellij.ide.PsiCopyPasteManager)1 com.intellij.ide.dnd (com.intellij.ide.dnd)1 DnDAwareTree (com.intellij.ide.dnd.aware.DnDAwareTree)1