using System.Collections; using System.Collections.Generic; using UnityEngine; using System.IO; using System.Runtime.Serialization.Formatters.Binary; namespace SuperTreeView { public class DemoScene2Script : MonoBehaviour { public TreeView mTreeView; int mCurSelectedItemId = 0; int mNewItemCount = 0; void Start() { ResManager rm = ResManager.Instance; mTreeView.OnTreeListAddOneItem = OnTreeListAddOneItem; mTreeView.OnTreeListDeleteOneItem = OnTreeListDeleteOneItem; mTreeView.OnItemExpandBegin = OnItemExpandBegin; mTreeView.OnItemCollapseBegin = OnItemCollapseBegin; mTreeView.OnItemCustomEvent = OnItemCustomEvent; mTreeView.OnTreeListRepositionFinish = OnTreeListRepositionFinish; mTreeView.InitView(); TreeViewItem item1 = mTreeView.AppendItem("ItemPrefab1"); item1.GetComponent().SetItemInfo("home", "Home"); TreeViewItem item2 = mTreeView.AppendItem("ItemPrefab1"); item2.GetComponent().SetItemInfo("setting", "Setting"); TreeViewItem item3 = mTreeView.AppendItem("ItemPrefab1"); item3.GetComponent().SetItemInfo("folder", "Folder"); TreeViewItem item4 = mTreeView.AppendItem("ItemPrefab1"); item4.GetComponent().SetItemInfo("lock", "Lock"); TreeViewItem item5 = mTreeView.AppendItem("ItemPrefab1"); item5.GetComponent().SetItemInfo("photo", "Photo"); TreeViewItem childItem1_1 = item1.ChildTree.AppendItem("ItemPrefab1"); childItem1_1.GetComponent().SetItemInfo("movie", "Movie"); TreeViewItem childItem1_2 = item1.ChildTree.AppendItem("ItemPrefab1"); childItem1_2.GetComponent().SetItemInfo("song", "Song"); TreeViewItem childItem1_3 = item1.ChildTree.AppendItem("ItemPrefab1"); childItem1_3.GetComponent().SetItemInfo("trash", "Trash"); TreeViewItem childItem1_4 = item1.ChildTree.AppendItem("ItemPrefab1"); childItem1_4.GetComponent().SetItemInfo("time", "Time"); TreeViewItem childItem1_1_1 = childItem1_1.ChildTree.AppendItem("ItemPrefab1"); childItem1_1_1.GetComponent().SetItemInfo("camera", "Camera"); TreeViewItem childItem1_1_2 = childItem1_1.ChildTree.AppendItem("ItemPrefab1"); childItem1_1_2.GetComponent().SetItemInfo("tools", "Tools"); TreeViewItem childItem1_1_2_1 = childItem1_1_2.ChildTree.AppendItem("ItemPrefab1"); childItem1_1_2_1.GetComponent().SetItemInfo("link", "Link"); TreeViewItem childItem1_1_2_2 = childItem1_1_2.ChildTree.AppendItem("ItemPrefab1"); childItem1_1_2_2.GetComponent().SetItemInfo("game", "Game"); TreeViewItem childItem1_1_2_2_1 = childItem1_1_2_2.ChildTree.AppendItem("ItemPrefab1"); childItem1_1_2_2_1.GetComponent().SetItemInfo("diamond", "Diamond"); TreeViewItem childItem3_1 = item3.ChildTree.AppendItem("ItemPrefab1"); childItem3_1.GetComponent().SetItemInfo("download", "Download"); TreeViewItem childItem3_2 = item3.ChildTree.AppendItem("ItemPrefab1"); childItem3_2.GetComponent().SetItemInfo("favorite", "Favorite"); } void OnItemExpandBegin(TreeViewItem item) { ItemScript2 st = item.GetComponent(); st.SetExpandStatus(true); } void OnItemCollapseBegin(TreeViewItem item) { ItemScript2 st = item.GetComponent(); st.SetExpandStatus(false); } void OnItemCustomEvent(TreeViewItem item, CustomEvent customEvent, System.Object param) { if (customEvent == CustomEvent.ItemClicked) { ItemScript2 st = item.GetComponent(); if (mCurSelectedItemId > 0) { if (item.ItemId == mCurSelectedItemId) { return; } TreeViewItem curSelectedItem = mTreeView.GetTreeItemById(mCurSelectedItemId); if (curSelectedItem != null) { curSelectedItem.GetComponent().IsSelected = false; } mCurSelectedItemId = 0; } st.IsSelected = true; mCurSelectedItemId = item.ItemId; } } void OnTreeListAddOneItem(TreeList treeList) { int count = treeList.ItemCount; TreeViewItem parentTreeItem = treeList.ParentTreeItem; if (count > 0 && parentTreeItem != null) { ItemScript2 st = parentTreeItem.GetComponent(); st.SetExpandBtnVisible(true); st.SetExpandStatus(parentTreeItem.IsExpand); } } void OnTreeListDeleteOneItem(TreeList treeList) { int count = treeList.ItemCount; TreeViewItem parentTreeItem = treeList.ParentTreeItem; if (count == 0 && parentTreeItem != null) { ItemScript2 st = parentTreeItem.GetComponent(); st.SetExpandBtnVisible(false); } } TreeViewItem CurSelectedItem { get { if (mCurSelectedItemId <= 0) { return null; } TreeViewItem item = mTreeView.GetTreeItemById(mCurSelectedItemId); if (item == null) { mCurSelectedItemId = 0; return null; } return item; } } public void OnExpandAllBtnClicked() { mTreeView.ExpandAllItem(); } public void OnCollapseAllBtnClicked() { mTreeView.CollapseAllItem(); } public void OnExpandBtnClicked() { TreeViewItem item = CurSelectedItem; if (item == null) { Debug.Log("Please Select a Item First"); return; } item.Expand(); } public void OnCollapseBtnClicked() { TreeViewItem item = CurSelectedItem; if (item == null) { Debug.Log("Please Select a Item First"); return; } item.Collapse(); } public void OnInsertBeforeBtnClicked() { mNewItemCount++; if (mTreeView.IsEmpty) { TreeViewItem childItem = mTreeView.InsertItem(0, "ItemPrefab1"); childItem.GetComponent().SetItemInfo("movie", "Movie" + mNewItemCount); } else { TreeViewItem item = CurSelectedItem; if (item == null) { Debug.Log("Please Select a Item First"); return; } TreeViewItem childItem = item.ParentTreeList.InsertItem(item.ItemIndex, "ItemPrefab1"); childItem.GetComponent().SetItemInfo("movie", "Movie" + mNewItemCount); } } public void OnInsertAfterBtnClicked() { mNewItemCount++; if (mTreeView.IsEmpty) { TreeViewItem childItem = mTreeView.InsertItem(0, "ItemPrefab1"); childItem.GetComponent().SetItemInfo("movie", "Movie" + mNewItemCount); } else { TreeViewItem item = CurSelectedItem; if (item == null) { Debug.Log("Please Select a Item First"); return; } TreeViewItem childItem = item.ParentTreeList.InsertItem(item.ItemIndex + 1, "ItemPrefab1"); childItem.GetComponent().SetItemInfo("movie", "Movie" + mNewItemCount); } } public void OnAddChildBtnClicked() { mNewItemCount++; if (mTreeView.IsEmpty) { TreeViewItem childItem = mTreeView.AppendItem("ItemPrefab1"); childItem.GetComponent().SetItemInfo("movie", "Movie" + mNewItemCount); } else { TreeViewItem item = CurSelectedItem; if (item == null) { Debug.Log("Please Select a Item First"); return; } TreeViewItem childItem = item.ChildTree.AppendItem("ItemPrefab1"); childItem.GetComponent().SetItemInfo("movie", "Movie" + mNewItemCount); } } public void OnDeleteBtnClicked() { TreeViewItem item = CurSelectedItem; if (item == null) { Debug.Log("Please Select a Item First"); return; } item.ParentTreeList.DeleteItem(item); } public void OnBackBtnClicked() { UnityEngine.SceneManagement.SceneManager.LoadScene("MainMenu"); } void SetRectTransformHeight(RectTransform rt,float height) { Vector2 size = rt.sizeDelta; size.y = height; rt.sizeDelta = size; } void OnTreeListRepositionFinish(TreeList treeList) { int count = treeList.ItemCount; if(count == 0) { return; } //draw the line linked from item to item TreeViewItem item0 = treeList.GetItemByIndex(0); ItemScript2 itemScript0 = item0.GetComponent(); float topY = item0.transform.localPosition.y - item0.CachedRectTransform.rect.height / 2; RectTransform rt0 = itemScript0.mLineVertical.GetComponent(); RectTransform lineRf= rt0; for (int i = 1; i< count ; ++i) { TreeViewItem item = treeList.GetItemByIndex(i); ItemScript2 itemScript = item.GetComponent(); float centerY = item.transform.localPosition.y - item.CachedRectTransform.rect.height / 2; float dist = topY - centerY; topY = centerY; RectTransform rt = itemScript.mLineVertical.GetComponent(); //set the line length SetRectTransformHeight(lineRf, dist); lineRf = rt; } SetRectTransformHeight(lineRf, 0); //draw the line linked from item to item' childTree for (int i = 0; i < count; ++i) { TreeViewItem item = treeList.GetItemByIndex(i); ItemScript2 itemScript = item.GetComponent(); RectTransform rt2 = itemScript.mLineVertical_2.GetComponent(); if (item.ChildItemCount > 0 && item.IsCollapseEnd == false) { //get the childTree's first item TreeViewItem childItem0 = item.ChildTree.GetItemByIndex(0); ItemScript2 childItemScript0 = childItem0.GetComponent(); Vector3 pos0 = item.transform.InverseTransformPoint(childItemScript0.mExpandBtn.transform.position); float dist2 = rt2.localPosition.y - pos0.y; //set the line length SetRectTransformHeight(rt2, dist2); } else { SetRectTransformHeight(rt2, 0); } } } } }