Search in sources :

Example 46 with Tree

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

the class AbstractTreeBuilderCrashTest method initTree.

private void initTree(final Node root) throws Exception {
    myStructure = new BaseStructure() {

        @Override
        public Object getRootElement() {
            return root;
        }

        @Override
        public Object[] doGetChildElements(final Object element) {
            return ((Node) element).getChildren();
        }

        @Override
        public Object getParentElement(final Object element) {
            return ((Node) element).getParent();
        }

        @Override
        @NotNull
        public NodeDescriptor doCreateDescriptor(final Object element, final NodeDescriptor parentDescriptor) {
            return (NodeDescriptor) element;
        }
    };
    myTreeModel = new DefaultTreeModel(new DefaultMutableTreeNode());
    myTree = new Tree(myTreeModel);
    myTree.setRootVisible(false);
    initBuilder(new BaseTreeBuilder(myTree, myTreeModel, myStructure, AlphaComparator.INSTANCE) {

        @Override
        protected boolean isAutoExpandNode(final NodeDescriptor nodeDescriptor) {
            return true;
        }

        @Override
        protected boolean isDisposeOnCollapsing(final NodeDescriptor nodeDescriptor) {
            return false;
        }
    });
    Disposer.register(getRootDisposable(), getBuilder());
    showTree();
}
Also used : DefaultMutableTreeNode(javax.swing.tree.DefaultMutableTreeNode) Tree(com.intellij.ui.treeStructure.Tree) DefaultTreeModel(javax.swing.tree.DefaultTreeModel) NotNull(org.jetbrains.annotations.NotNull)

Example 47 with Tree

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

the class AbstractTreeBuilderTest method setUp.

@Override
protected void setUp() throws Exception {
    super.setUp();
    myComparator = new NodeDescriptor.NodeComparator.Delegate<>(new NodeDescriptor.NodeComparator<NodeDescriptor>() {

        @Override
        public int compare(NodeDescriptor o1, NodeDescriptor o2) {
            return AlphaComparator.INSTANCE.compare(o1, o2);
        }
    });
    mySortedParent.clear();
    myTreeModel = new DefaultTreeModel(new DefaultMutableTreeNode(null));
    myTreeModel.addTreeModelListener(new TreeModelListener() {

        @Override
        public void treeNodesChanged(TreeModelEvent e) {
            assertEdt();
        }

        @Override
        public void treeNodesInserted(TreeModelEvent e) {
            assertEdt();
        }

        @Override
        public void treeNodesRemoved(TreeModelEvent e) {
            assertEdt();
        }

        @Override
        public void treeStructureChanged(TreeModelEvent e) {
            assertEdt();
        }
    });
    myTree = new Tree(myTreeModel);
    myStructure = new MyStructure();
    myRoot = new Node(null, "/");
    initBuilder(new MyBuilder());
    myTree.getSelectionModel().addTreeSelectionListener(new TreeSelectionListener() {

        @Override
        public void valueChanged(TreeSelectionEvent e) {
            assertEdt();
        }
    });
    myTree.addTreeExpansionListener(new TreeExpansionListener() {

        @Override
        public void treeExpanded(TreeExpansionEvent event) {
            assertEdt();
        }

        @Override
        public void treeCollapsed(TreeExpansionEvent event) {
            assertEdt();
        }
    });
}
Also used : DefaultMutableTreeNode(javax.swing.tree.DefaultMutableTreeNode) TreeNode(javax.swing.tree.TreeNode) DefaultMutableTreeNode(javax.swing.tree.DefaultMutableTreeNode) DefaultTreeModel(javax.swing.tree.DefaultTreeModel) Tree(com.intellij.ui.treeStructure.Tree)

Example 48 with Tree

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

the class DnDDemo method main.

