Search in sources :

Example 61 with DefaultTreeModel

use of javax.swing.tree.DefaultTreeModel in project intellij-community by JetBrains.

the class ScopeTreeViewPanel method reload.

private void reload(@Nullable final DefaultMutableTreeNode rootToReload) {
    final DefaultTreeModel treeModel = (DefaultTreeModel) myTree.getModel();
    if (rootToReload != null && rootToReload != treeModel.getRoot()) {
        final List<TreePath> treePaths = TreeUtil.collectExpandedPaths(myTree, new TreePath(rootToReload.getPath()));
        final List<TreePath> selectionPaths = TreeUtil.collectSelectedPaths(myTree, new TreePath(rootToReload.getPath()));
        final TreePath path = new TreePath(rootToReload.getPath());
        final boolean wasCollapsed = myTree.isCollapsed(path);
        final Runnable runnable = () -> {
            if (!isTreeShowing() || rootToReload.getParent() == null)
                return;
            TreeUtil.sort(rootToReload, getNodeComparator());
            treeModel.reload(rootToReload);
            if (!wasCollapsed) {
                myTree.collapsePath(path);
                for (TreePath treePath : treePaths) {
                    myTree.expandPath(treePath);
                }
                for (TreePath selectionPath : selectionPaths) {
                    TreeUtil.selectPath(myTree, selectionPath);
                }
            }
        };
        if (ApplicationManager.getApplication().isUnitTestMode()) {
            runnable.run();
        } else {
            SwingUtilities.invokeLater(runnable);
        }
    } else {
        TreeUtil.sort(treeModel, getNodeComparator());
        treeModel.reload();
    }
}
Also used : TreePath(javax.swing.tree.TreePath) DefaultTreeModel(javax.swing.tree.DefaultTreeModel)

Example 62 with DefaultTreeModel

use of javax.swing.tree.DefaultTreeModel in project intellij-community by JetBrains.

the class TodoView method initToolWindow.

public void initToolWindow(@NotNull ToolWindow toolWindow) {
    // Create panels
    ContentFactory contentFactory = ContentFactory.SERVICE.getInstance();
    Content allTodosContent = contentFactory.createContent(null, IdeBundle.message("title.project"), false);
    myAllTodos = new TodoPanel(myProject, state.all, false, allTodosContent) {

        @Override
        protected TodoTreeBuilder createTreeBuilder(JTree tree, DefaultTreeModel treeModel, Project project) {
            AllTodosTreeBuilder builder = createAllTodoBuilder(tree, treeModel, project);
            builder.init();
            return builder;
        }
    };
    allTodosContent.setComponent(myAllTodos);
    Disposer.register(this, myAllTodos);
    Content currentFileTodosContent = contentFactory.createContent(null, IdeBundle.message("title.todo.current.file"), false);
    CurrentFileTodosPanel currentFileTodos = new CurrentFileTodosPanel(myProject, state.current, currentFileTodosContent) {

        @Override
        protected TodoTreeBuilder createTreeBuilder(JTree tree, DefaultTreeModel treeModel, Project project) {
            CurrentFileTodosTreeBuilder builder = new CurrentFileTodosTreeBuilder(tree, treeModel, project);
            builder.init();
            return builder;
        }
    };
    Disposer.register(this, currentFileTodos);
    currentFileTodosContent.setComponent(currentFileTodos);
    myChangeListTodosContent = contentFactory.createContent(null, IdeBundle.message("changelist.todo.title", ChangeListManager.getInstance(myProject).getDefaultChangeList().getName()), false);
    ChangeListTodosPanel changeListTodos = new ChangeListTodosPanel(myProject, state.current, myChangeListTodosContent) {

        @Override
        protected TodoTreeBuilder createTreeBuilder(JTree tree, DefaultTreeModel treeModel, Project project) {
            ChangeListTodosTreeBuilder builder = new ChangeListTodosTreeBuilder(tree, treeModel, project);
            builder.init();
            return builder;
        }
    };
    Disposer.register(this, changeListTodos);
    myChangeListTodosContent.setComponent(changeListTodos);
    Content scopeBasedTodoContent = contentFactory.createContent(null, "Scope Based", false);
    ScopeBasedTodosPanel scopeBasedTodos = new ScopeBasedTodosPanel(myProject, state.current, scopeBasedTodoContent);
    Disposer.register(this, scopeBasedTodos);
    scopeBasedTodoContent.setComponent(scopeBasedTodos);
    myContentManager = toolWindow.getContentManager();
    myContentManager.addContent(allTodosContent);
    myContentManager.addContent(currentFileTodosContent);
    myContentManager.addContent(scopeBasedTodoContent);
    if (ProjectLevelVcsManager.getInstance(myProject).hasActiveVcss()) {
        myVcsListener.myIsVisible = true;
        myContentManager.addContent(myChangeListTodosContent);
    }
    for (Content content : myNotAddedContent) {
        myContentManager.addContent(content);
    }
    myChangeListTodosContent.setCloseable(false);
    allTodosContent.setCloseable(false);
    currentFileTodosContent.setCloseable(false);
    scopeBasedTodoContent.setCloseable(false);
    Content content = myContentManager.getContent(state.selectedIndex);
    myContentManager.setSelectedContent(content == null ? allTodosContent : content);
    myPanels.add(myAllTodos);
    myPanels.add(changeListTodos);
    myPanels.add(currentFileTodos);
    myPanels.add(scopeBasedTodos);
}
Also used : DefaultTreeModel(javax.swing.tree.DefaultTreeModel) ContentFactory(com.intellij.ui.content.ContentFactory) Project(com.intellij.openapi.project.Project) Content(com.intellij.ui.content.Content)

