113 lines
1.4 KiB
C#
113 lines
1.4 KiB
C#
using System;
|
|
using System.ComponentModel;
|
|
using UnityEngine;
|
|
|
|
namespace UIWidgets
|
|
{
|
|
[Serializable]
|
|
public class TreeViewItem : IObservable, INotifyPropertyChanged
|
|
{
|
|
[SerializeField]
|
|
private Sprite icon;
|
|
|
|
[SerializeField]
|
|
private string name;
|
|
|
|
[NonSerialized]
|
|
private string localizedName;
|
|
|
|
[SerializeField]
|
|
private int _value;
|
|
|
|
[SerializeField]
|
|
private object tag;
|
|
|
|
public Sprite Icon
|
|
{
|
|
get
|
|
{
|
|
return icon;
|
|
}
|
|
set
|
|
{
|
|
icon = value;
|
|
Changed("Icon");
|
|
}
|
|
}
|
|
|
|
public string Name
|
|
{
|
|
get
|
|
{
|
|
return name;
|
|
}
|
|
set
|
|
{
|
|
name = value;
|
|
Changed("Name");
|
|
}
|
|
}
|
|
|
|
public string LocalizedName
|
|
{
|
|
get
|
|
{
|
|
return localizedName;
|
|
}
|
|
set
|
|
{
|
|
localizedName = value;
|
|
Changed("LocalizedName");
|
|
}
|
|
}
|
|
|
|
public int Value
|
|
{
|
|
get
|
|
{
|
|
return _value;
|
|
}
|
|
set
|
|
{
|
|
_value = value;
|
|
Changed("Value");
|
|
}
|
|
}
|
|
|
|
public object Tag
|
|
{
|
|
get
|
|
{
|
|
return tag;
|
|
}
|
|
set
|
|
{
|
|
tag = value;
|
|
Changed("Tag");
|
|
}
|
|
}
|
|
|
|
public event OnChange OnChange;
|
|
|
|
public event PropertyChangedEventHandler PropertyChanged;
|
|
|
|
public TreeViewItem(string itemName, Sprite itemIcon = null)
|
|
{
|
|
name = itemName;
|
|
icon = itemIcon;
|
|
}
|
|
|
|
private void Changed(string propertyName = "")
|
|
{
|
|
if (this.OnChange != null)
|
|
{
|
|
this.OnChange();
|
|
}
|
|
if (this.PropertyChanged != null)
|
|
{
|
|
this.PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
|
|
}
|
|
}
|
|
}
|
|
}
|