public static void main(String[] args) {
    JFrame frame = new JFrame("DnD Demo");
    frame.getContentPane().setLayout(new BorderLayout());
    JPanel panel = new JPanel(new BorderLayout());
    final JTree source = new Tree();
    panel.add(source, BorderLayout.WEST);
    final DnDManager dndManager = new DnDManagerImpl(null);
    dndManager.registerSource(new DnDSource() {

        public boolean canStartDragging(DnDAction action, Point dragOrigin) {
            return true;
        }

        public DnDDragStartBean startDragging(DnDAction action, Point point) {
            return new DnDDragStartBean(source.getLastSelectedPathComponent().toString());
        }

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

        public void dragDropEnd() {
        }

        public void dropActionChanged(final int gestureModifiers) {
        }
    }, source);
    JTabbedPane tabs = new JBTabbedPane();
    JPanel delegates = new JPanel(new FlowLayout());
    final JLabel delegate1Label = new JLabel("Delegate 1");
    delegates.add(delegate1Label);
    final JLabel delegate2Label = new JLabel("Delegate 2");
    delegates.add(delegate2Label);
    final DnDTarget delegee1 = new DnDTarget() {

        public boolean update(DnDEvent aEvent) {
            aEvent.setDropPossible(true, "Delegee 1");
            aEvent.setHighlighting(delegate1Label, H_ARROWS | RECTANGLE);
            return false;
        }

        public void drop(DnDEvent aEvent) {
            System.out.println("Delegee 1 accepted drop");
        }

        public void cleanUpOnLeave() {
        }

        public void updateDraggedImage(Image image, Point dropPoint, Point imageOffset) {
        }
    };
    final DnDTarget delegee2 = new DnDTarget() {

        public boolean update(DnDEvent aEvent) {
            aEvent.setDropPossible("Delegee 2", new DropActionHandler() {

                public void performDrop(DnDEvent aEvent) {
                    System.out.println("Delegee 2 accepted drop");
                }
            });
            aEvent.setHighlighting(delegate2Label, V_ARROWS | RECTANGLE);
            return false;
        }

        public void drop(DnDEvent aEvent) {
        }

        public void cleanUpOnLeave() {
        }

        public void updateDraggedImage(Image image, Point dropPoint, Point imageOffset) {
        }
    };
    dndManager.registerTarget(new DnDTarget() {

        public boolean update(DnDEvent aEvent) {
            if (aEvent.getCurrentOverComponent() == delegate1Label) {
                return aEvent.delegateUpdateTo(delegee1);
            } else if (aEvent.getCurrentOverComponent() == delegate2Label) {
                return aEvent.delegateUpdateTo(delegee2);
            }
            aEvent.setDropPossible(false, "Nothing can be dropped here");
            return false;
        }

        public void drop(DnDEvent aEvent) {
            if (aEvent.getCurrentOverComponent() == delegate1Label) {
                aEvent.delegateDropTo(delegee1);
            }
        }

        public void cleanUpOnLeave() {
        }

        public void updateDraggedImage(Image image, Point dropPoint, Point imageOffset) {
        }
    }, delegates);
    tabs.add("Delegates", delegates);
    final JPanel xy = new JPanel();
    dndManager.registerTarget(new DnDTarget() {

        public boolean update(DnDEvent aEvent) {
            aEvent.setDropPossible(true, "Drop to " + asXyString(aEvent));
            return false;
        }

        public void drop(DnDEvent aEvent) {
            System.out.println("Droppped to " + asXyString(aEvent));
        }

        public void cleanUpOnLeave() {
        }

        public void updateDraggedImage(Image image, Point dropPoint, Point imageOffset) {
        }
    }, xy);
    tabs.add("XY drop", xy);
    panel.add(tabs, BorderLayout.CENTER);
    frame.getContentPane().add(panel, BorderLayout.CENTER);
    frame.setBounds(100, 100, 500, 500);
    frame.show();
}
Also used : JBTabbedPane(com.intellij.ui.components.JBTabbedPane) FlowLayout(java.awt.FlowLayout) Point(java.awt.Point) Image(java.awt.Image) Point(java.awt.Point) BorderLayout(java.awt.BorderLayout) Tree(com.intellij.ui.treeStructure.Tree) Nullable(org.jetbrains.annotations.Nullable) Pair(com.intellij.openapi.util.Pair)

