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);
}
///
/// Gets or sets a background color or starting color for gradient background.
///
[Browsable(false), DevCoBrowsable(false), DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
public ColorExMapper BackColor1
{
get
{
return m_BackColor1;
}
}
///
/// Gets or sets a background color or ending color for gradient background.
///
[Browsable(false), DevCoBrowsable(false), DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
public ColorExMapper BackColor2
{
get
{
return m_BackColor2;
}
}
///
/// Gets or sets a text color.
///
[Browsable(false), DevCoBrowsable(false), DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
public ColorExMapper ForeColor
{
get
{
return m_ForeColor;
}
}
///
/// Gets or sets the gradient angle.
///
[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);
}
}
///
/// Gets or sets the style Font
///
[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);
}
}
///
/// Gets or sets a value that determines whether text is displayed in multiple lines or one long line.
///
[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);
}
}
///
/// Specifies alignment of the text.
///
[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);
}
}
///
/// Specifies alignment of the text.
///
[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);
}
}
///
/// Specifies how to trim characters when text does not fit.
///
[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);
}
}
///
/// Specifies background image.
///
[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);
}
}
///
/// Specifies background image position when container is larger than image.
///
[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);
}
}
///
/// Specifies the transparency of background image.
///
[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);
}
}
///
/// Gets or sets the corner type.
///
[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);
}
}
///
/// Gets or sets the diameter in pixels of the corner type rounded or diagonal.
///
[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);
}
}
///
/// Gets or sets the border type.
///
[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);
}
}
///
/// Gets or sets dash style for single line border type.
///
[Browsable(false), DevCoBrowsable(false), DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
public DashStyle BorderDashStyle
{
get { return DashStyle.Solid ; }
set
{
}
}
///
/// Gets or sets the border sides that are displayed.
///
[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);
}
}
///
/// Gets or sets the border color.
///
[Browsable(false), DevCoBrowsable(false), DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
public ColorExMapper BorderColor
{
get { return m_BorderColor; }
}
///
/// Gets or sets the line tickness of single line border.
///
[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);
}
}
///
/// Gets or sets the left text margin.
///
[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);
}
}
///
/// Gets or sets the right text margin.
///
[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);
}
}
///
/// Gets or sets the top text margin.
///
[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);
}
}
///
/// Gets or sets the bottom text margin.
///
[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);
}
}
}
///
/// ColorEx object that provides the transparency setting ability.
///
[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;
}
///
/// Gets or sets the Color object which does not include transparency.
///
[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);
}
}
///
/// Indicates the transparency for the color.
///
[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));
}
}
///
/// 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.
///
///
/// 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.
///
[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);
}
}
}
}