///Credit perchik
///Sourced from - http://forum.unity3d.com/threads/receive-onclick-event-and-pass-it-on-to-lower-ui-elements.293642/

using System;

namespace UnityEngine.UI.Extensions
{
    [Serializable]
    public class DropDownListItem
    {
        [SerializeField]
        private string _caption;
        /// <summary>
        /// Caption of the Item
        /// </summary>
        public string Caption
        {
            get
            {
                return _caption;
            }
            set
            {
                _caption = value;
                if (OnUpdate != null)
                    OnUpdate();
            }
        }

        [SerializeField]
        private Sprite _image;
        /// <summary>
        /// Image component of the Item
        /// </summary>
        public Sprite Image
        {
            get
            {
                return _image;
            }
            set
            {
                _image = value;
                if (OnUpdate != null)
                    OnUpdate();
            }
        }

        [SerializeField]
        private bool _isDisabled;
        /// <summary>
        /// Is the Item currently enabled?
        /// </summary>
        public bool IsDisabled
        {
            get
            {
                return _isDisabled;
            }
            set
            {
                _isDisabled = value;
                if (OnUpdate != null)
                    OnUpdate();
            }
        }

        [SerializeField]
        private string _id;
        ///<summary>
        ///ID exists so that an item can have a caption and a value like in traditional windows forms. Ie. an item may be a student's name, and the ID can be the student's ID number
        ///</summary>
        public string ID
        {
            get { return _id; }
            set { _id = value; }
        }

        public Action OnSelect; //action to be called when this item is selected

        internal Action OnUpdate; //action to be called when something changes.  

        /// <summary>
        /// Constructor for Drop Down List panelItems
        /// </summary>
        /// <param name="caption">Caption for the item </param>
        /// <param name="val">ID of the item </param>
        /// <param name="image"></param>
        /// <param name="disabled">Should the item start disabled</param>
        /// <param name="onSelect">Action to be called when this item is selected</param>
        public DropDownListItem(string caption = "", string inId = "", Sprite image = null, bool disabled = false, Action onSelect = null)
        {
            _caption = caption;
            _image = image;
            _id = inId;
            _isDisabled = disabled;
            OnSelect = onSelect;
        }
    }
}