using UnityEngine;
using System.ComponentModel;
namespace UIWidgets {
[System.Serializable]
///
/// Tree view item.
///
public class TreeViewItem : IObservable, INotifyPropertyChanged {
///
/// OnChange event.
///
public event OnChange OnChange;
///
/// Occurs when a property value changes.
///
public event PropertyChangedEventHandler PropertyChanged;
///
/// The icon.
///
[SerializeField]
Sprite icon;
///
/// Gets or sets the icon.
///
/// The icon.
public Sprite Icon {
get {
return icon;
}
set {
icon = value;
Changed("Icon");
}
}
///
/// The name.
///
[SerializeField]
string name;
///
/// Gets or sets the name.
///
/// The name.
public string Name {
get {
return name;
}
set {
name = value;
Changed("Name");
}
}
[System.NonSerialized]
string localizedName;
///
/// The localized name.
///
public string LocalizedName {
get {
return localizedName;
}
set {
localizedName = value;
Changed("LocalizedName");
}
}
[SerializeField]
int _value;
///
/// Gets or sets the value.
///
/// The value.
public int Value {
get {
return _value;
}
set {
_value = value;
Changed("Value");
}
}
[SerializeField]
object tag;
///
/// Gets or sets the tag.
///
/// The tag.
public object Tag {
get {
return tag;
}
set {
tag = value;
Changed("Tag");
}
}
///
/// Initializes a new instance of the class.
///
/// Item name.
/// Item icon.
public TreeViewItem(string itemName, Sprite itemIcon = null)
{
name = itemName;
icon = itemIcon;
}
void Changed(string propertyName = "")
{
if (OnChange!=null)
{
OnChange();
}
if (PropertyChanged!=null)
{
PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
}
}
}
}