Beispiel #1
0
        /// <summary>
        /// Returns true if handler is mapped to any of the specified phases
        /// </summary>
        /// <param name="eventType"></param>
        /// <param name="handler"></param>
        /// <param name="phases"></param>
        /// <returns></returns>
        public virtual bool MappedToAnyPhase(string eventType, EventHandler handler, EventPhase phases)
        {
            var arr = EventPhaseHelper.BreakUpPhases(phases);

            foreach (EventPhase phase in arr)
            {
                EventTypePhase key = new EventTypePhase(eventType, phase);
                //if (_eventHandlerDict.ContainsKey(key) && _eventHandlerDict[key].Contains(handler))
                if (_eventHandlerDict.ContainsKey(key))
                {
                    var exists = _eventHandlerDict[key].Exists(delegate(PriorityGroup group)
                    {
                        return(group.Contains(handler));
                    });

                    //foreach (PriorityGroup group in _eventHandlerDict[key])
                    //{
                    //    //if (_eventHandlerDict[key].Contains(handler))
                    //    //    return true;
                    //}

                    return(exists);
                }
            }

            return(false);
        }
Beispiel #2
0
        /// <summary>
        /// Removes all listeners for the spacified event type and phases
        /// </summary>
        /// <param name="eventType">Event type</param>
        /// /// <param name="phases"></param>
        public virtual void RemoveAllListeners(string eventType, EventPhase phases)
        {
            var arr = EventPhaseHelper.BreakUpPhases(phases);

            foreach (EventPhase phase in arr)
            {
                EventTypePhase key = new EventTypePhase(eventType, phase);
                if (_eventHandlerDict.ContainsKey(key))
                {
                    _eventHandlerDict[key].Clear();
                    _eventHandlerDict.Remove(key);
                }
            }
        }
Beispiel #3
0
        /// <summary>
        /// Returns true if handler is mapped to any of the specified phases
        /// </summary>
        /// <param name="eventType"></param>
        /// <param name="handler"></param>
        /// <param name="phases"></param>
        /// <returns></returns>
        public virtual bool MappedToAnyPhase(string eventType, EventHandler handler, EventPhase phases)
        {
            var arr = EventPhaseHelper.BreakUpPhases(phases);

            foreach (EventPhase phase in arr)
            {
                EventTypePhase key = new EventTypePhase(eventType, phase);
                if (_eventHandlerDict.ContainsKey(key) && _eventHandlerDict[key].Contains(handler))
                {
                    return(true);
                }
            }

            return(false);
        }
Beispiel #4
0
        /// <summary>
        /// Adds the event listener
        /// </summary>
        /// <param name="eventType">Event type</param>
        /// <param name="handler">Event handler</param>
        /// <param name="phases">Event bubbling phases that we listen to</param>
        public virtual void AddEventListener(string eventType, EventHandler handler, EventPhase phases)
        {
            var arr = EventPhaseHelper.BreakUpPhases(phases);

            foreach (EventPhase phase in arr)
            {
                EventTypePhase key = new EventTypePhase(eventType, phase);

                if (!_eventHandlerDict.ContainsKey(key)) // avoid key duplication
                {
                    _eventHandlerDict.Add(key, new List <EventHandler>());
                }

                if (!_eventHandlerDict[key].Contains(handler)) // avoid key + value duplication
                {
                    _eventHandlerDict[key].Add(handler);
                }
            }
        }
Beispiel #5
0
        /// <summary>
        /// Removes the event listener
        /// </summary>
        /// <param name="eventType">Event type</param>
        /// <param name="handler">Event handler (function)</param>
        /// <param name="phases">Event bubbling phases that we listen to</param>
        public virtual void RemoveEventListener(string eventType, EventHandler handler, EventPhase phases)
        {
            var arr = EventPhaseHelper.BreakUpPhases(phases);

            foreach (EventPhase phase in arr)
            {
                EventTypePhase key = new EventTypePhase(eventType, phase);

                if (_eventHandlerDict.ContainsKey(key))
                {
                    foreach (PriorityGroup group in _eventHandlerDict[key])
                    {
                        if (group.Contains(handler))
                        {
                            group.Remove(handler);
                        }

                        if (group.Count == 0)
                        {
                            if (null == _tempList)
                            {
                                _tempList = new List <PriorityGroup>();
                            }
                            _tempList.Add(group);
                        }
                    }

                    if (null != _tempList)
                    {
                        foreach (PriorityGroup @group in _tempList)
                        {
                            _eventHandlerDict[key].Remove(@group); // cleanup
                        }
                        _tempList.Clear();
                    }

                    if (_eventHandlerDict[key].Count == 0)
                    {
                        _eventHandlerDict.Remove(key); // cleanup
                    }
                }
            }
        }
Beispiel #6
0
        /// <summary>
        /// Adds the event listener
        /// </summary>
        /// <param name="eventType">Event type</param>
        /// <param name="handler">Event handler</param>
        /// <param name="phases">Event bubbling phases that we listen to</param>
        /// <param name="priority">Event priority</param>
        public virtual void AddEventListener(string eventType, EventHandler handler, EventPhase phases, int priority)
        {
            var arr = EventPhaseHelper.BreakUpPhases(phases);

            foreach (EventPhase phase in arr)
            {
                EventTypePhase key = new EventTypePhase(eventType, phase);

                if (!_eventHandlerDict.ContainsKey(key)) // avoid key duplication
                {
                    _eventHandlerDict.Add(key, new List <PriorityGroup>());
                }

                var group = _eventHandlerDict[key].Find(delegate(PriorityGroup g)
                {
                    return(g.Priority == priority);
                });

                if (null == group)
                {
                    //if (0 != priority)
                    //    Debug.Log("Creating new group with priority " + priority);
                    group = new PriorityGroup {
                        Priority = priority
                    };
                    // add and sort
                    _eventHandlerDict[key].Add(group);

                    // if having multiple priorities, sort now
                    if (_eventHandlerDict[key].Count > 0)
                    {
                        _eventHandlerDict[key].Sort(PriorityComparer);
                    }
                }

                if (!group.Contains(handler)) // avoid key + value duplication
                {
                    group.Add(handler);
                }
            }
        }
Beispiel #7
0
        /// <summary>
        /// Removes the event listener
        /// </summary>
        /// <param name="eventType">Event type</param>
        /// <param name="handler">Event handler (function)</param>
        /// <param name="phases">Event bubbling phases that we listen to</param>
        public virtual void RemoveEventListener(string eventType, EventHandler handler, EventPhase phases)
        {
            var arr = EventPhaseHelper.BreakUpPhases(phases);

            foreach (EventPhase phase in arr)
            {
                EventTypePhase key = new EventTypePhase(eventType, phase);

                if (_eventHandlerDict.ContainsKey(key))
                {
                    if (_eventHandlerDict[key].Contains(handler))
                    {
                        _eventHandlerDict[key].Remove(handler);
                    }

                    if (_eventHandlerDict[key].Count == 0) // cleanup
                    {
                        _eventHandlerDict.Remove(key);
                    }
                }
            }
        }