Example 63 with DefaultTreeModel

use of javax.swing.tree.DefaultTreeModel in project intellij-community by JetBrains.

the class TodoView method addCustomTodoView.

public void addCustomTodoView(final TodoTreeBuilderFactory factory, final String title, final TodoPanelSettings settings) {
    Content content = ContentFactory.SERVICE.getInstance().createContent(null, title, true);
    final ChangeListTodosPanel panel = new ChangeListTodosPanel(myProject, settings, content) {

        @Override
        protected TodoTreeBuilder createTreeBuilder(JTree tree, DefaultTreeModel treeModel, Project project) {
            TodoTreeBuilder todoTreeBuilder = factory.createTreeBuilder(tree, treeModel, project);
            todoTreeBuilder.init();
            return todoTreeBuilder;
        }
    };
    content.setComponent(panel);
    Disposer.register(this, panel);
    if (myContentManager == null) {
        myNotAddedContent.add(content);
    } else {
        myContentManager.addContent(content);
    }
    myPanels.add(panel);
    content.setCloseable(true);
    content.setDisposer(new Disposable() {

        @Override
        public void dispose() {
            myPanels.remove(panel);
        }
    });
}
Also used : Disposable(com.intellij.openapi.Disposable) Project(com.intellij.openapi.project.Project) Content(com.intellij.ui.content.Content) DefaultTreeModel(javax.swing.tree.DefaultTreeModel)

Example 64 with DefaultTreeModel

use of javax.swing.tree.DefaultTreeModel in project intellij-community by JetBrains.

the class TreeBuilderUtil method restorePaths.

public static void restorePaths(AbstractTreeBuilder treeBuilder, List<Object> pathsToExpand, List<Object> selectionPaths, boolean elementsOnly) {
    JTree tree = treeBuilder.getTree();
    if (!elementsOnly) {
        for (Object path : pathsToExpand) {
            tree.expandPath((TreePath) path);
        }
        tree.addSelectionPaths(selectionPaths.toArray(new TreePath[selectionPaths.size()]));
    } else {
        for (Object element : pathsToExpand) {
            treeBuilder.buildNodeForElement(element);
            DefaultMutableTreeNode node = treeBuilder.getNodeForElement(element);
            if (node != null) {
                tree.expandPath(new TreePath(node.getPath()));
            }
        }
        for (Object element : selectionPaths) {
            DefaultMutableTreeNode node = treeBuilder.getNodeForElement(element);
            if (node != null) {
                DefaultTreeModel treeModel = (DefaultTreeModel) tree.getModel();
                tree.addSelectionPath(new TreePath(treeModel.getPathToRoot(node)));
            }
        }
    }
}
Also used : TreePath(javax.swing.tree.TreePath) DefaultMutableTreeNode(javax.swing.tree.DefaultMutableTreeNode) DefaultTreeModel(javax.swing.tree.DefaultTreeModel)

Example 65 with DefaultTreeModel

use of javax.swing.tree.DefaultTreeModel in project intellij-community by JetBrains.

the class ExternalProjectDataSelectorDialog method reloadTree.

private void reloadTree() {
    final DefaultTreeModel treeModel = (DefaultTreeModel) myTree.getModel();
    final Object root = treeModel.getRoot();
    if (!(root instanceof CheckedTreeNode))
        return;
    final CheckedTreeNode rootNode = (CheckedTreeNode) root;
    final Couple<CheckedTreeNode> rootAndPreselectedNode = createRoot();
    final CheckedTreeNode rootCopy = rootAndPreselectedNode.first;
    List<TreeNode> nodes = TreeUtil.listChildren(rootCopy);
    rootNode.removeAllChildren();
    TreeUtil.addChildrenTo(rootNode, nodes);
    treeModel.reload();
}
Also used : TreeNode(javax.swing.tree.TreeNode) DefaultTreeModel(javax.swing.tree.DefaultTreeModel)

Aggregations

DefaultTreeModel (javax.swing.tree.DefaultTreeModel)196 DefaultMutableTreeNode (javax.swing.tree.DefaultMutableTreeNode)99 TreePath (javax.swing.tree.TreePath)50 Tree (com.intellij.ui.treeStructure.Tree)22 Test (org.junit.Test)21 JTree (javax.swing.JTree)17 MockTreeModelListener (com.facebook.buck.intellij.ideabuck.test.util.MockTreeModelListener)16 JScrollPane (javax.swing.JScrollPane)16 TreeSelectionEvent (javax.swing.event.TreeSelectionEvent)15 TreeSelectionListener (javax.swing.event.TreeSelectionListener)14 ArrayList (java.util.ArrayList)10 TreeNode (javax.swing.tree.TreeNode)10 NotNull (org.jetbrains.annotations.NotNull)10 Module (com.intellij.openapi.module.Module)9 MouseEvent (java.awt.event.MouseEvent)9 DefaultTreeCellRenderer (javax.swing.tree.DefaultTreeCellRenderer)9 Project (com.intellij.openapi.project.Project)7 javax.swing (javax.swing)7 JPanel (javax.swing.JPanel)7 ColumnTreeBuilder (com.android.tools.adtui.common.ColumnTreeBuilder)6