コード例 #1
0
			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)
						};
					}
				}
			}
コード例 #2
0
			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]);
					}
				}
			}
コード例 #3
0
		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));
		}
コード例 #4
0
        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));
        }
コード例 #5
0
ファイル: TreeViewTest.cs プロジェクト: randomize/VimConfig
 public TestDragging(TreeView treeView, TreeViewTest.BackendData data) : base(treeView)
 {
     this.m_BackendData = data;
 }
コード例 #6
0
ファイル: TreeViewTest.cs プロジェクト: randomize/VimConfig
 public TestDataSource(TreeView treeView, TreeViewTest.BackendData data) : base(treeView)
 {
     this.m_Backend = data;
     this.FetchData();
 }
コード例 #7
0
ファイル: TreeViewTest.cs プロジェクト: randomize/VimConfig
 public FooTreeViewItem(int id, int depth, TreeViewItem parent, string displayName, TreeViewTest.BackendData.Foo foo) : base(id, depth, parent, displayName)
 {
     this.foo = foo;
 }
コード例 #8
0
		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));
		}
コード例 #9
0
			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;
			}
コード例 #10
0
			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);
				}
			}
コード例 #11
0
			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;
			}
コード例 #12
0
			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);
				}
			}
コード例 #13
0
			private HashSet<int> GetParentsBelowRecursive(TreeViewTest.BackendData.Foo searchFromThis)
			{
				HashSet<int> hashSet = new HashSet<int>();
				TreeViewTest.BackendData.GetParentsBelowRecursive(searchFromThis, hashSet);
				return hashSet;
			}
コード例 #14
0
			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;
			}