//using System;
//using System.Collections.Generic;
//using System.Text;
//using System.Drawing;
//using System.ComponentModel;
//using Telerik.WinControls;
//using Telerik.WinControls.Design;
//using Telerik.WinControls.Primitives;
//using Telerik.WinControls.UI;

//namespace Telerik.QuickStart.WinControls
//{
//    /// <summary>
//    /// represent the RadCarouselItem
//    /// </summary>
//    [RadToolboxItem(false)]
//    public class RadCarouselItem : RadItem, IDisposable
//    {
//        //members
//        private string description = string.Empty;
//        private string title = string.Empty;
//        private string treenodeText = string.Empty;

//        private float reflectionPercentage = 0.2f;

//        public ReflectionPrimitive reflectionPrimitive;        

//        private RadButtonElement hostedItem = new RadButtonElement();
 
//        public RadCarouselItem() : base()
//        {
//            this.StretchHorizontally = false;
//            this.StretchVertically = false;
//        }

//        public RadCarouselItem( string Desription ) : base()
//        {
//            this.Description = Description;
//        }

//        public RadCarouselItem( string Desription, string Title )
//            : base()
//        {
//            this.Description = Description;
//            this.Title = Title;
//        }

//        /// <summary>
//        /// Get ot set the TreeNodeText
//        /// </summary>
//        [DefaultValue("")]
//        public string TreeNodeText
//        {
//            get { return treenodeText; }
//            set { treenodeText = value; }
//        }

//        [DefaultValue( "" )]
//        //Get or set text description
//        public string Description
//        {
//            get{ return this.description; }
//            set{ this.description = value; }
//        }

//        [DefaultValue( "" )]
//        //Get or set item title
//        public string Title
//        {
//            get{ return this.title; }
//            set{ this.title = value; }
//        }

//        /// <summary>
//        /// Represent the HostedItem
//        /// </summary>
//        public RadElement HostedItem
//        {
//            get
//            {
//                return this.hostedItem;
//            }
//            //set
//            //{
//            //    if (value == null)
//            //        throw new ArgumentException("HostedItem cannot be null!");

//            //    if (this.hostedItem != value)
//            //    {
//            //        if (this.hostedItem != null &&
//            //            this.ChildElementsCreated)
//            //        {
//            //            this.Children.Remove(this.hostedItem);
//            //        }

//            //        this.hostedItem = value;

//            //        if (this.ChildElementsCreated)
//            //        {
//            //            this.Children.Add(this.hostedItem);
//            //            this.reflectionPrimitive.OwnerElement = this.hostedItem;
//            //        }
//            //    }
//            //}
//        }

//        ///// <summary>
//        ///// Gets the owner RadCarouselElement.
//        ///// </summary>
//        ///// <value>The owner.</value>
//        //public RadCarouselElement Owner
//        //{
//        //    get { return this.owner; }
//        //}

//        public Point Center
//        {
//            get 
//            { 
//                return this.HostedItem != null ?
//                    new Point(this.HostedItem.BoundingRectangle.Width / 2, this.HostedItem.BoundingRectangle.Height / 2) :
//                    new Point(this.Size.Width / 2, this.Size.Height / 2);
//            }
//        }

//        //internal void SetOwner(RadCarouselElement owner)
//        //{
//        //    this.owner = owner;
//        //}

//        protected override void CreateChildElements()
//        {
//            base.CreateChildElements();

//            this.reflectionPrimitive = new ReflectionPrimitive(this.HostedItem);
//            this.reflectionPrimitive.ItemReflectionPercentage = this.ReflectionPercentage;
//            this.Children.Add(this.HostedItem);
//            this.Children.Add(this.reflectionPrimitive);
//        }

//        protected override SizeF MeasureOverride(SizeF availableSize)
//        {
//            SizeF hostedItemSize = new SizeF(availableSize.Width, availableSize.Height - availableSize.Height * reflectionPercentage);
//            this.HostedItem.Measure(hostedItemSize);

//            SizeF desiredSize = this.HostedItem.DesiredSize;

//            SizeF reflectionSize = new SizeF(desiredSize.Width, desiredSize.Height * reflectionPercentage);
//            this.reflectionPrimitive.Measure(reflectionSize);

//            desiredSize.Height += reflectionSize.Height;

//            return desiredSize;
//        }

//        protected override SizeF ArrangeOverride(SizeF finalSize)
//        {
//            SizeF hostedItemSize = new SizeF(finalSize.Width, finalSize.Height - finalSize.Height * reflectionPercentage);

//            this.HostedItem.Arrange(new RectangleF(0, 0, finalSize.Width, hostedItemSize.Height));
//            this.reflectionPrimitive.Arrange(new RectangleF(0, hostedItemSize.Height + 1, hostedItemSize.Width, hostedItemSize.Height * reflectionPercentage));

//            return finalSize;
//        }

//        /// <summary>
//        /// Custom implementation for RadCarouselItem
//        /// </summary>
//        /// <param name="obj"></param>
//        /// <returns></returns>
//        public override bool Equals(object obj)
//        {
//            return base.Equals(obj) || (obj != null && object.Equals(hostedItem, obj));
//        }


//        /// <summary>
//        /// unsubscribe ElementInvalidated event
//        /// </summary>
//        public void Dispose()
//        {
//            if (this.ElementTree.Control != null)
//            {
//                ((RadControl)this.ElementTree.Control).ElementInvalidated -=
//                    new EventHandler(this.reflectionPrimitive.CarouselContentItem_ElementInvalidated);
//            }
//        }

//        public RadElement ButtonFillElement
//        {
//            get { return this.hostedItem.ButtonFillElement; }
//        }

//        public bool ShowBorder
//        {
//            get { return this.hostedItem.ShowBorder; }
//            set { this.hostedItem.ShowBorder = value; }
//        }
    
//        public Image Image
//        {
//            get { return this.hostedItem.Image;  }
//            set { this.hostedItem.Image = value; }
//        }

//        public DisplayStyle DisplayStyle
//        {
//            get { return this.hostedItem.DisplayStyle; }
//            set { this.hostedItem.DisplayStyle = value; }
//        }

//        public float ReflectionPercentage
//        {
//            get { return reflectionPercentage; }
//            set { reflectionPercentage = value; }
//        }
//    }
//}
