Search in sources :

Example 16 with Tree

use of com.intellij.ui.treeStructure.Tree in project intellij-community by JetBrains.

the class AbstractTreeClassChooserDialog method createCenterPanel.

@Override
protected JComponent createCenterPanel() {
    final DefaultTreeModel model = new DefaultTreeModel(new DefaultMutableTreeNode());
    myTree = new Tree(model);
    ProjectAbstractTreeStructureBase treeStructure = new AbstractProjectTreeStructure(myProject) {

        @Override
        public boolean isFlattenPackages() {
            return false;
        }

        @Override
        public boolean isShowMembers() {
            return myIsShowMembers;
        }

        @Override
        public boolean isHideEmptyMiddlePackages() {
            return true;
        }

        @Override
        public boolean isAbbreviatePackageNames() {
            return false;
        }

        @Override
        public boolean isShowLibraryContents() {
            return myIsShowLibraryContents;
        }

        @Override
        public boolean isShowModules() {
            return false;
        }
    };
    myBuilder = new ProjectTreeBuilder(myProject, myTree, model, AlphaComparator.INSTANCE, treeStructure);
    myTree.setRootVisible(false);
    myTree.setShowsRootHandles(true);
    myTree.expandRow(0);
    myTree.getSelectionModel().setSelectionMode(TreeSelectionModel.SINGLE_TREE_SELECTION);
    myTree.setCellRenderer(new NodeRenderer());
    UIUtil.setLineStyleAngled(myTree);
    JScrollPane scrollPane = ScrollPaneFactory.createScrollPane(myTree);
    scrollPane.setPreferredSize(JBUI.size(500, 300));
    myTree.addKeyListener(new KeyAdapter() {

        @Override
        public void keyPressed(KeyEvent e) {
            if (KeyEvent.VK_ENTER == e.getKeyCode()) {
                doOKAction();
            }
        }
    });
    new DoubleClickListener() {

        @Override
        protected boolean onDoubleClick(MouseEvent event) {
            TreePath path = myTree.getPathForLocation(event.getX(), event.getY());
            if (path != null && myTree.isPathSelected(path)) {
                doOKAction();
                return true;
            }
            return false;
        }
    }.installOn(myTree);
    myTree.addTreeSelectionListener(new TreeSelectionListener() {

        @Override
        public void valueChanged(TreeSelectionEvent e) {
            handleSelectionChanged();
        }
    });
    new TreeSpeedSearch(myTree);
    myTabbedPane = new TabbedPaneWrapper(getDisposable());
    final JPanel dummyPanel = new JPanel(new BorderLayout());
    String name = null;
    /*
    if (myInitialClass != null) {
      name = myInitialClass.getName();
    }
*/
    myGotoByNamePanel = new ChooseByNamePanel(myProject, createChooseByNameModel(), name, myScope.isSearchInLibraries(), getContext()) {

        @Override
        protected void showTextFieldPanel() {
        }

        @Override
        protected void close(boolean isOk) {
            super.close(isOk);
            if (isOk) {
                doOKAction();
            } else {
                doCancelAction();
            }
        }

        @NotNull
        @Override
        protected Set<Object> filter(@NotNull Set<Object> elements) {
            return doFilter(elements);
        }

        @Override
        protected void initUI(ChooseByNamePopupComponent.Callback callback, ModalityState modalityState, boolean allowMultipleSelection) {
            super.initUI(callback, modalityState, allowMultipleSelection);
            dummyPanel.add(myGotoByNamePanel.getPanel(), BorderLayout.CENTER);
            IdeFocusManager.getGlobalInstance().doWhenFocusSettlesDown(() -> {
                IdeFocusManager.getGlobalInstance().requestFocus(IdeFocusTraversalPolicy.getPreferredFocusedComponent(myGotoByNamePanel.getPanel()), true);
            });
        }

        @Override
        protected void showList() {
            super.showList();
            if (myInitialClass != null && myList.getModel().getSize() > 0) {
                myList.setSelectedValue(myInitialClass, true);
                myInitialClass = null;
            }
        }

        @Override
        protected void chosenElementMightChange() {
            handleSelectionChanged();
        }
    };
    Disposer.register(myDisposable, myGotoByNamePanel);
    myTabbedPane.addTab(IdeBundle.message("tab.chooser.search.by.name"), dummyPanel);
    myTabbedPane.addTab(IdeBundle.message("tab.chooser.project"), scrollPane);
    myGotoByNamePanel.invoke(new MyCallback(), getModalityState(), false);
    myTabbedPane.addChangeListener(new ChangeListener() {

        @Override
        public void stateChanged(ChangeEvent e) {
            handleSelectionChanged();
        }
    });
    return myTabbedPane.getComponent();
}
Also used : Set(java.util.Set) LinkedHashSet(java.util.LinkedHashSet) DefaultMutableTreeNode(javax.swing.tree.DefaultMutableTreeNode) DoubleClickListener(com.intellij.ui.DoubleClickListener) KeyAdapter(java.awt.event.KeyAdapter) TreeSpeedSearch(com.intellij.ui.TreeSpeedSearch) TreeSelectionListener(javax.swing.event.TreeSelectionListener) NotNull(org.jetbrains.annotations.NotNull) AbstractProjectTreeStructure(com.intellij.ide.projectView.impl.AbstractProjectTreeStructure) NodeRenderer(com.intellij.ide.util.treeView.NodeRenderer) KeyEvent(java.awt.event.KeyEvent) ProjectAbstractTreeStructureBase(com.intellij.ide.projectView.impl.ProjectAbstractTreeStructureBase) Tree(com.intellij.ui.treeStructure.Tree) ChangeListener(javax.swing.event.ChangeListener) MouseEvent(java.awt.event.MouseEvent) TabbedPaneWrapper(com.intellij.ui.TabbedPaneWrapper) DefaultTreeModel(javax.swing.tree.DefaultTreeModel) TreePath(javax.swing.tree.TreePath) ChangeEvent(javax.swing.event.ChangeEvent) BaseProjectTreeBuilder(com.intellij.ide.projectView.BaseProjectTreeBuilder) ProjectTreeBuilder(com.intellij.ide.projectView.impl.ProjectTreeBuilder) ModalityState(com.intellij.openapi.application.ModalityState) TreeSelectionEvent(javax.swing.event.TreeSelectionEvent)

