124 lines
No EOL
2.7 KiB
C#
124 lines
No EOL
2.7 KiB
C#
using System;
|
|
using System.Collections.ObjectModel;
|
|
using JD.Kernel.StaticHelpers;
|
|
|
|
namespace JD.TeaBoxAddinSystem.Addins.Description
|
|
{
|
|
/// <summary>
|
|
/// A collection of objects that becomes readonly when the addin that it belongs to is loaded.
|
|
/// </summary>
|
|
/// <remarks>NOT a collection of addins :)</remarks>
|
|
internal class AddinCollection<T> : Collection<T>
|
|
{
|
|
#region Variables
|
|
|
|
private Module m_owner;
|
|
|
|
#endregion
|
|
|
|
#region Constructor
|
|
|
|
/// <summary>
|
|
/// Constructor.
|
|
/// </summary>
|
|
internal AddinCollection()
|
|
: this(null)
|
|
{
|
|
}
|
|
|
|
/// <summary>
|
|
/// Constructor.
|
|
/// </summary>
|
|
/// <param name="owner"></param>
|
|
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
|
|
|
|
/// <summary>
|
|
/// OnOwnerChanged.
|
|
/// </summary>
|
|
/// <param name="e"></param>
|
|
internal virtual void OnOwnerChanged(EventArgs e)
|
|
{
|
|
}
|
|
|
|
private void ThrowIfLoaded()
|
|
{
|
|
if (Owner != null)
|
|
{
|
|
Owner.ThrowIfLoaded();
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// Overriden.
|
|
/// </summary>
|
|
/// <param name="index"></param>
|
|
/// <param name="item"></param>
|
|
protected override void InsertItem(int index, T item)
|
|
{
|
|
Throw.IfNull(item, "item");
|
|
ThrowIfLoaded();
|
|
base.InsertItem(index, item);
|
|
}
|
|
|
|
/// <summary>
|
|
/// Overriden.
|
|
/// </summary>
|
|
/// <param name="index"></param>
|
|
protected override void RemoveItem(int index)
|
|
{
|
|
ThrowIfLoaded();
|
|
base.RemoveItem(index);
|
|
}
|
|
|
|
/// <summary>
|
|
/// Overriden.
|
|
/// </summary>
|
|
/// <param name="index"></param>
|
|
/// <param name="item"></param>
|
|
protected override void SetItem(int index, T item)
|
|
{
|
|
Throw.IfNull(item, "item");
|
|
ThrowIfLoaded();
|
|
base.SetItem(index, item);
|
|
}
|
|
|
|
/// <summary>
|
|
/// Overriden.
|
|
/// </summary>
|
|
protected override void ClearItems()
|
|
{
|
|
ThrowIfLoaded();
|
|
base.ClearItems();
|
|
}
|
|
|
|
#endregion
|
|
}
|
|
} |