    using System;
    using System.Collections;
    using System.Diagnostics;
    using System.Drawing;

    namespace ASPNET.StarterKit.Chart
    {
        //*********************************************************************
        //
        // ChartItem Class
        //
        // This class represents a data point in a chart
        //
        //*********************************************************************

        public class ChartItem
        {
            private string _label;
            private string _description;
            private float _value;
            private Color _color;
            private float _startPos;
            private float _sweepSize;

            private ChartItem()    {}

            public ChartItem(string label, string desc, float data, float start, float sweep, Color clr)
            {
                _label = label;
                _description = desc;
                _value = data;
                _startPos = start;
                _sweepSize = sweep;
                _color = clr;
            }

            public string Label
            {
                get{ return _label; }
                set{ _label = value; }
            }

            public string Description
            {
                get{ return _description; }
                set{ _description = value; }
            }

            public float Value
            {
                get{ return _value; }
                set{ _value = value; }
            }

            public Color ItemColor
            {
                get{ return _color; }
                set{ _color = value; }
            }

            public float StartPos
            {
                get{ return _startPos; }
                set{ _startPos = value; }
            }

            public float SweepSize
            {
                get{ return _sweepSize; }
                set{ _sweepSize = value; }
            }
        }

        //*********************************************************************
        //
        // Custom Collection for ChartItems
        //
        //*********************************************************************

        public class ChartItemsCollection : CollectionBase
        {
            public ChartItem this[int index]
            {
                get{ return (ChartItem)(List[index]); }
                set{ List[index] = value; }
            }

            public int Add(ChartItem value)
            {
                return List.Add(value);
            }

            public int IndexOf(ChartItem value)
            {
                return List.IndexOf(value);
            }

            public bool Contains(ChartItem value)
            {
                return List.Contains(value);
            }

            public void Remove(ChartItem value)
            {
                List.Remove(value);
            }
        }
    }