Example 17 with Tree

use of com.intellij.ui.treeStructure.Tree in project intellij-community by JetBrains.

the class MemberChooser method createTree.

protected Tree createTree() {
    final Tree tree = new Tree(new DefaultTreeModel(new DefaultMutableTreeNode()));
    tree.setCellRenderer(getTreeCellRenderer());
    UIUtil.setLineStyleAngled(tree);
    tree.setRootVisible(false);
    tree.setShowsRootHandles(true);
    tree.addKeyListener(new TreeKeyListener());
    tree.addTreeSelectionListener(new MyTreeSelectionListener());
    if (!myAllowMultiSelection) {
        tree.getSelectionModel().setSelectionMode(TreeSelectionModel.SINGLE_TREE_SELECTION);
    }
    new DoubleClickListener() {

        @Override
        protected boolean onDoubleClick(MouseEvent e) {
            if (tree.getPathForLocation(e.getX(), e.getY()) != null) {
                doOKAction();
                return true;
            }
            return false;
        }
    }.installOn(tree);
    TreeUtil.installActions(tree);
    return tree;
}
Also used : Tree(com.intellij.ui.treeStructure.Tree)

Example 18 with Tree

use of com.intellij.ui.treeStructure.Tree in project intellij-community by JetBrains.

the class AbstractTreeUi method setHoldSize.

private void setHoldSize(boolean holdSize) {
    if (myTree instanceof Tree) {
        final Tree tree = (Tree) myTree;
        tree.setHoldSize(holdSize);
    }
}
Also used : AlwaysExpandedTree(com.intellij.ui.treeStructure.AlwaysExpandedTree) Tree(com.intellij.ui.treeStructure.Tree)

Example 19 with Tree

use of com.intellij.ui.treeStructure.Tree in project intellij-community by JetBrains.

the class HierarchyBrowserBaseEx method createTree.

