File: Common\General\ChartAreaCollection.cs
Project: ndp\fx\src\DataVisualization\System.Windows.Forms.DataVisualization.csproj (System.Windows.Forms.DataVisualization)
//-------------------------------------------------------------
// <copyright company=’Microsoft Corporation’>
//   Copyright © Microsoft Corporation. All Rights Reserved.
// </copyright>
//-------------------------------------------------------------
// @owner=alexgor, deliant
//=================================================================
//  File:		ChartAreaCollection.cs
//
//  Namespace:	System.Web.UI.WebControls[Windows.Forms].Charting
//
//	Classes:	ChartAreaCollection
//
//  Purpose:	ChartAreaCollection class represents a strongly 
//              typed collection of ChartArea objects.
//
//	Reviewed:	GS - Aug 8, 2002
//				AG - Aug 8, 2002
//              AG - Microsoft 16, 2007
//
//===================================================================
 
 
#region Used namespaces
 
using System;
using System.Collections;
using System.Drawing;
using System.ComponentModel;
 
 
#endregion
 
#if Microsoft_CONTROL
	namespace System.Windows.Forms.DataVisualization.Charting
#else
namespace System.Web.UI.DataVisualization.Charting
 
#endif
{
	/// <summary>
    /// The ChartAreaCollection class represents a strongly typed collection of 
    /// ChartArea objects. Each chart area has a unique name in the collection
    /// and can be retrieved by name or by index.
	/// </summary>
#if ASPPERM_35
	[AspNetHostingPermission(System.Security.Permissions.SecurityAction.InheritanceDemand, Level = AspNetHostingPermissionLevel.Minimal)]
    [AspNetHostingPermission(System.Security.Permissions.SecurityAction.LinkDemand, Level = AspNetHostingPermissionLevel.Minimal)]
#endif
    public class ChartAreaCollection : ChartNamedElementCollection<ChartArea>
	{
 
		#region Constructors
 
        /// <summary>
        /// Initializes a new instance of the <see cref="ChartAreaCollection"/> class.
        /// </summary>
        /// <param name="chartPicture">Parent chart picture.</param>
		internal ChartAreaCollection(ChartPicture chartPicture) : base(chartPicture)
		{
		}
 
        #endregion
 
        #region Properties
        /// <summary>
        /// Gets the default chart area name.
        /// </summary>
        internal string DefaultNameReference 
        {
            get { return this.Count > 0 ? this[0].Name : String.Empty; }
        }
        #endregion
 
        #region Methods
 
        /// <summary>
        /// Creates a new ChartArea with the specified name and adds it to the collection.
        /// </summary>
        /// <param name="name">The new chart area name.</param>
        /// <returns></returns>
        public ChartArea Add(string name) 
        {
            ChartArea area = new ChartArea(name);
            this.Add(area);
            return area;
        }
 
        #endregion
 
        #region Event handlers
        /// <summary>
        /// Updates the ChartArea alignment references to another chart areas.
        /// </summary>
        /// <param name="sender">The sender.</param>
        /// <param name="e">The <see cref="Charting.NameReferenceChangedEventArgs"/> instance containing the event data.</param>
        internal void ChartAreaNameReferenceChanged(object sender, NameReferenceChangedEventArgs e)
        {
            foreach (ChartArea chartArea in this)
                if (chartArea.AlignWithChartArea == e.OldName)
                    chartArea.AlignWithChartArea = e.NewName;
        }
 
        #endregion
 
    }
}