Example #1
0
        public void HierarchyTreeViewUnitTest_TestMethod1()
        {
            HierarchyTreeView treeView = new HierarchyTreeView();
            Hierarchy         data     = new Hierarchy {
                Name = "Parent"
            };

            data.Children.Add(new Hierarchy {
                Name = "Child 1"
            });
            data.Children.Add(new Hierarchy {
                Name = "Child 2"
            });
            data.Children[0].Children.Add(new Hierarchy {
                Name = "Child Child 1"
            });
            treeView.Data = data;
            Assert.IsNotNull(treeView.Nodes);
            Assert.AreEqual(1, treeView.Nodes.Count);
            Assert.AreEqual("Parent", treeView.Nodes[0].Text);
            Assert.AreEqual(data.Id.ToString(), treeView.Nodes[0].Name);
            Assert.IsNotNull(treeView.Nodes[0].Tag);
            Assert.AreEqual(data, treeView.Nodes[0].Tag as Hierarchy);
            Assert.IsNotNull(treeView.Nodes[0].Nodes);
            Assert.AreEqual(2, treeView.Nodes[0].Nodes.Count);
            Assert.AreEqual("Child 1", treeView.Nodes[0].Nodes[0].Text);
            Assert.AreEqual(1, treeView.Nodes[0].Nodes[0].Nodes.Count);
            Assert.AreEqual("Child Child 1", treeView.Nodes[0].Nodes[0].Nodes[0].Text);
        }
Example #2
0
        private void BonesTreeViews_ModelDropped(object sender, BrightIdeasSoftware.ModelDropEventArgs e)
        {
            void UnlinkBone(BoneLinkNode node)
            {
                node.ParentID = string.Empty;
                var parentBone = BoneNodes.FirstOrDefault(x => x.ChildBones.Contains(node));

                if (parentBone != null)
                {
                    parentBone.ChildBones.Remove(node);
                    HierarchyTreeView.RefreshObject(parentBone);
                }
            }

            var draggedBones = e.SourceModels.OfType <BoneLinkNode>().ToList();

            if (sender == UnassignedTreeView)
            {
                var allBones = draggedBones.SelectMany(x => x.GetHierarchy(true)).Distinct().ToList();

                foreach (BoneLinkNode node in allBones)
                {
                    //node.ParentID = string.Empty;
                    node.UnlinkChildrens();
                }

                foreach (BoneLinkNode node in draggedBones)
                {
                    UnlinkBone(node);
                }

                UnassignedTreeView.AddObjects(allBones);
            }
            else if (sender == HierarchyTreeView)
            {
                if (RootBone == null)
                {
                    RootBone = e.SourceModels[0] as BoneLinkNode;
                    HierarchyTreeView.AddObject(RootBone);
                }
                else if (e.TargetModel is BoneLinkNode targetBone)
                {
                    foreach (BoneLinkNode node in draggedBones)
                    {
                        if (string.IsNullOrEmpty(node.ParentID))
                        {
                            UnassignedTreeView.RemoveObject(node);
                        }

                        UnlinkBone(node);
                        targetBone.ChildBones.Add(node);
                        node.ParentID = targetBone.ID;
                    }
                    HierarchyTreeView.RefreshObject(targetBone);
                }
            }
        }
        protected internal void HTV_SelectedItemChanged(HierarchyTreeView sender)
        {
            List <long> tempItems = sender.GetVisibleItemsIds();

            if (!visibleItemsIds.SequenceEqual(tempItems))
            {
                visibleItemsIds = tempItems;
                reportViewModel.DataProvider.ProvideRecords(visibleItemsIds);
            }
        }
Example #4
0
        private void LoadBoneNodes()
        {
            BoneNodes = new List <BoneLinkNode>();

            foreach (var bone in Bones)
            {
                var parentBone = Bones.FirstOrDefault(x => x.BoneID == bone.TargetBoneID);

                BoneNodes.Add(new BoneLinkNode()
                {
                    ID       = bone.ID,
                    Name     = bone.Name,
                    ParentID = parentBone?.ID,
                    BoneID   = bone.BoneID
                });
            }


            var remainingBones = BoneNodes.ToList();

            void LinkChildBones(BoneLinkNode parent)
            {
                var childs = remainingBones.Where(x => x.ParentID == parent.ID).ToList();

                if (!childs.Any())
                {
                    return;
                }
                parent.ChildBones.AddRange(childs);
                remainingBones.RemoveAll(x => x.ParentID == parent.ID);
                foreach (var child in childs)
                {
                    LinkChildBones(child);
                }
            }

            RootBone = BoneNodes.FirstOrDefault(b => b.BoneID == 0);

            if (RootBone != null)
            {
                remainingBones.Remove(RootBone);

                LinkChildBones(RootBone);
                HierarchyTreeView.AddObject(RootBone);
            }

            if (remainingBones.Any())
            {
                UnassignedTreeView.SetObjects(remainingBones);
            }

            HierarchyTreeView.ExpandAll();
        }