Example 49 with Tree

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

the class CvsTree method init.

public void init() {
    final TreeNode root = createRoot(myProject);
    myModel = new DefaultTreeModel(root, true);
    myTree = new Tree(myModel);
    add(ScrollPaneFactory.createScrollPane(myTree), BorderLayout.CENTER);
    myTree.getSelectionModel().setSelectionMode(mySelectionMode);
    myTree.setCellRenderer(new Cvs2Renderer());
    addSelectionListener();
    final TreeUIHelper uiHelper = TreeUIHelper.getInstance();
    uiHelper.installTreeSpeedSearch(myTree);
    TreeUtil.installActions(myTree);
    IdeFocusManager.getGlobalInstance().doWhenFocusSettlesDown(() -> {
        IdeFocusManager.getGlobalInstance().requestFocus(myTree, true);
    });
}
Also used : TreeUIHelper(com.intellij.ui.TreeUIHelper) TreeNode(javax.swing.tree.TreeNode) DefaultMutableTreeNode(javax.swing.tree.DefaultMutableTreeNode) Tree(com.intellij.ui.treeStructure.Tree) DefaultTreeModel(javax.swing.tree.DefaultTreeModel)

Example 50 with Tree

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

the class ConfigureClientPropertiesDialog method createCenterPanel.

