using UnityEngine; using UnityEngine.EventSystems; namespace UIWidgets { [RequireComponent(typeof(TreeViewComponent))] public class TreeViewNodeDropSupport : MonoBehaviour, IDropSupport>, IDropSupport { private TreeViewComponent source; public TreeViewComponent Source { get { if (source == null) { source = GetComponent(); } return source; } } public bool CanReceiveDrop(TreeNode data, PointerEventData eventData) { return data.CanBeParent(Source.Node); } public void Drop(TreeNode data, PointerEventData eventData) { data.Parent = Source.Node; } public void DropCanceled(TreeNode data, PointerEventData eventData) { } public bool CanReceiveDrop(ListViewIconsItemDescription data, PointerEventData eventData) { return true; } public void Drop(ListViewIconsItemDescription data, PointerEventData eventData) { TreeNode node = Source.Node; if (node.Nodes == null) { node.Nodes = new ObservableList>(); } TreeViewItem treeViewItem = new TreeViewItem(data.Name); treeViewItem.LocalizedName = data.LocalizedName; treeViewItem.Icon = data.Icon; treeViewItem.Value = data.Value; TreeViewItem nodeItem = treeViewItem; TreeNode item = new TreeNode(nodeItem); node.Nodes.Add(item); } public void DropCanceled(ListViewIconsItemDescription data, PointerEventData eventData) { } } }