Example #5
0
        private void AdjustColumnWidth()
        {
            int maxIndent = 0;

            foreach (var test in HierarchyTreeView.ExpandedObjects)
            {
                int itemIndex = HierarchyTreeView.IndexOf(test);
                if (itemIndex == -1)
                {
                    continue;
                }
                maxIndent = Math.Max(maxIndent, HierarchyTreeView.GetItem(itemIndex).IndentCount);
            }
            olvColumn1.Width = (maxIndent * 8) + 100;
        }
Example #6
0
            private void CacheHierarchy()
            {
                if (m_HierachyTreeViewState == null)
                {
                    m_HierachyTreeViewState = new TreeViewState();
                }

                hierarchyTreeView = new HierarchyTreeView(target.transform, m_HierachyTreeViewState);
                hierarchyTreeView.ExpandAll();
                hierarchyTreeView.OnItemClick += (go) =>
                {
                    lastSelectGameObject    = currentSelectGameObject;
                    currentSelectGameObject = (GameObject)go;
                    CacheComponent();
                };
            }
        protected virtual void CreateTreeView()
        {
            if (m_TreeViewState == null)
            {
                m_TreeViewState = new TreeViewState();
            }

            var needsCacheState = false;

            if (m_HierarchyViewState == null)
            {
                m_HierarchyViewState = new HierarchyState();
                needsCacheState      = true;
            }

            m_HierarchyTreeView = new HierarchyTreeView(m_TreeViewState, m_HierarchyViewState, IsEnvironmentHierarchy, needsCacheState);

            Reload();
        }
Example #8
0
 static void OnSelectionChanged()
 {
     HierarchyTreeView.PingObjects(Selection.transforms);
 }
Example #9
0
 void IModule.UnloadModule()
 {
     Selection.selectionChanged -= OnSelectionChanged;
     HierarchyTreeView.UnsetPing();
 }
Example #10
0
        public void HierarchyTreeViewUnitTest_TestEnabledButtonsWhenTemplateNodeIsSelected()
        {
            HierarchyTreeView treeView = new HierarchyTreeView();
            Hierarchy         data     = new Hierarchy {
                Name = "Templates"
            };

            data.Children.Add(new Hierarchy {
                Name = "Context"
            });
            var template = new Template {
                DataType = Guid.Empty
            };

            // template.
            data.Children.Add(new Hierarchy {
                Name = "Entity", Item = template
            });
            data.Children[0].Children.Add(
                new Hierarchy {
                Name = "Entity FrameWork Context", HierarchyType = HierarchyType.Item
            });
            data.Children[1].Children.Add(new Hierarchy {
                Name = "Test 1", HierarchyType = HierarchyType.Item
            });
            data.Children[1].Children.Add(new Hierarchy {
                Name = "Test 1", HierarchyType = HierarchyType.Item
            });

            treeView.Data = data;

            // Test Level 1 (Template)
            treeView.SelectNode(treeView.Nodes[0]);
            Assert.AreEqual(false, treeView.UpEnabled);
            Assert.AreEqual(false, treeView.DownEnabled);
            Assert.AreEqual(false, treeView.DeleteEnabled);
            Assert.AreEqual(false, treeView.AddGroupEnabled);
            Assert.AreEqual(false, treeView.AddItemEnabled);

            // Test Level 2 (Context)
            treeView.SelectNode(treeView.Nodes[0].Nodes[0]);
            Assert.AreEqual(false, treeView.UpEnabled);
            Assert.AreEqual(false, treeView.DownEnabled);
            Assert.AreEqual(false, treeView.DeleteEnabled);
            Assert.AreEqual(true, treeView.AddGroupEnabled);
            Assert.AreEqual(true, treeView.AddItemEnabled);

            // Test Single Item (Entity FrameWork Context(v6))
            treeView.SelectNode(treeView.Nodes[0].Nodes[0].Nodes[0]);
            Assert.AreEqual(false, treeView.UpEnabled);
            Assert.AreEqual(false, treeView.DownEnabled);
            Assert.AreEqual(true, treeView.DeleteEnabled);
            Assert.AreEqual(false, treeView.AddGroupEnabled);
            Assert.AreEqual(true, treeView.AddItemEnabled);

            // Test Multiple Children Item 1 (Test 1)
            treeView.SelectNode(treeView.Nodes[0].Nodes[1].Nodes[0]);
            Assert.AreEqual(false, treeView.UpEnabled);
            Assert.AreEqual(true, treeView.DownEnabled);
            Assert.AreEqual(true, treeView.DeleteEnabled);
            Assert.AreEqual(false, treeView.AddGroupEnabled);
            Assert.AreEqual(true, treeView.AddItemEnabled);

            // Test Multiple Children Item 2 (Test 2)
            treeView.SelectNode(treeView.Nodes[0].Nodes[1].Nodes[1]);
            Assert.AreEqual(true, treeView.UpEnabled);
            Assert.AreEqual(false, treeView.DownEnabled);
            Assert.AreEqual(true, treeView.DeleteEnabled);
            Assert.AreEqual(false, treeView.AddGroupEnabled);
            Assert.AreEqual(true, treeView.AddItemEnabled);
        }