private void AddVisibleChildrenRecursive(TreeViewTest.BackendData.Foo source, TreeViewItem dest) { if (this.IsExpanded(source.id)) { if (source.children != null && source.children.Count > 0) { dest.children = new List<TreeViewItem>(source.children.Count); for (int i = 0; i < source.children.Count; i++) { TreeViewTest.BackendData.Foo foo = source.children[i]; dest.children[i] = new TreeViewTest.FooTreeViewItem(foo.id, dest.depth + 1, dest, foo.name, foo); this.itemCounter++; this.AddVisibleChildrenRecursive(foo, dest.children[i]); } } } else { if (source.hasChildren) { dest.children = new List<TreeViewItem> { new TreeViewItem(-1, -1, null, string.Empty) }; } } }
private void AddChildrenRecursive(TreeViewTest.BackendData.Foo source, TreeViewItem dest) { if (source.hasChildren) { dest.children = new List<TreeViewItem>(source.children.Count); for (int i = 0; i < source.children.Count; i++) { TreeViewTest.BackendData.Foo foo = source.children[i]; dest.children[i] = new TreeViewTest.FooTreeViewItem(foo.id, dest.depth + 1, dest, foo.name, foo); this.itemCounter++; this.AddChildrenRecursive(foo, dest.children[i]); } } }
private void OnGUI() { Rect rect = new Rect(0f, 0f, base.position.width / 2f, base.position.height); Rect rect2 = new Rect(base.position.width / 2f, 0f, base.position.width / 2f, base.position.height); if (this.m_TreeViewTest == null) { this.m_BackendData = new TreeViewTest.BackendData(); this.m_BackendData.GenerateData(1000000); bool lazy = false; this.m_TreeViewTest = new TreeViewTest(this, lazy); this.m_TreeViewTest.Init(rect, this.m_BackendData); lazy = true; this.m_TreeViewTest2 = new TreeViewTest(this, lazy); this.m_TreeViewTest2.Init(rect2, this.m_BackendData); } this.m_TreeViewTest.OnGUI(rect); this.m_TreeViewTest2.OnGUI(rect2); EditorGUI.DrawRect(new Rect(rect.xMax - 1f, 0f, 2f, base.position.height), new Color(0.4f, 0.4f, 0.4f, 0.8f)); }
private void OnGUI() { Rect rect = new Rect(0f, 0f, base.position.width / 2f, base.position.height); Rect rect2 = new Rect(base.position.width / 2f, 0f, base.position.width / 2f, base.position.height); if (this.m_TreeViewTest == null) { this.m_BackendData = new TreeViewTest.BackendData(); this.m_BackendData.GenerateData(1000000); bool lazy = false; this.m_TreeViewTest = new TreeViewTest(this, lazy); this.m_TreeViewTest.Init(rect, this.m_BackendData); lazy = true; this.m_TreeViewTest2 = new TreeViewTest(this, lazy); this.m_TreeViewTest2.Init(rect2, this.m_BackendData); } this.m_TreeViewTest.OnGUI(rect); this.m_TreeViewTest2.OnGUI(rect2); EditorGUI.DrawRect(new Rect(rect.xMax - 1f, 0f, 2f, base.position.height), new Color(0.4f, 0.4f, 0.4f, 0.8f)); }
public TestDragging(TreeView treeView, TreeViewTest.BackendData data) : base(treeView) { this.m_BackendData = data; }
public TestDataSource(TreeView treeView, TreeViewTest.BackendData data) : base(treeView) { this.m_Backend = data; this.FetchData(); }
public FooTreeViewItem(int id, int depth, TreeViewItem parent, string displayName, TreeViewTest.BackendData.Foo foo) : base(id, depth, parent, displayName) { this.foo = foo; }
public void Init(Rect rect, TreeViewTest.BackendData backendData) { if (this.m_TreeView != null) { return; } this.m_BackendData = backendData; TreeViewState treeViewState = new TreeViewState(); treeViewState.columnWidths = new float[] { 250f, 90f, 93f, 98f, 74f, 78f }; this.m_TreeView = new TreeView(this.m_EditorWindow, treeViewState); ITreeViewGUI gui = new TreeViewTest.TestGUI(this.m_TreeView); ITreeViewDragging dragging = new TreeViewTest.TestDragging(this.m_TreeView, this.m_BackendData); ITreeViewDataSource data; if (this.m_Lazy) { data = new TreeViewTest.LazyTestDataSource(this.m_TreeView, this.m_BackendData); } else { data = new TreeViewTest.TestDataSource(this.m_TreeView, this.m_BackendData); } this.m_TreeView.Init(rect, data, gui, dragging); this.m_ColumnHeader = new TreeViewTest.TreeViewColumnHeader(); this.m_ColumnHeader.columnWidths = treeViewState.columnWidths; this.m_ColumnHeader.minColumnWidth = 30f; TreeViewTest.TreeViewColumnHeader expr_D5 = this.m_ColumnHeader; expr_D5.columnRenderer = (Action<int, Rect>)Delegate.Combine(expr_D5.columnRenderer, new Action<int, Rect>(this.OnColumnRenderer)); }
public static TreeViewTest.BackendData.Foo FindNodeRecursive(TreeViewTest.BackendData.Foo item, int id) { if (item == null) { return null; } if (item.id == id) { return item; } if (item.children == null) { return null; } foreach (TreeViewTest.BackendData.Foo current in item.children) { TreeViewTest.BackendData.Foo foo = TreeViewTest.BackendData.FindNodeRecursive(current, id); if (foo != null) { return foo; } } return null; }
private void AddChildrenRecursive(TreeViewTest.BackendData.Foo foo, int numChildren, bool force) { if (this.IDCounter > this.m_MaxItems) { return; } if (foo.depth >= 12) { return; } if (!force && UnityEngine.Random.value < 0.5f) { return; } if (foo.children == null) { foo.children = new List<TreeViewTest.BackendData.Foo>(numChildren); } for (int i = 0; i < numChildren; i++) { TreeViewTest.BackendData.Foo foo2 = new TreeViewTest.BackendData.Foo("Tud" + this.IDCounter, foo.depth + 1, ++this.IDCounter); foo2.parent = foo; foo.children.Add(foo2); } if (this.IDCounter > this.m_MaxItems) { return; } foreach (TreeViewTest.BackendData.Foo current in foo.children) { this.AddChildrenRecursive(current, UnityEngine.Random.Range(3, 15), false); } }
public void ReparentSelection(TreeViewTest.BackendData.Foo parentItem, TreeViewTest.BackendData.Foo insertAfterItem, List<TreeViewTest.BackendData.Foo> draggedItems) { foreach (TreeViewTest.BackendData.Foo current in draggedItems) { current.parent.children.Remove(current); current.parent = parentItem; } if (!parentItem.hasChildren) { parentItem.children = new List<TreeViewTest.BackendData.Foo>(); } List<TreeViewTest.BackendData.Foo> list = new List<TreeViewTest.BackendData.Foo>(parentItem.children); int index = 0; if (parentItem == insertAfterItem) { index = 0; } else { int num = parentItem.children.IndexOf(insertAfterItem); if (num >= 0) { index = num + 1; } else { Debug.LogError("Did not find insertAfterItem, should be a child of parentItem!!"); } } list.InsertRange(index, draggedItems); parentItem.children = list; }
private static void GetParentsBelowRecursive(TreeViewTest.BackendData.Foo item, HashSet<int> parentIDs) { if (!item.hasChildren) { return; } parentIDs.Add(item.id); foreach (TreeViewTest.BackendData.Foo current in item.children) { TreeViewTest.BackendData.GetParentsBelowRecursive(current, parentIDs); } }
private HashSet<int> GetParentsBelowRecursive(TreeViewTest.BackendData.Foo searchFromThis) { HashSet<int> hashSet = new HashSet<int>(); TreeViewTest.BackendData.GetParentsBelowRecursive(searchFromThis, hashSet); return hashSet; }
private HashSet<int> GetParentsBelowStackBased(TreeViewTest.BackendData.Foo searchFromThis) { Stack<TreeViewTest.BackendData.Foo> stack = new Stack<TreeViewTest.BackendData.Foo>(); stack.Push(searchFromThis); HashSet<int> hashSet = new HashSet<int>(); while (stack.Count > 0) { TreeViewTest.BackendData.Foo foo = stack.Pop(); if (foo.hasChildren) { hashSet.Add(foo.id); foreach (TreeViewTest.BackendData.Foo current in foo.children) { stack.Push(current); } } } return hashSet; }