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);
 | |
|             }
 | |
|         }
 | |
|     }
 | |
| }
 |