@Nullable
protected JComponent createCenterPanel() {
    myClassTree = new Tree();
    myClassTree.setRootVisible(false);
    myClassTree.getSelectionModel().addTreeSelectionListener(new TreeSelectionListener() {

        public void valueChanged(TreeSelectionEvent e) {
            final TreePath leadSelectionPath = e.getNewLeadSelectionPath();
            if (leadSelectionPath == null)
                return;
            final DefaultMutableTreeNode node = (DefaultMutableTreeNode) leadSelectionPath.getLastPathComponent();
            mySelectedClass = (Class) node.getUserObject();
            updateSelectedProperties();
        }
    });
    myClassTree.setCellRenderer(new ColoredTreeCellRenderer() {

        public void customizeCellRenderer(JTree tree, Object value, boolean selected, boolean expanded, boolean leaf, int row, boolean hasFocus) {
            DefaultMutableTreeNode node = (DefaultMutableTreeNode) value;
            if (node.getUserObject() instanceof Class) {
                Class cls = (Class) node.getUserObject();
                if (cls != null) {
                    append(cls.getName(), SimpleTextAttributes.REGULAR_ATTRIBUTES);
                }
            }
        }
    });
    fillClassTree();
    myPropertiesTable = new JBTable();
    myPropertiesTable.setModel(myTableModel);
    mySplitter = new JBSplitter("ConfigureClientPropertiesDialog.splitterProportion", 0.5f);
    mySplitter.setFirstComponent(ToolbarDecorator.createDecorator(myClassTree).setAddAction(new AnActionButtonRunnable() {

        @Override
        public void run(AnActionButton button) {
            ClassNameInputDialog dlg = new ClassNameInputDialog(myProject, mySplitter);
            dlg.show();
            if (dlg.getExitCode() == OK_EXIT_CODE) {
                String className = dlg.getClassName();
                if (className.length() == 0)
                    return;
                final Class aClass;
                try {
                    aClass = Class.forName(className);
                } catch (ClassNotFoundException ex) {
                    Messages.showErrorDialog(mySplitter, UIDesignerBundle.message("client.properties.class.not.found", className), UIDesignerBundle.message("client.properties.title"));
                    return;
                }
                if (!JComponent.class.isAssignableFrom(aClass)) {
                    Messages.showErrorDialog(mySplitter, UIDesignerBundle.message("client.properties.class.not.component", className), UIDesignerBundle.message("client.properties.title"));
                    return;
                }
                myManager.addClientPropertyClass(className);
                fillClassTree();
            }
        }
    }).setRemoveAction(new AnActionButtonRunnable() {

        @Override
        public void run(AnActionButton button) {
            if (mySelectedClass != null) {
                myManager.removeClientPropertyClass(mySelectedClass);
                fillClassTree();
            }
        }
    }).setToolbarPosition(SystemInfo.isMac ? ActionToolbarPosition.BOTTOM : ActionToolbarPosition.RIGHT).createPanel());
    mySplitter.setSecondComponent(ToolbarDecorator.createDecorator(myPropertiesTable).disableUpDownActions().setAddAction(new AnActionButtonRunnable() {

        @Override
        public void run(AnActionButton button) {
            AddClientPropertyDialog dlg = new AddClientPropertyDialog(myProject);
            dlg.show();
            if (dlg.getExitCode() == OK_EXIT_CODE) {
                ClientPropertiesManager.ClientProperty[] props = myManager.getClientProperties(mySelectedClass);
                for (ClientPropertiesManager.ClientProperty prop : props) {
                    if (prop.getName().equalsIgnoreCase(dlg.getEnteredProperty().getName())) {
                        Messages.showErrorDialog(mySplitter, UIDesignerBundle.message("client.properties.already.defined", prop.getName()), UIDesignerBundle.message("client.properties.title"));
                        return;
                    }
                }
                myManager.addConfiguredProperty(mySelectedClass, dlg.getEnteredProperty());
                updateSelectedProperties();
            }
        }
    }).setRemoveAction(new AnActionButtonRunnable() {

        @Override
        public void run(AnActionButton button) {
            int row = myPropertiesTable.getSelectedRow();
            if (row >= 0 && row < mySelectedProperties.length) {
                myManager.removeConfiguredProperty(mySelectedClass, mySelectedProperties[row].getName());
                updateSelectedProperties();
                if (mySelectedProperties.length > 0) {
                    if (row >= mySelectedProperties.length)
                        row--;
                    myPropertiesTable.getSelectionModel().setSelectionInterval(row, row);
                }
            }
        }
    }).createPanel());
    return mySplitter;
}
Also used : DefaultMutableTreeNode(javax.swing.tree.DefaultMutableTreeNode) TreeSelectionListener(javax.swing.event.TreeSelectionListener) JBTable(com.intellij.ui.table.JBTable) TreePath(javax.swing.tree.TreePath) Tree(com.intellij.ui.treeStructure.Tree) TreeSelectionEvent(javax.swing.event.TreeSelectionEvent) Nullable(org.jetbrains.annotations.Nullable)

Aggregations

Tree (com.intellij.ui.treeStructure.Tree)54 DefaultTreeModel (javax.swing.tree.DefaultTreeModel)21 DefaultMutableTreeNode (javax.swing.tree.DefaultMutableTreeNode)20 TreePath (javax.swing.tree.TreePath)19 MouseEvent (java.awt.event.MouseEvent)10 KeyAdapter (java.awt.event.KeyAdapter)9 KeyEvent (java.awt.event.KeyEvent)9 TreeSelectionEvent (javax.swing.event.TreeSelectionEvent)9 TreeSelectionListener (javax.swing.event.TreeSelectionListener)9 TreeSpeedSearch (com.intellij.ui.TreeSpeedSearch)8 NotNull (org.jetbrains.annotations.NotNull)8 ColumnTreeBuilder (com.android.tools.adtui.common.ColumnTreeBuilder)6 List (java.util.List)6 TreeNode (javax.swing.tree.TreeNode)5 Nullable (org.jetbrains.annotations.Nullable)5 Ref (com.intellij.openapi.util.Ref)4 NodeRenderer (com.intellij.ide.util.treeView.NodeRenderer)3 VirtualFile (com.intellij.openapi.vfs.VirtualFile)3 JBScrollPane (com.intellij.ui.components.JBScrollPane)3 ActionEvent (java.awt.event.ActionEvent)3