Exemplo n.º 1
0
        private void RefreshChildNodes(TreeDataNode node, DataNode dataNode)
        {
            Dictionary <DataNode, TreeDataNode> currentNodes = new Dictionary <DataNode, TreeDataNode>();

            foreach (TreeDataNode child in node.Nodes)
            {
                currentNodes.Add(child.Data, child);
            }

            node.Nodes.Clear();
            foreach (DataNode child in dataNode.Nodes)
            {
                if (!currentNodes.ContainsKey(child))
                {
                    node.Nodes.Add(new TreeDataNode(child));
                }
                else
                {
                    node.Nodes.Add(currentNodes[child]);
                }
            }

            //foreach (TreeDataNode child in node.Nodes)
            //	child.ContextMenuStrip = BuildNodeContextMenu(child.Tag as DataNode);

            if (node.Nodes.Count == 0 && dataNode.HasUnexpandedChildren)
            {
                ExpandNode(node);
                _mainOutlineView.ExpandItem(node);
                //node.Expand();
            }

            _mainOutlineView.ReloadItem(node, true);
        }
Exemplo n.º 2
0
        private void ExpandNode(TreeDataNode node)
        {
            if (node == null || node.IsExpanded)
            {
                return;
            }

            //Console.WriteLine ("Expand Node: " + node.Data.NodeDisplay);

            node.IsExpanded = true;
            node.Nodes.Clear();

            DataNode backNode = node.Data;

            if (!backNode.IsExpanded)
            {
                backNode.Expand();
            }

            foreach (DataNode child in backNode.Nodes)
            {
                if (child != null)
                {
                    node.AddNode(new TreeDataNode(child));
                }
            }
        }
Exemplo n.º 3
0
        private TreeDataNode FindFrontNode(DataNode node)
        {
            Stack <DataNode> hierarchy;
            TreeDataNode     frontNode = GetRootFromDataNodePath(node, out hierarchy);

            if (frontNode == null)
            {
                return(null);
            }

            while (hierarchy.Count > 0)
            {
                if (!frontNode.IsExpanded)
                {
                    _mainOutlineView.ExpandItem(frontNode);
                    _mainOutlineView.ReloadItem(frontNode);
                }

                DataNode childData = hierarchy.Pop();
                foreach (TreeDataNode childFront in frontNode.Nodes)
                {
                    if (childFront.Data == childData)
                    {
                        frontNode = childFront;
                        break;
                    }
                }
            }

            return(frontNode);
        }
Exemplo n.º 4
0
        private void CollapseBelow(DataNode node)
        {
            Stack <DataNode> hierarchy;
            TreeDataNode     frontNode = GetRootFromDataNodePath(node, out hierarchy);

            if (frontNode == null)
            {
                return;
            }

            while (hierarchy.Count > 0)
            {
                if (!frontNode.IsExpanded)
                {
                    return;
                }

                DataNode childData = hierarchy.Pop();
                foreach (TreeDataNode childFront in frontNode.Nodes)
                {
                    if (childFront.Data == childData)
                    {
                        frontNode = childFront;
                        break;
                    }
                }
            }

            if (frontNode.IsExpanded)
            {
                _mainOutlineView.CollapseItem(frontNode);
                frontNode.IsExpanded = false;
            }
        }
Exemplo n.º 5
0
        private void SearchNode(TreeDataNode node)
        {
            if (node == null)
            {
                return;
            }

            if (!node.Data.CanSearchNode)
            {
                return;
            }

            FindWindowController form = new FindWindowController();

            if (RunWindow(form) != ModalResult.OK)
            {
                return;
            }

            _searchState = new SearchStateMac(this)
            {
                RootNode         = node.Data,
                SearchName       = form.NameToken,
                SearchValue      = form.ValueToken,
                DiscoverCallback = SearchDiscoveryCallback,
                CollapseCallback = SearchCollapseCallback,
                EndCallback      = SearchEndCallback,
            };

            SearchNextNode();
        }
Exemplo n.º 6
0
            public override void ItemDidCollapse(NSNotification notification)
            {
                TreeDataNode node = notification.UserInfo ["NSObject"] as TreeDataNode;

                if (node != null)
                {
                    _main.CollapseNode(node);
                }
            }
