File: Common\Converters\AnnotationConverters.cs
Project: ndp\fx\src\DataVisualization\System.Web.DataVisualization.csproj (System.Web.DataVisualization)
//-------------------------------------------------------------
// <copyright company=’Microsoft Corporation’>
//   Copyright © Microsoft Corporation. All Rights Reserved.
// </copyright>
//-------------------------------------------------------------
// @owner=alexgor, deliant
//=================================================================
//  File:		AnnotationConverters.cs
//
//  Namespace:	DataVisualization.Charting
//
//	Classes:	AnchorPointValueConverter, AnnotationAxisValueConverter
//
//  Purpose:	Annotation Converters.
//
//	Reviewed:	
//
//===================================================================
 
 
#region Used namespace
using System;
using System.Globalization;
using System.Collections;
using System.Collections.Specialized;
using System.ComponentModel;
using System.ComponentModel.Design;
using System.Data;
using System.Drawing;
using System.Drawing.Design;
using System.Drawing.Text;
using System.Drawing.Drawing2D;
#if Microsoft_CONTROL
	using System.Windows.Forms.DataVisualization.Charting;
	using System.Windows.Forms.DataVisualization.Charting.Data;
	using System.Windows.Forms.DataVisualization.Charting.ChartTypes;
	using System.Windows.Forms.DataVisualization.Charting.Utilities;
	using System.Windows.Forms.DataVisualization.Charting.Borders3D;
#else
using System.Web;
using System.Web.UI;
using System.Web.UI.DataVisualization.Charting;
using System.Web.UI.DataVisualization.Charting.Data;
using System.Web.UI.DataVisualization.Charting.Utilities;
#endif
 
#endregion
 
#if Microsoft_CONTROL
	namespace System.Windows.Forms.DataVisualization.Charting
#else
    namespace System.Web.UI.DataVisualization.Charting
#endif
{
    /// <summary>
	/// Converts anchor data point to string name.
	/// </summary>
	internal class AnchorPointValueConverter : TypeConverter
	{
		#region Converter methods
 
	/// <summary>
	/// Converts anchor data point to string name.
	/// </summary>
	/// <param name="context">Descriptor context.</param>
	/// <param name="culture">Culture information.</param>
	/// <param name="value">Value to convert.</param>
	/// <param name="destinationType">Convertion destination type.</param>
	/// <returns>Converted object.</returns>
	public override object ConvertTo(ITypeDescriptorContext context, CultureInfo culture, object value, Type destinationType) 
	{
        if (destinationType == typeof(string))
        {
            if (value == null)
            {
                return Constants.NotSetValue;
            }
            DataPoint dataPoint = value as DataPoint;
 
            if (dataPoint != null)
            {
                if (dataPoint.series != null)
                {
                    int pointIndex = dataPoint.series.Points.IndexOf(dataPoint) + 1;
                    return dataPoint.series.Name + " - " + SR.DescriptionTypePoint + pointIndex.ToString(CultureInfo.InvariantCulture);
                }
            }
        }
 
		// Call base class
		return base.ConvertTo(context, culture, value, destinationType);
	}
		#endregion
	}
 
	/// <summary>
	/// Converts anchor data point to string name.
	/// </summary>
    internal class AnnotationAxisValueConverter : TypeConverter
	{
		#region Converter methods
 
		/// <summary>
		/// Converts axis associated with anootation to string.
		/// </summary>
		/// <param name="context">Descriptor context.</param>
		/// <param name="culture">Culture information.</param>
		/// <param name="value">Value to convert.</param>
		/// <param name="destinationType">Convertion destination type.</param>
		/// <returns>Converted object.</returns>
        public override object ConvertTo(ITypeDescriptorContext context, CultureInfo culture, object value, Type destinationType)
        {
            if (destinationType == typeof(string))
            {
                if (value == null)
                {
                    return Constants.NotSetValue;
                }
 
                Axis axis = value as Axis;
                if (axis != null)
                {
                    if (axis.ChartArea != null)
                    {
                        return axis.ChartArea.Name + " - " + axis.Name;
                    }
                }
            }
 
            // Call base class
            return base.ConvertTo(context, culture, value, destinationType);
        }
		#endregion
	}
}