protected final JTree createTree(boolean dndAware) {
    final Tree tree;
    final NullableFunction<Object, PsiElement> toPsiConverter = o -> {
        if (o instanceof HierarchyNodeDescriptor) {
            return ((HierarchyNodeDescriptor) o).getContainingFile();
        }
        return null;
    };
    if (dndAware) {
        //noinspection Duplicates
        tree = new DnDAwareTree(new DefaultTreeModel(new DefaultMutableTreeNode(""))) {

            @Override
            public void removeNotify() {
                super.removeNotify();
                if (ScreenUtil.isStandardAddRemoveNotify(this))
                    myRefreshAction.unregisterCustomShortcutSet(this);
            }

            @Override
            public boolean isFileColorsEnabled() {
                return ProjectViewTree.isFileColorsEnabledFor(this);
            }

            @Override
            public Color getFileColorFor(Object object) {
                return ProjectViewTree.getColorForObject(object, myProject, toPsiConverter);
            }
        };
        if (!ApplicationManager.getApplication().isHeadlessEnvironment()) {
            DnDManager.getInstance().registerSource(new DnDSource() {

                @Override
                public boolean canStartDragging(final DnDAction action, final Point dragOrigin) {
                    return getSelectedElements().length > 0;
                }

                @Override
                public DnDDragStartBean startDragging(final DnDAction action, final Point dragOrigin) {
                    return new DnDDragStartBean(new TransferableWrapper() {

                        @Override
                        public TreeNode[] getTreeNodes() {
                            return tree.getSelectedNodes(TreeNode.class, null);
                        }

                        @Override
                        public PsiElement[] getPsiElements() {
                            return getSelectedElements();
                        }

                        @Override
                        public List<File> asFileList() {
                            return PsiCopyPasteManager.asFileList(getPsiElements());
                        }
                    });
                }

                @Override
                public Pair<Image, Point> createDraggedImage(final DnDAction action, final Point dragOrigin) {
                    return null;
                }

                @Override
                public void dragDropEnd() {
                }

                @Override
                public void dropActionChanged(final int gestureModifiers) {
                }
            }, tree);
        }
    } else {
        //noinspection Duplicates
        tree = new Tree(new DefaultTreeModel(new DefaultMutableTreeNode(""))) {

            @Override
            public void removeNotify() {
                super.removeNotify();
                if (ScreenUtil.isStandardAddRemoveNotify(this))
                    myRefreshAction.unregisterCustomShortcutSet(this);
            }

            @Override
            public boolean isFileColorsEnabled() {
                return ProjectViewTree.isFileColorsEnabledFor(this);
            }

            @Override
            public Color getFileColorFor(Object object) {
                return ProjectViewTree.getColorForObject(object, myProject, toPsiConverter);
            }
        };
    }
    configureTree(tree);
    EditSourceOnDoubleClickHandler.install(tree);
    EditSourceOnEnterKeyHandler.install(tree);
    myRefreshAction.registerShortcutOn(tree);
    return tree;
}
Also used : EditScopesDialog(com.intellij.ide.util.scopeChooser.EditScopesDialog) java.util(java.util) AllIcons(com.intellij.icons.AllIcons) TreeNode(javax.swing.tree.TreeNode) MessageFormat(java.text.MessageFormat) PsiCopyPasteManager(com.intellij.ide.PsiCopyPasteManager) EditSourceOnDoubleClickHandler(com.intellij.util.EditSourceOnDoubleClickHandler) NamedScope(com.intellij.psi.search.scope.packageSet.NamedScope) JBUI(com.intellij.util.ui.JBUI) ProjectViewTree(com.intellij.ide.projectView.impl.ProjectViewTree) Disposer(com.intellij.openapi.util.Disposer) Project(com.intellij.openapi.project.Project) Tree(com.intellij.ui.treeStructure.Tree) com.intellij.ide.dnd(com.intellij.ide.dnd) ComboBoxAction(com.intellij.openapi.actionSystem.ex.ComboBoxAction) Logger(com.intellij.openapi.diagnostic.Logger) OccurenceNavigator(com.intellij.ide.OccurenceNavigator) PsiElementNavigatable(com.intellij.openapi.fileEditor.PsiElementNavigatable) EditSourceOnEnterKeyHandler(com.intellij.util.EditSourceOnEnterKeyHandler) DefaultTreeModel(javax.swing.tree.DefaultTreeModel) NamedScopesHolder(com.intellij.psi.search.scope.packageSet.NamedScopesHolder) BrowseHierarchyActionBase(com.intellij.ide.hierarchy.actions.BrowseHierarchyActionBase) LanguageExtension(com.intellij.lang.LanguageExtension) ScreenUtil(com.intellij.ui.ScreenUtil) NullableFunction(com.intellij.util.NullableFunction) DnDAwareTree(com.intellij.ide.dnd.aware.DnDAwareTree) File(java.io.File) DefaultMutableTreeNode(javax.swing.tree.DefaultMutableTreeNode) java.awt(java.awt) IdeBundle(com.intellij.ide.IdeBundle) com.intellij.openapi.actionSystem(com.intellij.openapi.actionSystem) Nullable(org.jetbrains.annotations.Nullable) List(java.util.List) IdeFocusManager(com.intellij.openapi.wm.IdeFocusManager) Pair(com.intellij.openapi.util.Pair) ApplicationManager(com.intellij.openapi.application.ApplicationManager) OccurenceNavigatorSupport(com.intellij.ide.OccurenceNavigatorSupport) Navigatable(com.intellij.pom.Navigatable) com.intellij.psi(com.intellij.psi) NotNull(org.jetbrains.annotations.NotNull) Ref(com.intellij.openapi.util.Ref) NodeDescriptor(com.intellij.ide.util.treeView.NodeDescriptor) ScrollPaneFactory(com.intellij.ui.ScrollPaneFactory) Alarm(com.intellij.util.Alarm) javax.swing(javax.swing) DefaultMutableTreeNode(javax.swing.tree.DefaultMutableTreeNode) DefaultTreeModel(javax.swing.tree.DefaultTreeModel) TreeNode(javax.swing.tree.TreeNode) DefaultMutableTreeNode(javax.swing.tree.DefaultMutableTreeNode) ProjectViewTree(com.intellij.ide.projectView.impl.ProjectViewTree) Tree(com.intellij.ui.treeStructure.Tree) DnDAwareTree(com.intellij.ide.dnd.aware.DnDAwareTree) DnDAwareTree(com.intellij.ide.dnd.aware.DnDAwareTree) File(java.io.File) Pair(com.intellij.openapi.util.Pair)