Exemplo n.º 7
0
            public override void ItemDidExpand(NSNotification notification)
            {
                TreeDataNode node = notification.UserInfo ["NSObject"] as TreeDataNode;

                if (node != null)
                {
                    //Console.WriteLine("Finished Expanding: " + node.Data.NodeDisplay);
                }
            }
Exemplo n.º 8
0
            public override void SelectionDidChange(NSNotification notification)
            {
                TreeDataNode node = _main.SelectedNode;

                if (node != null)
                {
                    _main.UpdateUI(node.Data);
                }
            }
Exemplo n.º 9
0
            public override void WillDisplayCell(NSOutlineView outlineView, NSObject cell, NSTableColumn tableColumn, NSObject item)
            {
                ImageAndTextCell c    = cell as ImageAndTextCell;
                TreeDataNode     node = item as TreeDataNode;

                c.Title = node.CombinedName;
                c.Image = _main._iconRegistry.Lookup(node.Data.GetType());
                //c.StringValue = node.Name;
                //throw new System.NotImplementedException ();
            }
Exemplo n.º 10
0
            public override void ItemWillExpand(NSNotification notification)
            {
                TreeDataNode node = notification.UserInfo ["NSObject"] as TreeDataNode;

                if (node != null)
                {
                    //Console.WriteLine ("Preparing to expand: " + node.Data.NodeDisplay);
                    _main.ExpandNode(node);
                }
            }
Exemplo n.º 11
0
            public override void ItemWillCollapse(NSNotification notification)
            {
                TreeDataNode node = notification.UserInfo ["NSObject"] as TreeDataNode;

                if (node != null)
                {
                    //if (node.Data.NodeDisplay == "saves") // The root node
                    //Console.WriteLine ("Uh-oh...");
                    //Console.WriteLine("Preparing to collapse: " + node.Data.NodeDisplay);
                }
            }
Exemplo n.º 12
0
        private void CopyNode(TreeDataNode node)
        {
            if (node == null)
            {
                return;
            }

            if (!node.Data.CanCopyNode)
            {
                return;
            }

            node.Data.CopyNode();
        }
Exemplo n.º 13
0
        void OrgUnitTree_NodeDataBound(object sender, RadTreeNodeEventArgs e)
        {
            TreeDataNode dataNode = (TreeDataNode)e.Node.DataItem;

            if (dataNode.Type == TreeDataNodeType.OrgUnit)
            {
                e.Node.Attributes["OrgUnitId"] = dataNode.OrgUnitId.ToString();
            }
            else
            {
                e.Node.Attributes["ResourceId"] = dataNode.ResourceId.ToString();
            }

            e.Node.Attributes["DataNodeType"] = dataNode.Type.ToString();
        }
Exemplo n.º 14
0
        private void MoveNodeDown(TreeDataNode node)
        {
            if (node == null)
            {
                return;
            }

            if (!node.Data.CanMoveNodeDown)
            {
                return;
            }

            node.Data.ChangeRelativePosition(1);
            RefreshChildNodes(node.Parent, node.Data.Parent);
        }
Exemplo n.º 15
0
        private void SearchDiscoveryCallback(DataNode node)
        {
            Console.WriteLine("Discovery: " + node.NodeDisplay);
            TreeDataNode frontNode = FindFrontNode(node);

            Console.WriteLine("  Front Node: " + frontNode.Data.NodeDisplay);
            _mainOutlineView.SelectRow(_mainOutlineView.RowForItem(frontNode), false);
            _mainOutlineView.ScrollRowToVisible(_mainOutlineView.RowForItem(frontNode));
            //_nodeTree.SelectedNode = FindFrontNode(node);

            if (_searchForm != null)
            {
                _searchForm.Accept();
                _searchForm = null;
            }
        }
Exemplo n.º 16
0
        private void RenameNode(TreeDataNode node)
        {
            if (node == null)
            {
                return;
            }

            if (!node.Data.CanRenameNode)
            {
                return;
            }

            if (node.Data.RenameNode())
            {
                //node.Text = dataNode.NodeDisplay;
                UpdateUI(node.Data);
            }
        }
