Exemple #1
0
        private void InitializeTreeview()
        {
            _treeData = new TreeView();

            _tree.MouseDown    += TreeMouseDown;
            _tree.MouseMove    += TreeMouseMove;
            _tree.MouseUp      += _tree_MouseUp;
            _tree.BeforeExpand += (sender, e) =>
            {
                e.Cancel = !AllowExpandCollapse;
                if (!e.Cancel)
                {
                    _tree_BeforeExpand(sender, e);
                }
            };
            _tree.BeforeCollapse += (sender, e) => { e.Cancel = !AllowExpandCollapse; };
            // copy expanded / not expanded state to data, so it is persisted
            _tree.AfterExpand += (sender, e) =>
            {
                if (_treeIsUnderUpdate) // we are calling expand on the display tree when cloning from data.
                // we do not want to update data with such information, as we dont have proper _treeBindings at the moment
                {
                    return;
                }

                var dataNode = _treeBindings.FindDataNode(e.Node);
                dataNode.Expand();
            };

            _tree.AfterCollapse += (sender, e) =>
            {
                if (_treeIsUnderUpdate)
                {
                    return;
                }

                var dataNode = _treeBindings.FindDataNode(e.Node);
                dataNode.Collapse();
            };

            _tree.NodeMouseDoubleClick += _tree_NodeMouseDoubleClick;
            _tree.AfterSelect          += OnTreeOnAfterSelect;
            _tree.ImageList             = this.objectExplorerImageList;
        }
        public ObjectExplorer()
        {
            _treeSearch = new SearchTextBox
            {
                Dock = DockStyle.Top
            };


            _tree = new TreeView
            {
                Dock             = DockStyle.Fill,
                ShowNodeToolTips = true
            };

            _treeData = new TreeView();

            _tree.MouseDown    += TreeMouseDown;
            _tree.MouseMove    += TreeMouseMove;
            _tree.MouseUp      += _tree_MouseUp;
            _tree.BeforeExpand += (sender, e) => { e.Cancel = !AllowExpandCollapse; if (!e.Cancel)
                                                   {
                                                       _tree_BeforeExpand(sender, e);
                                                   }
            };
            _tree.BeforeCollapse += (sender, e) => { e.Cancel = !AllowExpandCollapse; };
            // copy expanded / not expanded state to data, so it is persisted
            _tree.AfterExpand += (sender, e) =>
            {
                if (_treeIsUnderUpdate) // we are calling expand on the display tree when cloning from data.
                                        // we do not want to update data with such information, as we dont have proper _treeBindings at the moment
                {
                    return;
                }

                var dataNode = _treeBindings.FindDataNode(e.Node);
                dataNode.Expand();
            };

            _tree.AfterCollapse += (sender, e) =>
            {
                if (_treeIsUnderUpdate)
                {
                    return;
                }

                var dataNode = _treeBindings.FindDataNode(e.Node);
                dataNode.Collapse();
            };

            _tree.NodeMouseDoubleClick          += _tree_NodeMouseDoubleClick;
            _treeSearch.TextChangedWithDebounce += (sender, e) => { SetFilter(((TextBox)sender).Text); };
            _treeSearch.CueText       = "Search (Ctrl + \\)";
            _treeSearch.DebounceLimit = TimeSpan.FromMilliseconds(400);

            _tableContextMenuItems  = new Dictionary <string, ContextMenu>();
            _serverContextMenuItems = new Dictionary <string, ContextMenu>();

            _verbContextMenu = new ContextMenu();
            _verbContextMenu.MenuItems.Add("Invoke...", (s, e) => OpenInvokeTab());

            Controls.Add(_tree);
            Controls.Add(_treeSearch);
        }