Example 20 with Tree

use of com.intellij.ui.treeStructure.Tree in project intellij-community by JetBrains.

the class OptionTreeWithPreviewPanel method createOptionsTree.

protected JTree createOptionsTree() {
    DefaultMutableTreeNode rootNode = new DefaultMutableTreeNode();
    String groupName = "";
    DefaultMutableTreeNode groupNode = null;
    List<BooleanOptionKey> result = sortOptions(orderByGroup(myKeys));
    for (BooleanOptionKey key : result) {
        String newGroupName = key.groupName;
        if (!newGroupName.equals(groupName) || groupNode == null) {
            groupName = newGroupName;
            groupNode = new DefaultMutableTreeNode(newGroupName);
            rootNode.add(groupNode);
        }
        if (isOptionVisible(key)) {
            groupNode.add(new MyToggleTreeNode(key, key.title));
        }
    }
    DefaultTreeModel model = new DefaultTreeModel(rootNode);
    final Tree optionsTree = new Tree(model);
    new TreeSpeedSearch(optionsTree).setComparator(new SpeedSearchComparator(false));
    TreeUtil.installActions(optionsTree);
    optionsTree.setRootVisible(false);
    UIUtil.setLineStyleAngled(optionsTree);
    optionsTree.setShowsRootHandles(true);
    optionsTree.addKeyListener(new KeyAdapter() {

        @Override
        public void keyPressed(KeyEvent e) {
            if (!optionsTree.isEnabled())
                return;
            if (e.getKeyCode() == KeyEvent.VK_SPACE) {
                TreePath treePath = optionsTree.getLeadSelectionPath();
                selectCheckbox(treePath);
                e.consume();
            }
        }
    });
    new ClickListener() {

        @Override
        public boolean onClick(@NotNull MouseEvent e, int clickCount) {
            if (!optionsTree.isEnabled())
                return false;
            TreePath treePath = optionsTree.getPathForLocation(e.getX(), e.getY());
            selectCheckbox(treePath);
            return true;
        }
    }.installOn(optionsTree);
    int row = 0;
    while (row < optionsTree.getRowCount()) {
        optionsTree.expandRow(row);
        row++;
    }
    return optionsTree;
}
Also used : MouseEvent(java.awt.event.MouseEvent) TreeSpeedSearch(com.intellij.ui.TreeSpeedSearch) KeyAdapter(java.awt.event.KeyAdapter) KeyEvent(java.awt.event.KeyEvent) Tree(com.intellij.ui.treeStructure.Tree) SpeedSearchComparator(com.intellij.ui.SpeedSearchComparator) ClickListener(com.intellij.ui.ClickListener)

Aggregations

Tree (com.intellij.ui.treeStructure.Tree)63 DefaultMutableTreeNode (javax.swing.tree.DefaultMutableTreeNode)23 DefaultTreeModel (javax.swing.tree.DefaultTreeModel)22 TreePath (javax.swing.tree.TreePath)21 JBScrollPane (com.intellij.ui.components.JBScrollPane)11 MouseEvent (java.awt.event.MouseEvent)11 KeyEvent (java.awt.event.KeyEvent)10 TreeSelectionListener (javax.swing.event.TreeSelectionListener)10 TreeSpeedSearch (com.intellij.ui.TreeSpeedSearch)9 KeyAdapter (java.awt.event.KeyAdapter)9 TreeSelectionEvent (javax.swing.event.TreeSelectionEvent)9 NotNull (org.jetbrains.annotations.NotNull)9 List (java.util.List)7 TreeNode (javax.swing.tree.TreeNode)7 Nullable (org.jetbrains.annotations.Nullable)7 ColumnTreeBuilder (com.android.tools.adtui.common.ColumnTreeBuilder)6 ActionEvent (java.awt.event.ActionEvent)5 ActionListener (java.awt.event.ActionListener)5 NodeRenderer (com.intellij.ide.util.treeView.NodeRenderer)4 ComboBox (com.intellij.openapi.ui.ComboBox)4