using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace FLY.OBJComponents.Common
{
    public interface INotifyBufferChanged<T>
    {
        //
        // 摘要:
        //     当集合更改时发生。
        event NotifyBufferChangedEventHandler<T> BufferChanged;
    }

    public delegate void NotifyBufferChangedEventHandler<T>(object sender, NotifyBufferChangedEventArgs<T> e);

    public class NotifyBufferChangedEventArgs<T> : EventArgs
    {
        public NotifyBufferChangedAction Action { get; set; }
        public IList<T> Items { get; set; }
        public int StartingIndex { get; set; }
    }

    public enum NotifyBufferChangedAction
    {
        //
        // 摘要:
        //     向集合中添加了一个或多个项。
        Add = 0,
        //
        // 摘要:
        //     从集合中移除了一个或多个项。
        Remove = 1,
        //
        // 摘要:
        //     在集合中替换了一个或多个项。
        Replace = 2,
        //
        // 摘要:
        //     集合的内容发生显著更改。
        Reset = 4,
        /// <summary>
        /// 刚连接上
        /// </summary>
        IsConnected=5
    }
}
