using System.Collections.Generic;
namespace FairyGUI
{
    /// 
    /// 
    /// 
    public class EventContext
    {
        /// 
        /// 
        /// 
        public EventDispatcher sender { get; internal set; }
        /// 
        /// /
        /// 
        public object initiator { get; internal set; }
        /// 
        /// /
        /// 
        public InputEvent inputEvent { get; internal set; }
        /// 
        /// 
        /// 
        public string type;
        /// 
        /// 
        /// 
        public object data;
        internal bool _defaultPrevented;
        internal bool _stopsPropagation;
        internal bool _touchCapture;
        internal List callChain = new List();
        /// 
        /// 
        /// 
        public void StopPropagation()
        {
            _stopsPropagation = true;
        }
        /// 
        /// 
        /// 
        public void PreventDefault()
        {
            _defaultPrevented = true;
        }
        /// 
        /// 
        /// 
        public void CaptureTouch()
        {
            _touchCapture = true;
        }
        /// 
        /// 
        /// 
        public bool isDefaultPrevented
        {
            get { return _defaultPrevented; }
        }
        static Stack pool = new Stack();
        internal static EventContext Get()
        {
            if (pool.Count > 0)
            {
                EventContext context = pool.Pop();
                context._stopsPropagation = false;
                context._defaultPrevented = false;
                context._touchCapture = false;
                return context;
            }
            else
                return new EventContext();
        }
        internal static void Return(EventContext value)
        {
            pool.Push(value);
        }
    }
}