Esempio n. 1
0
        public void Link(ResourceNode res)
        {
            Unlink();
            if (res != null)
            {
                this.Text = res.Name;
                TreeNodeCollection nodes = Nodes;

                //Should we continue down the tree?
                if ((IsExpanded) && (res.HasChildren))
                {
                    //Add/link each resource node
                    foreach (ResourceNode n in res.Children)
                    {
                        bool found = false;
                        foreach (BaseWrapper tn in nodes)
                        {
                            if (tn.Text == n.Name)
                            {
                                tn.Link(n);
                                found = true;
                                break;
                            }
                        }

                        if (!found)
                        {
                            nodes.Add(Wrap(_owner, n));
                        }
                    }

                    //Remove empty nodes
                    for (int i = 0; i < nodes.Count;)
                    {
                        BaseWrapper n = nodes[i] as BaseWrapper;
                        if (n._resource == null)
                        {
                            n.Remove();
                        }
                        else
                        {
                            i++;
                        }
                    }

                    _discovered = true;
                }
                else
                {
                    //Node will be reset and undiscovered
                    nodes.Clear();
                    //Collapse();
                    if (res.HasChildren)
                    {
                        nodes.Add(new GenericWrapper()
                        {
                            _owner = _owner
                        });
                        _discovered = false;
                    }
                    else
                    {
                        _discovered = true;
                    }
                }

                SelectedImageIndex = ImageIndex = (int)res.ResourceType & 0xFF;

                res.ChildAdded        += OnChildAdded;
                res.ChildRemoved      += OnChildRemoved;
                res.ChildInserted     += OnChildInserted;
                res.Replaced          += OnReplaced;
                res.Restored          += OnRestored;
                res.Renamed           += OnRenamed;
                res.MovedUp           += OnMovedUp;
                res.MovedDown         += OnMovedDown;
                res.UpdateProps       += OnUpdateProps;
                res.UpdateCurrControl += OnUpdateCurrControl;
            }
            _resource = res;
        }