138 lines
4.5 KiB
C#
138 lines
4.5 KiB
C#
#if FRAMEWORK20
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using System.Text;
|
|
using System.Collections.ObjectModel;
|
|
using System.ComponentModel;
|
|
|
|
namespace DevComponents.DotNetBar
|
|
{
|
|
public class PropertySettingsCollection : Collection<PropertySettings>
|
|
{
|
|
#region Constructor
|
|
/// <summary>
|
|
/// Initializes a new instance of the PropertyGridInfoCollection class.
|
|
/// </summary>
|
|
/// <param name="owner"></param>
|
|
public PropertySettingsCollection(AdvPropertyGrid owner)
|
|
{
|
|
_Owner = owner;
|
|
}
|
|
#endregion
|
|
|
|
#region Internal Implementation
|
|
protected override void InsertItem(int index, PropertySettings item)
|
|
{
|
|
base.InsertItem(index, item);
|
|
OnAfterItemAdded(item);
|
|
}
|
|
|
|
private void OnAfterItemAdded(PropertySettings item)
|
|
{
|
|
_Owner.PropertySettingsItemAdded(item);
|
|
}
|
|
|
|
protected override void ClearItems()
|
|
{
|
|
PropertySettings[] items = new PropertySettings[this.Count];
|
|
this.CopyTo(items, 0);
|
|
|
|
base.ClearItems();
|
|
|
|
foreach (PropertySettings item in items)
|
|
{
|
|
OnAfterItemRemoved(item);
|
|
}
|
|
}
|
|
|
|
protected override void RemoveItem(int index)
|
|
{
|
|
PropertySettings info = this[index];
|
|
base.RemoveItem(index);
|
|
OnAfterItemRemoved(info);
|
|
}
|
|
|
|
private void OnAfterItemRemoved(PropertySettings info)
|
|
{
|
|
_Owner.PropertySettingsItemRemoved(info);
|
|
}
|
|
|
|
protected override void SetItem(int index, PropertySettings item)
|
|
{
|
|
PropertySettings oldItem = this[index];
|
|
base.SetItem(index, item);
|
|
|
|
OnAfterItemRemoved(oldItem);
|
|
OnAfterItemAdded(item);
|
|
}
|
|
|
|
/// <summary>
|
|
/// Gets property info object based on property name.
|
|
/// </summary>
|
|
/// <param name="propertyName">Property name.</param>
|
|
/// <returns>PropertyGridInfo instance or null if it cannot be found.</returns>
|
|
public virtual PropertySettings this[string propertyName]
|
|
{
|
|
get
|
|
{
|
|
foreach (PropertySettings item in this)
|
|
{
|
|
if (item.PropertyName == propertyName) return item;
|
|
}
|
|
return null;
|
|
}
|
|
}
|
|
|
|
private Dictionary<PropertyDescriptor, PropertySettings> _DictionaryByDescriptor = new Dictionary<PropertyDescriptor, PropertySettings>();
|
|
/// <summary>
|
|
/// Gets property info object based on property descriptor.
|
|
/// </summary>
|
|
/// <param name="propertyDescriptor">Property descriptor.</param>
|
|
/// <returns>PropertyGridInfo instance or null if it cannot be found.</returns>
|
|
public virtual PropertySettings this[PropertyDescriptor propertyDescriptor]
|
|
{
|
|
get
|
|
{
|
|
foreach (PropertySettings item in this)
|
|
{
|
|
if (item.PropertyDescriptor.Equals(propertyDescriptor)) return item;
|
|
}
|
|
return null;
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// Returns property setting based on property descriptor or name if property descriptor is not set on property settings
|
|
/// Property descriptor takes precedence.
|
|
/// </summary>
|
|
/// <param name="propertyDescriptor">Property descriptor to look for.</param>
|
|
/// <param name="propertyName">Property Name to look for.</param>
|
|
/// <returns>Property settings instance or null</returns>
|
|
public virtual PropertySettings this[PropertyDescriptor propertyDescriptor, string propertyName]
|
|
{
|
|
get
|
|
{
|
|
PropertySettings settingByName = null;
|
|
foreach (PropertySettings item in this)
|
|
{
|
|
if (item.PropertyDescriptor != null && item.PropertyDescriptor.Equals(propertyDescriptor))
|
|
return item;
|
|
else if (item.PropertyName == propertyName)
|
|
settingByName = item;
|
|
}
|
|
return settingByName;
|
|
}
|
|
}
|
|
|
|
private AdvPropertyGrid _Owner = null;
|
|
/// <summary>
|
|
/// Gets the owner of the collection.
|
|
/// </summary>
|
|
public AdvPropertyGrid Owner
|
|
{
|
|
get { return _Owner; }
|
|
}
|
|
#endregion
|
|
}
|
|
}
|
|
#endif |