コード例 #1
0
ファイル: RecordEvents.cs プロジェクト: tosie/Common.Data
        /// <summary>
        /// Fires a given event and passes it with the correct arguments to the registered event handlers. It returns the <see cref="CollectionEventArgs"/> structure it created and that the event handlers might have modified.
        /// </summary>
        /// <param name="sender">The sender of the event.</param>
        /// <param name="handler">The event to fire.</param>
        /// <param name="record">The record the collection belongs to.</param>
        /// <param name="collection">The collection to pass to the event handlers.</param>
        /// <returns>A new instance of the <see cref="CollectionEventArgs"/> class that has been passed to every event handler and might have been modified.</returns>
        public static CollectionEventArgs Fire(Control sender, CollectionEventHandler handler, IEditableDbRecord record, PropertyInfo collection) {
            var args = new CollectionEventArgs(record, collection);

            if (handler == null)
                return args;

            handler(sender, args);

            return args;
        }
コード例 #2
0
        /// <summary>
        /// Overriden. Raises the item added event
        /// </summary>
        protected override void OnInsertComplete(int index, object value)
        {
            base.OnInsertComplete(index, value);
            CollectionEventHandler handler = m_itemAdded;

            if ((handler != null) &&
                notify)
            {
                handler(this, new ExtCollectionEventArgs(value));
            }
        }
コード例 #3
0
        /// <summary>
        ///     Clear all items from data set.
        /// </summary>
        public void ClearAll()
        {
            try
            {
                _lock.EnterWriteLock();
                _list.Clear();

                CollectionEventHandler?.Invoke(this, new CollectionEventArgs <T>(null, CollectionEventTypeEnum.Cleared));
            }
            finally
            {
                _lock.ExitWriteLock();
            }
        }
コード例 #4
0
        /// <summary>
        ///     Add item to data set.
        /// </summary>
        /// <param name="item">Item.</param>
        public bool AddItem(T item)
        {
            try
            {
                _lock.EnterWriteLock();
                var added = _list.Add(item);

                CollectionEventHandler?.Invoke(this, new CollectionEventArgs <T>(new[] { item }, added ? CollectionEventTypeEnum.Added :
                                                                                 CollectionEventTypeEnum.ItemIsAlreadyExisted));

                return(added);
            }
            finally
            {
                _lock.ExitWriteLock();
            }
        }
コード例 #5
0
        /// <summary>
        ///     Remove item from data set.
        /// </summary>
        /// <param name="item"></param>
        /// <returns>Item.</returns>
        public bool RemoveItem(T item)
        {
            try
            {
                _lock.EnterWriteLock();
                var removed = _list.Remove(item);

                CollectionEventHandler?.Invoke(this, new CollectionEventArgs <T>(new[] { item }, removed ? CollectionEventTypeEnum.Removed :
                                                                                 CollectionEventTypeEnum.ItemNotFound));

                return(removed);
            }
            finally
            {
                _lock.ExitWriteLock();
            }
        }
コード例 #6
0
        // <inheritdoc />
        partial void Start2()
        {
            var c = GetComponent <ItemCollectionBase>();

            eventHandler = gameObject.GetComponent <CollectionEventHandler>();

            c.OnAddedItem += OnAddedItemPly;
//            c.OnAddedItemCollectionFull += OnAddedItemCollectionFullPly;
            c.OnDroppedItem      += OnDroppedItemPly;
            c.OnRemovedItem      += OnRemovedItemPly;
            c.OnRemovedReference += OnRemovedReferencePly;
            c.OnResized          += OnResizedPly;
            c.OnSorted           += OnSortedPly;
            c.OnSwappedItems     += OnSwappedItemsPly;
            c.OnUnstackedItem    += OnUnstackedItemPly;
            c.OnUsedItem         += OnUsedItemPly;
            c.OnUsedReference    += OnUsedReferencePly;
        }
コード例 #7
0
        /// <summary>
        ///     Add items to data set.
        /// </summary>
        /// <param name="items">Items.</param>
        public void AddItems(T[] items)
        {
            try
            {
                var added = new List <T>();
                _lock.EnterWriteLock();
                foreach (var item in items)
                {
                    if (_list.Add(item))
                    {
                        added.Add(item);
                    }
                }

                CollectionEventHandler?.Invoke(this, new CollectionEventArgs <T>(added.ToArray(), CollectionEventTypeEnum.Added));
            }
            finally
            {
                _lock.ExitWriteLock();
            }
        }
コード例 #8
0
 private static void Raise(CollectionEventHandler <T> handler, T item) => handler?.Invoke(item);