using System;
using System.Collections.ObjectModel;
using JD.Kernel.StaticHelpers;
namespace JD.TeaBoxAddinSystem.Addins.Description
{
///
/// A collection of objects that becomes readonly when the addin that it belongs to is loaded.
///
/// NOT a collection of addins :)
internal class AddinCollection : Collection
{
#region Variables
private Module m_owner;
#endregion
#region Constructor
///
/// Constructor.
///
internal AddinCollection()
: this(null)
{
}
///
/// Constructor.
///
///
internal AddinCollection(Module owner)
{
m_owner = owner;
}
#endregion
#region Properties
internal Module Owner
{
get
{
return m_owner;
}
set
{
if (m_owner != value)
{
m_owner = value;
OnOwnerChanged(EventArgs.Empty);
}
}
}
#endregion
#region Methods
///
/// OnOwnerChanged.
///
///
internal virtual void OnOwnerChanged(EventArgs e)
{
}
private void ThrowIfLoaded()
{
if (Owner != null)
{
Owner.ThrowIfLoaded();
}
}
///
/// Overriden.
///
///
///
protected override void InsertItem(int index, T item)
{
Throw.IfNull(item, "item");
ThrowIfLoaded();
base.InsertItem(index, item);
}
///
/// Overriden.
///
///
protected override void RemoveItem(int index)
{
ThrowIfLoaded();
base.RemoveItem(index);
}
///
/// Overriden.
///
///
///
protected override void SetItem(int index, T item)
{
Throw.IfNull(item, "item");
ThrowIfLoaded();
base.SetItem(index, item);
}
///
/// Overriden.
///
protected override void ClearItems()
{
ThrowIfLoaded();
base.ClearItems();
}
#endregion
}
}