Exemplo n.º 17
0
        private void EditNode(TreeDataNode node)
        {
            if (node == null)
            {
                return;
            }

            if (!node.Data.CanEditNode)
            {
                return;
            }

            if (node.Data.EditNode())
            {
                //node.Text = node.Data.NodeDisplay;
                UpdateUI(node.Data);
            }
        }
Exemplo n.º 18
0
        private void CreateNode(TreeDataNode node, TagType type)
        {
            if (node == null)
            {
                return;
            }

            if (!node.Data.CanCreateTag(type))
            {
                return;
            }

            if (node.Data.CreateNode(type))
            {
                //node.Text = dataNode.NodeDisplay;
                RefreshChildNodes(node, node.Data);
                UpdateUI(node.Data);
            }
        }
Exemplo n.º 19
0
        private void PasteNode(TreeDataNode node)
        {
            if (node == null)
            {
                return;
            }

            if (!node.Data.CanPasteIntoNode)
            {
                return;
            }

            if (node.Data.PasteNode())
            {
                //node.Text = dataNode.NodeDisplay;
                RefreshChildNodes(node, node.Data);
                UpdateUI(node.Data);
            }
        }
Exemplo n.º 20
0
        private void CutNode(TreeDataNode node)
        {
            if (node == null)
            {
                return;
            }

            if (!node.Data.CanCutNode)
            {
                return;
            }

            if (node.Data.CutNode())
            {
                TreeDataNode parent = node.Parent;
                UpdateUI(parent.Data);
                node.Remove();
                _mainOutlineView.ReloadItem(parent, true);
            }
        }
Exemplo n.º 21
0
        private void CollapseNode(TreeDataNode node)
        {
            if (node == null || !node.IsExpanded)
            {
                return;
            }

            //Console.WriteLine("Collapse Node: " + node.Data.NodeDisplay);

            DataNode backNode = node.Data;

            if (backNode.IsModified)
            {
                return;
            }

            backNode.Collapse();

            node.IsExpanded = false;
            node.Nodes.Clear();
        }
Exemplo n.º 22
0
        private TreeDataNode GetRootFromDataNodePath(DataNode node, out Stack <DataNode> hierarchy)
        {
            hierarchy = new Stack <DataNode>();
            while (node != null)
            {
                hierarchy.Push(node);
                node = node.Parent;
            }

            DataNode     rootDataNode = hierarchy.Pop();
            TreeDataNode frontNode    = null;

            foreach (TreeDataNode child in _dataSource.Nodes)
            {
                if (child.Data == rootDataNode)
                {
                    frontNode = child;
                }
            }

            return(frontNode);
        }
Exemplo n.º 23
0
        private void DeleteNode(TreeDataNode node)
        {
            if (node == null)
            {
                return;
            }

            if (!node.Data.CanDeleteNode)
            {
                return;
            }

            if (node.Data.DeleteNode())
            {
                UpdateUI(node.Parent.Data);
                //UpdateNodeText(node.Parent);
                TreeDataNode parent = node.Parent;
                node.Remove();

                _mainOutlineView.ReloadItem(parent, true);
            }
        }
Exemplo n.º 24
0
        private void UpdateUI()
        {
            if (_appDelegate == null)
            {
                return;
            }

            TreeDataNode selected = _mainOutlineView.ItemAtRow(_mainOutlineView.SelectedRow) as TreeDataNode;

            if (selected != null)
            {
                UpdateUI(selected.Data);
            }
            else
            {
                UpdateUI(new DataNode());

                _appDelegate.MenuSave.Enabled     = CheckModifications();
                _appDelegate.MenuFind.Enabled     = false;
                _appDelegate.MenuFindNext.Enabled = _searchState != null;

                _toolbarSave.Enabled = _appDelegate.MenuSave.Enabled;
            }
        }
Exemplo n.º 25
0
 private void AddObjectChildren(Type elementType)
 {
     ObjectWrapperNode = CreateNode(this, new FieldOrProperty(GetType(), nameof(ObjectWrapper)), elementType);
 }
Exemplo n.º 26
0
        private void trvResourceGrouping_NodeDataBound(object sender, RadTreeNodeEventArgs e)
        {
            TreeDataNode dataNode = (TreeDataNode)e.Node.DataItem;

            e.Node.Attributes["OrgUnitId"] = dataNode.OrgUnitId.ToString();
        }