101 lines
2.4 KiB
C#
101 lines
2.4 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
|
|
namespace JD.TeaBoxAddinSystem.Addins.Description
|
|
{
|
|
/// <summary>
|
|
/// A collection of <see cref="AddinObject"/>s.
|
|
/// </summary>
|
|
internal class AddinObjectCollection<T> : AddinCollection<T> where T : AddinObject
|
|
{
|
|
#region Constructor
|
|
|
|
/// <summary>
|
|
/// Constructor.
|
|
/// </summary>
|
|
internal AddinObjectCollection()
|
|
: this(null)
|
|
{
|
|
}
|
|
|
|
/// <summary>
|
|
/// Constructor.
|
|
/// </summary>
|
|
/// <param name="owner"></param>
|
|
internal AddinObjectCollection(Module owner)
|
|
: base(owner)
|
|
{
|
|
}
|
|
|
|
#endregion
|
|
|
|
#region Methods
|
|
|
|
/// <summary>
|
|
/// Overriden.
|
|
/// </summary>
|
|
/// <param name="e"></param>
|
|
internal override void OnOwnerChanged(EventArgs e)
|
|
{
|
|
foreach (T item in this)
|
|
{
|
|
item.Module = Owner;
|
|
}
|
|
|
|
base.OnOwnerChanged(e);
|
|
}
|
|
|
|
/// <summary>
|
|
/// Overriden.
|
|
/// </summary>
|
|
/// <param name="index"></param>
|
|
/// <param name="item"></param>
|
|
protected override void InsertItem(int index, T item)
|
|
{
|
|
base.InsertItem(index, item);
|
|
item.Module = Owner;
|
|
}
|
|
|
|
/// <summary>
|
|
/// Overriden.
|
|
/// </summary>
|
|
/// <param name="index"></param>
|
|
protected override void RemoveItem(int index)
|
|
{
|
|
T oldItem = this[index];
|
|
base.RemoveItem(index);
|
|
oldItem.Module = null;
|
|
}
|
|
|
|
/// <summary>
|
|
/// Overriden.
|
|
/// </summary>
|
|
/// <param name="index"></param>
|
|
/// <param name="item"></param>
|
|
protected override void SetItem(int index, T item)
|
|
{
|
|
T oldItem = this[index];
|
|
base.SetItem(index, item);
|
|
oldItem.Module = null;
|
|
item.Module = Owner;
|
|
}
|
|
|
|
/// <summary>
|
|
/// Overriden.
|
|
/// </summary>
|
|
protected override void ClearItems()
|
|
{
|
|
// Not terribly efficient but it's exception safe.
|
|
List<T> oldList = new List<T>(this);
|
|
|
|
base.ClearItems();
|
|
|
|
foreach (T item in oldList)
|
|
{
|
|
item.Module = null;
|
|
}
|
|
}
|
|
|
|
#endregion
|
|
}
|
|
}
|