using UnityEngine;
using System.Collections;
namespace UIWidgets {
///
/// TreeView component.
///
[AddComponentMenu("UI/UIWidgets/TreeViewComponent")]
public class TreeViewComponent : TreeViewComponentBase {
TreeViewItem item;
///
/// Gets or sets the item.
///
/// The item.
public TreeViewItem Item {
get {
return item;
}
set {
if (item!=null)
{
item.OnChange -= UpdateView;
}
item = value;
if (item!=null)
{
item.OnChange += UpdateView;
}
UpdateView();
}
}
///
/// Sets the data.
///
/// Node.
/// Depth.
public override void SetData(TreeNode newNode, int depth)
{
Node = newNode;
base.SetData(Node, depth);
Item = (Node==null) ? null : Node.Item;
}
///
/// Updates the view.
///
protected virtual void UpdateView()
{
if ((Icon==null) || (Text==null))
{
return ;
}
if (Item==null)
{
Icon.sprite = null;
Text.text = string.Empty;
}
else
{
Icon.sprite = Item.Icon;
Text.text = Item.LocalizedName ?? Item.Name;
}
if (SetNativeSize)
{
Icon.SetNativeSize();
}
//set transparent color if no icon
Icon.color = (Icon.sprite==null) ? Color.clear : Color.black;
}
///
/// Called when item moved to cache, you can use it free used resources.
///
public override void MovedToCache()
{
if (Icon!=null)
{
Icon.sprite = null;
}
}
///
/// This function is called when the MonoBehaviour will be destroyed.
///
protected override void OnDestroy()
{
if (item!=null)
{
item.OnChange -= UpdateView;
}
base.OnDestroy();
}
}
}