You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
100 lines
1.8 KiB
100 lines
1.8 KiB
using UnityEngine; |
|
using System.Collections; |
|
|
|
namespace UIWidgets { |
|
/// <summary> |
|
/// TreeView component. |
|
/// </summary> |
|
[AddComponentMenu("UI/UIWidgets/TreeViewComponent")] |
|
public class TreeViewComponent : TreeViewComponentBase<TreeViewItem> { |
|
TreeViewItem item; |
|
|
|
/// <summary> |
|
/// Gets or sets the item. |
|
/// </summary> |
|
/// <value>The item.</value> |
|
public TreeViewItem Item { |
|
get { |
|
return item; |
|
} |
|
set { |
|
if (item!=null) |
|
{ |
|
item.OnChange -= UpdateView; |
|
} |
|
item = value; |
|
if (item!=null) |
|
{ |
|
item.OnChange += UpdateView; |
|
} |
|
UpdateView(); |
|
} |
|
} |
|
|
|
/// <summary> |
|
/// Sets the data. |
|
/// </summary> |
|
/// <param name="newNode">Node.</param> |
|
/// <param name="depth">Depth.</param> |
|
public override void SetData(TreeNode<TreeViewItem> newNode, int depth) |
|
{ |
|
Node = newNode; |
|
base.SetData(Node, depth); |
|
|
|
Item = (Node==null) ? null : Node.Item; |
|
} |
|
|
|
/// <summary> |
|
/// Updates the view. |
|
/// </summary> |
|
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; |
|
} |
|
|
|
/// <summary> |
|
/// Called when item moved to cache, you can use it free used resources. |
|
/// </summary> |
|
public override void MovedToCache() |
|
{ |
|
if (Icon!=null) |
|
{ |
|
Icon.sprite = null; |
|
} |
|
} |
|
|
|
/// <summary> |
|
/// This function is called when the MonoBehaviour will be destroyed. |
|
/// </summary> |
|
protected override void OnDestroy() |
|
{ |
|
if (item!=null) |
|
{ |
|
item.OnChange -= UpdateView; |
|
} |
|
base.OnDestroy(); |
|
} |
|
} |
|
} |