417 lines
		
	
	
		
			16 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
			
		
		
	
	
			417 lines
		
	
	
		
			16 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
using System;
 | 
						|
using System.Text;
 | 
						|
using System.ComponentModel;
 | 
						|
using System.Drawing;
 | 
						|
using System.Drawing.Drawing2D;
 | 
						|
 | 
						|
namespace DevComponents.DotNetBar
 | 
						|
{
 | 
						|
    [ToolboxItem(false)]
 | 
						|
    public class ItemStyleMapper
 | 
						|
    {
 | 
						|
        private ElementStyle m_ElementStyle=null;
 | 
						|
 | 
						|
        private ColorExMapper m_BackColor1=null;
 | 
						|
        private ColorExMapper m_BackColor2=null;
 | 
						|
        private ColorExMapper m_ForeColor=null;
 | 
						|
        private ColorExMapper m_BorderColor=null;
 | 
						|
 | 
						|
        public ItemStyleMapper(ElementStyle style)
 | 
						|
        {
 | 
						|
            m_ElementStyle=style;
 | 
						|
            m_BackColor1=new ColorExMapper("BackColor",style);
 | 
						|
            m_BackColor2=new ColorExMapper("BackColor2",style);
 | 
						|
            m_ForeColor=new ColorExMapper("TextColor",style);
 | 
						|
            m_BorderColor=new ColorExMapper("BorderColor",style);
 | 
						|
        }
 | 
						|
 | 
						|
        /// <summary>
 | 
						|
        /// Gets or sets a background color or starting color for gradient background.
 | 
						|
        /// </summary>
 | 
						|
        [Browsable(false), DevCoBrowsable(false), DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
 | 
						|
        public ColorExMapper BackColor1
 | 
						|
        {
 | 
						|
            get
 | 
						|
            {
 | 
						|
                return m_BackColor1;
 | 
						|
            }
 | 
						|
        }
 | 
						|
        /// <summary>
 | 
						|
        /// Gets or sets a background color or ending color for gradient background.
 | 
						|
        /// </summary>
 | 
						|
        [Browsable(false), DevCoBrowsable(false), DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
 | 
						|
        public ColorExMapper BackColor2
 | 
						|
        {
 | 
						|
            get
 | 
						|
            {
 | 
						|
                return m_BackColor2;
 | 
						|
            }
 | 
						|
        }
 | 
						|
 | 
						|
        /// <summary>
 | 
						|
        /// Gets or sets a text color.
 | 
						|
        /// </summary>
 | 
						|
        [Browsable(false), DevCoBrowsable(false), DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
 | 
						|
        public ColorExMapper ForeColor
 | 
						|
        {
 | 
						|
            get
 | 
						|
            {
 | 
						|
                return m_ForeColor;
 | 
						|
            }
 | 
						|
        }
 | 
						|
 | 
						|
        /// <summary>
 | 
						|
        /// Gets or sets the gradient angle.
 | 
						|
        /// </summary>
 | 
						|
        [Browsable(false), DevCoBrowsable(false), DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
 | 
						|
        public int GradientAngle
 | 
						|
        {
 | 
						|
            get
 | 
						|
            {
 | 
						|
                return m_ElementStyle.BackColorGradientAngle;
 | 
						|
            }
 | 
						|
            set
 | 
						|
            {
 | 
						|
                TypeDescriptor.GetProperties(m_ElementStyle)["BackColorGradientAngle"].SetValue(m_ElementStyle,value);
 | 
						|
            }
 | 
						|
        }
 | 
						|
 | 
						|
        /// <summary>
 | 
						|
        /// Gets or sets the style Font
 | 
						|
        /// </summary>
 | 
						|
        [Browsable(false), DevCoBrowsable(false), DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
 | 
						|
        public System.Drawing.Font Font
 | 
						|
        {
 | 
						|
            get
 | 
						|
            {
 | 
						|
                return m_ElementStyle.Font;
 | 
						|
            }
 | 
						|
            set
 | 
						|
            {
 | 
						|
                TypeDescriptor.GetProperties(m_ElementStyle)["Font"].SetValue(m_ElementStyle,value);
 | 
						|
            }
 | 
						|
        }
 | 
						|
 | 
						|
        /// <summary>
 | 
						|
        /// Gets or sets a value that determines whether text is displayed in multiple lines or one long line.
 | 
						|
        /// </summary>
 | 
						|
        [Browsable(false), DevCoBrowsable(false), DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
 | 
						|
        public bool WordWrap
 | 
						|
        {
 | 
						|
            get { return m_ElementStyle.WordWrap; }
 | 
						|
            set
 | 
						|
            {
 | 
						|
                TypeDescriptor.GetProperties(m_ElementStyle)["WordWrap"].SetValue(m_ElementStyle,value);
 | 
						|
            }
 | 
						|
        }
 | 
						|
 | 
						|
        /// <summary>
 | 
						|
        /// Specifies alignment of the text.
 | 
						|
        /// </summary>
 | 
						|
        [Browsable(false), DevCoBrowsable(false), DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
 | 
						|
        public StringAlignment Alignment
 | 
						|
        {
 | 
						|
            get { return (StringAlignment)m_ElementStyle.TextAlignment; }
 | 
						|
            set
 | 
						|
            {
 | 
						|
                TypeDescriptor.GetProperties(m_ElementStyle)["TextAlignment"].SetValue(m_ElementStyle,(eStyleTextAlignment)value);
 | 
						|
            }
 | 
						|
        }
 | 
						|
 | 
						|
        /// <summary>
 | 
						|
        /// Specifies alignment of the text.
 | 
						|
        /// </summary>
 | 
						|
        [Browsable(false), DevCoBrowsable(false), DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
 | 
						|
        public StringAlignment LineAlignment
 | 
						|
        {
 | 
						|
            get { return (StringAlignment)m_ElementStyle.TextLineAlignment; }
 | 
						|
            set
 | 
						|
            {
 | 
						|
                TypeDescriptor.GetProperties(m_ElementStyle)["TextLineAlignment"].SetValue(m_ElementStyle,(eStyleTextAlignment)value);
 | 
						|
            }
 | 
						|
        }
 | 
						|
 | 
						|
        /// <summary>
 | 
						|
        /// Specifies how to trim characters when text does not fit.
 | 
						|
        /// </summary>
 | 
						|
        [Browsable(false), DevCoBrowsable(false), DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
 | 
						|
        public StringTrimming TextTrimming
 | 
						|
        {
 | 
						|
            get { return (StringTrimming)m_ElementStyle.TextTrimming; }
 | 
						|
            set
 | 
						|
            {
 | 
						|
                TypeDescriptor.GetProperties(m_ElementStyle)["TextTrimming"].SetValue(m_ElementStyle,(eStyleTextTrimming)value);
 | 
						|
            }
 | 
						|
        }
 | 
						|
 | 
						|
        /// <summary>
 | 
						|
        /// Specifies background image.
 | 
						|
        /// </summary>
 | 
						|
        [Browsable(false), DevCoBrowsable(false), DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
 | 
						|
        public Image BackgroundImage
 | 
						|
        {
 | 
						|
            get { return m_ElementStyle.BackgroundImage; }
 | 
						|
            set
 | 
						|
            {
 | 
						|
                TypeDescriptor.GetProperties(m_ElementStyle)["BackgroundImage"].SetValue(m_ElementStyle,value);
 | 
						|
            }
 | 
						|
        }
 | 
						|
 | 
						|
        /// <summary>
 | 
						|
        /// Specifies background image position when container is larger than image.
 | 
						|
        /// </summary>
 | 
						|
        [Browsable(false), DevCoBrowsable(false), DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
 | 
						|
        public eBackgroundImagePosition BackgroundImagePosition
 | 
						|
        {
 | 
						|
            get { return (eBackgroundImagePosition)m_ElementStyle.BackgroundImagePosition; }
 | 
						|
            set
 | 
						|
            {
 | 
						|
                TypeDescriptor.GetProperties(m_ElementStyle)["BackgroundImagePosition"].SetValue(m_ElementStyle,(eStyleBackgroundImage)value);
 | 
						|
            }
 | 
						|
        }
 | 
						|
 | 
						|
        /// <summary>
 | 
						|
        /// Specifies the transparency of background image.
 | 
						|
        /// </summary>
 | 
						|
        [Browsable(false), DevCoBrowsable(false), DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
 | 
						|
        public byte BackgroundImageAlpha
 | 
						|
        {
 | 
						|
            get { return m_ElementStyle.BackgroundImageAlpha; }
 | 
						|
            set
 | 
						|
            {
 | 
						|
                TypeDescriptor.GetProperties(m_ElementStyle)["BackgroundImageAlpha"].SetValue(m_ElementStyle,value);
 | 
						|
            }
 | 
						|
        }
 | 
						|
 | 
						|
        /// <summary>
 | 
						|
        /// Gets or sets the corner type.
 | 
						|
        /// </summary>
 | 
						|
        [Browsable(false), DevCoBrowsable(false), DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
 | 
						|
        public eCornerType CornerType
 | 
						|
        {
 | 
						|
            get { return m_ElementStyle.CornerType; }
 | 
						|
            set
 | 
						|
            {
 | 
						|
                TypeDescriptor.GetProperties(m_ElementStyle)["CornerType"].SetValue(m_ElementStyle,value);
 | 
						|
            }
 | 
						|
        }
 | 
						|
 | 
						|
        /// <summary>
 | 
						|
        /// Gets or sets the diameter in pixels of the corner type rounded or diagonal.
 | 
						|
        /// </summary>
 | 
						|
        [Browsable(false), DevCoBrowsable(false), DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
 | 
						|
        public int CornerDiameter
 | 
						|
        {
 | 
						|
            get { return m_ElementStyle.CornerDiameter; }
 | 
						|
            set
 | 
						|
            {
 | 
						|
                TypeDescriptor.GetProperties(m_ElementStyle)["CornerDiameter"].SetValue(m_ElementStyle,value);
 | 
						|
            }
 | 
						|
        }
 | 
						|
 | 
						|
        /// <summary>
 | 
						|
        /// Gets or sets the border type.
 | 
						|
        /// </summary>
 | 
						|
        [Browsable(false), DevCoBrowsable(false), DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
 | 
						|
        public eBorderType Border
 | 
						|
        {
 | 
						|
            get { return eBorderType.None; }
 | 
						|
            set
 | 
						|
            {
 | 
						|
                eStyleBorderType b=eStyleBorderType.None;
 | 
						|
                if(value!=eBorderType.None)
 | 
						|
                    b=eStyleBorderType.Solid;
 | 
						|
                TypeDescriptor.GetProperties(m_ElementStyle)["BorderLeft"].SetValue(m_ElementStyle,b);
 | 
						|
                TypeDescriptor.GetProperties(m_ElementStyle)["BorderTop"].SetValue(m_ElementStyle,b);
 | 
						|
                TypeDescriptor.GetProperties(m_ElementStyle)["BorderRight"].SetValue(m_ElementStyle,b);
 | 
						|
                TypeDescriptor.GetProperties(m_ElementStyle)["BorderBottom"].SetValue(m_ElementStyle,b);
 | 
						|
            }
 | 
						|
        }
 | 
						|
 | 
						|
        /// <summary>
 | 
						|
        /// Gets or sets dash style for single line border type.
 | 
						|
        /// </summary>
 | 
						|
        [Browsable(false), DevCoBrowsable(false), DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
 | 
						|
        public DashStyle BorderDashStyle
 | 
						|
        {
 | 
						|
            get { return DashStyle.Solid ; }
 | 
						|
            set
 | 
						|
            {
 | 
						|
            }
 | 
						|
        }
 | 
						|
 | 
						|
        /// <summary>
 | 
						|
        /// Gets or sets the border sides that are displayed.
 | 
						|
        /// </summary>
 | 
						|
        [Browsable(false), DevCoBrowsable(false), DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
 | 
						|
        public eBorderSide BorderSide
 | 
						|
        {
 | 
						|
            get { return eBorderSide.None; }
 | 
						|
            set
 | 
						|
            {
 | 
						|
                if((value & eBorderSide.Left)==eBorderSide.Left)
 | 
						|
                    TypeDescriptor.GetProperties(m_ElementStyle)["BorderLeft"].SetValue(m_ElementStyle,eStyleBorderType.Solid);
 | 
						|
                else
 | 
						|
                    TypeDescriptor.GetProperties(m_ElementStyle)["BorderLeft"].SetValue(m_ElementStyle,eStyleBorderType.None);
 | 
						|
 | 
						|
                if((value & eBorderSide.Right)==eBorderSide.Right)
 | 
						|
                    TypeDescriptor.GetProperties(m_ElementStyle)["BorderRight"].SetValue(m_ElementStyle,eStyleBorderType.Solid);
 | 
						|
                else
 | 
						|
                    TypeDescriptor.GetProperties(m_ElementStyle)["BorderRight"].SetValue(m_ElementStyle,eStyleBorderType.None);
 | 
						|
 | 
						|
                if((value & eBorderSide.Top)==eBorderSide.Top)
 | 
						|
                    TypeDescriptor.GetProperties(m_ElementStyle)["BorderTop"].SetValue(m_ElementStyle,eStyleBorderType.Solid);
 | 
						|
                else
 | 
						|
                    TypeDescriptor.GetProperties(m_ElementStyle)["BorderTop"].SetValue(m_ElementStyle,eStyleBorderType.None);
 | 
						|
 | 
						|
                if((value & eBorderSide.Bottom)==eBorderSide.Bottom)
 | 
						|
                    TypeDescriptor.GetProperties(m_ElementStyle)["BorderBottom"].SetValue(m_ElementStyle,eStyleBorderType.Solid);
 | 
						|
                else
 | 
						|
                    TypeDescriptor.GetProperties(m_ElementStyle)["BorderBottom"].SetValue(m_ElementStyle,eStyleBorderType.None);
 | 
						|
 | 
						|
            }
 | 
						|
        }
 | 
						|
 | 
						|
        /// <summary>
 | 
						|
        /// Gets or sets the border color.
 | 
						|
        /// </summary>
 | 
						|
        [Browsable(false), DevCoBrowsable(false), DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
 | 
						|
        public ColorExMapper BorderColor
 | 
						|
        {
 | 
						|
            get { return m_BorderColor; }
 | 
						|
        }
 | 
						|
 | 
						|
        
 | 
						|
 | 
						|
        /// <summary>
 | 
						|
        /// Gets or sets the line tickness of single line border.
 | 
						|
        /// </summary>
 | 
						|
        [Browsable(false), DevCoBrowsable(false), DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
 | 
						|
        public int BorderWidth
 | 
						|
        {
 | 
						|
            get { return m_ElementStyle.BorderLeftWidth; }
 | 
						|
            set
 | 
						|
            {
 | 
						|
                TypeDescriptor.GetProperties(m_ElementStyle)["BorderLeftWidth"].SetValue(m_ElementStyle,value);
 | 
						|
                TypeDescriptor.GetProperties(m_ElementStyle)["BorderTopWidth"].SetValue(m_ElementStyle,value);
 | 
						|
                TypeDescriptor.GetProperties(m_ElementStyle)["BorderRightWidth"].SetValue(m_ElementStyle,value);
 | 
						|
                TypeDescriptor.GetProperties(m_ElementStyle)["BorderBottomWidth"].SetValue(m_ElementStyle,value);
 | 
						|
            }
 | 
						|
        }
 | 
						|
 | 
						|
        /// <summary>
 | 
						|
        /// Gets or sets the left text margin.
 | 
						|
        /// </summary>
 | 
						|
        [Browsable(false), DevCoBrowsable(false), DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
 | 
						|
        public int MarginLeft
 | 
						|
        {
 | 
						|
            get { return m_ElementStyle.MarginLeft; }
 | 
						|
            set
 | 
						|
            {
 | 
						|
                TypeDescriptor.GetProperties(m_ElementStyle)["MarginLeft"].SetValue(m_ElementStyle,value);
 | 
						|
            }
 | 
						|
        }
 | 
						|
 | 
						|
        /// <summary>
 | 
						|
        /// Gets or sets the right text margin.
 | 
						|
        /// </summary>
 | 
						|
        [Browsable(false), DevCoBrowsable(false), DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
 | 
						|
        public int MarginRight
 | 
						|
        {
 | 
						|
            get { return m_ElementStyle.MarginRight; }
 | 
						|
            set
 | 
						|
            {
 | 
						|
                TypeDescriptor.GetProperties(m_ElementStyle)["MarginRight"].SetValue(m_ElementStyle,value);
 | 
						|
            }
 | 
						|
        }
 | 
						|
 | 
						|
        /// <summary>
 | 
						|
        /// Gets or sets the top text margin.
 | 
						|
        /// </summary>
 | 
						|
        [Browsable(false), DevCoBrowsable(false), DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
 | 
						|
        public int MarginTop
 | 
						|
        {
 | 
						|
            get { return m_ElementStyle.MarginTop; }
 | 
						|
            set
 | 
						|
            {
 | 
						|
                TypeDescriptor.GetProperties(m_ElementStyle)["MarginTop"].SetValue(m_ElementStyle,value);
 | 
						|
            }
 | 
						|
        }
 | 
						|
 | 
						|
        /// <summary>
 | 
						|
        /// Gets or sets the bottom text margin.
 | 
						|
        /// </summary>
 | 
						|
        [Browsable(false), DevCoBrowsable(false), DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
 | 
						|
        public int MarginBottom
 | 
						|
        {
 | 
						|
            get { return m_ElementStyle.MarginBottom; }
 | 
						|
            set
 | 
						|
            {
 | 
						|
                TypeDescriptor.GetProperties(m_ElementStyle)["MarginBottom"].SetValue(m_ElementStyle,value);
 | 
						|
            }
 | 
						|
        }
 | 
						|
 | 
						|
    }
 | 
						|
 | 
						|
    /// <summary>
 | 
						|
    /// ColorEx object that provides the transparency setting ability.
 | 
						|
    /// </summary>
 | 
						|
    [ToolboxItem(false)]
 | 
						|
    public class ColorExMapper
 | 
						|
    {
 | 
						|
        private ElementStyle m_ElementStyle=null;
 | 
						|
        private string m_ColorProperty="";
 | 
						|
        public ColorExMapper(string colorProperty, ElementStyle style)
 | 
						|
        {
 | 
						|
            m_ColorProperty=colorProperty;
 | 
						|
            m_ElementStyle=style;
 | 
						|
        }
 | 
						|
 | 
						|
        /// <summary>
 | 
						|
        /// Gets or sets the Color object which does not include transparency.
 | 
						|
        /// </summary>
 | 
						|
        [Browsable(false), DevCoBrowsable(false), DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
 | 
						|
        public System.Drawing.Color Color
 | 
						|
        {
 | 
						|
            get { return (Color)TypeDescriptor.GetProperties(m_ElementStyle)[m_ColorProperty].GetValue(m_ElementStyle); }
 | 
						|
            set
 | 
						|
            {
 | 
						|
                TypeDescriptor.GetProperties(m_ElementStyle)[m_ColorProperty].SetValue(m_ElementStyle, value);
 | 
						|
            }
 | 
						|
        }
 | 
						|
        
 | 
						|
        /// <summary>
 | 
						|
        /// Indicates the transparency for the color.
 | 
						|
        /// </summary>
 | 
						|
        [Browsable(false), DevCoBrowsable(false), DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
 | 
						|
        public byte Alpha
 | 
						|
        {
 | 
						|
            get { return ((Color)TypeDescriptor.GetProperties(m_ElementStyle)[m_ColorProperty].GetValue(m_ElementStyle)).A; }
 | 
						|
            set
 | 
						|
            {
 | 
						|
                TypeDescriptor.GetProperties(m_ElementStyle)[m_ColorProperty].SetValue(m_ElementStyle, Color.FromArgb(value,this.Color));
 | 
						|
            }
 | 
						|
        }
 | 
						|
 | 
						|
        /// <summary>
 | 
						|
        ///     Specifies that color derived from system colors which is part of DotNetBar Color Scheme object is used.
 | 
						|
        ///     Colors derived from system colors are automatically refreshed when
 | 
						|
        ///     system colors are changed.
 | 
						|
        /// </summary>
 | 
						|
        /// <remarks>
 | 
						|
        ///     We recommend using this property to specify color rather than setting color directly.
 | 
						|
        ///     Using colors that are derived from system colors improves uniform look of your application
 | 
						|
        ///     and visual integration into user environment.
 | 
						|
        /// </remarks>
 | 
						|
        [Browsable(false), DevCoBrowsable(false), DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
 | 
						|
        public eColorSchemePart ColorSchemePart
 | 
						|
        {
 | 
						|
            get { return (eColorSchemePart)TypeDescriptor.GetProperties(m_ElementStyle)[m_ColorProperty+"SchemePart"].GetValue(m_ElementStyle); }
 | 
						|
            set
 | 
						|
            {
 | 
						|
                TypeDescriptor.GetProperties(m_ElementStyle)[m_ColorProperty + "SchemePart"].SetValue(m_ElementStyle, value);
 | 
						|
            }
 | 
						|
        }
 | 
						|
    }
 | 
						|
}
 |