/// <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; }
/// <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)); } }
/// <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(); } }
/// <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(); } }
/// <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(); } }
// <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; }
/// <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(); } }
private static void Raise(CollectionEventHandler <T> handler, T item) => handler?.Invoke(item);