728 lines
		
	
	
		
			27 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
			
		
		
	
	
			728 lines
		
	
	
		
			27 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
| using System;
 | |
| using System.Collections.Generic;
 | |
| using System.ComponentModel;
 | |
| using System.Drawing;
 | |
| using System.Text;
 | |
| using System.Windows.Forms;
 | |
| 
 | |
| namespace DevComponents.DotNetBar
 | |
| {
 | |
|     /// <summary>
 | |
|     /// Represents the ListBoxAdv item for internal use. Not for public usage.
 | |
|     /// </summary>
 | |
|     public class ListBoxItem : BaseItem
 | |
|     {
 | |
|         #region Constructor
 | |
| 
 | |
|         #endregion
 | |
| 
 | |
|         #region Implementation
 | |
|         /// <summary>
 | |
|         /// Returns copy of the item.
 | |
|         /// </summary>
 | |
|         public override BaseItem Copy()
 | |
|         {
 | |
|             ListBoxItem copy = new ListBoxItem();
 | |
|             this.CopyToItem(copy);
 | |
|             return copy;
 | |
|         }
 | |
| 
 | |
|         /// <summary>
 | |
|         /// Copies the ListBoxItem specific properties to new instance of the item.
 | |
|         /// </summary>
 | |
|         /// <param name="copy">New ListBoxItem instance.</param>
 | |
|         internal void InternalCopyToItem(ListBoxItem copy)
 | |
|         {
 | |
|             CopyToItem(copy);
 | |
|         }
 | |
| 
 | |
|         /// <summary>
 | |
|         /// Copies the ListBoxItem specific properties to new instance of the item.
 | |
|         /// </summary>
 | |
|         /// <param name="copy">New item instance.</param>
 | |
|         protected override void CopyToItem(BaseItem copy)
 | |
|         {
 | |
|             base.CopyToItem(copy);
 | |
| 
 | |
|             ListBoxItem item = copy as ListBoxItem;
 | |
|             item.IsSelected = _IsSelected;
 | |
|             item.Symbol = _Symbol;
 | |
|             item.SymbolSet = _SymbolSet;
 | |
|             item.SymbolColor = _SymbolColor;
 | |
|             item.SymbolSize = _SymbolSize;
 | |
|         }
 | |
| 
 | |
|         public override void Paint(ItemPaintArgs p)
 | |
|         {
 | |
|             Rendering.BaseRenderer renderer = p.Renderer;
 | |
|             if (renderer != null)
 | |
|             {
 | |
|                 ListBoxItemRendererEventArgs e = new ListBoxItemRendererEventArgs(this, p.Graphics);
 | |
|                 e.ItemPaintArgs = p;
 | |
|                 renderer.DrawListBoxItem(e);
 | |
|             }
 | |
|             else
 | |
|             {
 | |
|                 Rendering.ListBoxItemPainter painter = PainterFactory.CreateListBoxItemPainter(this);
 | |
|                 if (painter != null)
 | |
|                 {
 | |
|                     ListBoxItemRendererEventArgs e = new ListBoxItemRendererEventArgs(this, p.Graphics);
 | |
|                     e.ItemPaintArgs = p;
 | |
|                     painter.Paint(e);
 | |
|                 }
 | |
|             }
 | |
| 
 | |
|             if (this.DesignMode && this.Focused)
 | |
|             {
 | |
|                 Rectangle r = m_Rect;
 | |
|                 r.Inflate(-1, -1);
 | |
|                 DesignTime.DrawDesignTimeSelection(p.Graphics, r, p.Colors.ItemDesignTimeBorder);
 | |
|             }
 | |
|             else if (this.Focused)
 | |
|             {
 | |
|                 Rectangle r = m_Rect;
 | |
|                 r.Inflate(-1, -1);
 | |
|                 Color c = SystemColors.Control;
 | |
|                 if (renderer is Rendering.Office2007Renderer) c = ((Rendering.Office2007Renderer)renderer).ColorTable.ListBoxItem.Default.TextColor;
 | |
|                 using (Pen pen = new Pen(c, 1))
 | |
|                 {
 | |
|                     pen.DashStyle = System.Drawing.Drawing2D.DashStyle.Dot;
 | |
|                     System.Drawing.Drawing2D.SmoothingMode sm = p.Graphics.SmoothingMode;
 | |
|                     p.Graphics.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.None;
 | |
|                     p.Graphics.DrawRectangle(pen, r);
 | |
|                     p.Graphics.SmoothingMode = sm;
 | |
|                 }
 | |
|             }
 | |
| 
 | |
|             this.DrawInsertMarker(p.Graphics);
 | |
| 
 | |
|         }
 | |
| 
 | |
|         private CheckState _CheckState = CheckState.Unchecked;
 | |
|         private bool _HotTracking;
 | |
|         private Size _CheckBoxSize = new Size(13, 13);
 | |
|         private const int DefaultPadding = 2;
 | |
|         private Padding _Padding = new Padding(DefaultPadding);
 | |
|         internal const int ImageTextSpacing = 4;
 | |
|         internal const int CheckBoxTextSpacing = 6;
 | |
|         public override void RecalcSize()
 | |
|         {
 | |
|             ListBoxAdv cont = this.ContainerControl as ListBoxAdv;
 | |
|             if (cont == null || cont.Disposing || cont.IsDisposed) return;
 | |
| 
 | |
|             bool checkBox = cont.CheckBoxesVisible;
 | |
|             int itemHeight = Dpi.Height(cont.ItemHeight);
 | |
|             Size size = Size.Empty;
 | |
| 
 | |
|             Graphics g = BarFunctions.CreateGraphics(cont);
 | |
|             if (g == null) return;
 | |
| 
 | |
|             try
 | |
|             {
 | |
|                 if (!string.IsNullOrEmpty(_Symbol))
 | |
|                 {
 | |
|                     _ActualSymbolSize = GetSymbolSize(g);
 | |
|                     size = _ActualSymbolSize;
 | |
|                 }
 | |
|                 else if (_Image != null)
 | |
|                 {
 | |
|                     size = Dpi.ImageSize(_Image.Size);
 | |
|                 }
 | |
|                 if (!string.IsNullOrEmpty(this.Text))
 | |
|                 {
 | |
|                     Size textSize = ButtonItemLayout.MeasureItemText(this, g, 0, cont.Font, eTextFormat.Default, cont.RightToLeft == RightToLeft.Yes);
 | |
|                     size.Width += textSize.Width;
 | |
|                     size.Height = Math.Max(size.Height, textSize.Height);
 | |
|                     if (_Image != null || !string.IsNullOrEmpty(_Symbol))
 | |
|                         size.Width += Dpi.Width(ImageTextSpacing);
 | |
|                 }
 | |
|                 else if (string.IsNullOrEmpty(_Symbol) && _Image == null)
 | |
|                     size = new System.Drawing.Size(Dpi.Width16, Dpi.Height16);
 | |
| 
 | |
|                 size.Width += _Padding.Horizontal;
 | |
|                 size.Height += _Padding.Vertical;
 | |
| 
 | |
|                 base.RecalcSize();
 | |
|             }
 | |
|             finally
 | |
|             {
 | |
|                 g.Dispose();
 | |
|             }
 | |
| 
 | |
|             if (checkBox)
 | |
|             {
 | |
|                 size.Width += Dpi.Width(_CheckBoxSize.Width + CheckBoxTextSpacing);
 | |
|                 size.Height = Math.Max(Dpi.Height(_CheckBoxSize.Height), size.Height);
 | |
|             }
 | |
| 
 | |
|             if (itemHeight > 0) size.Height = itemHeight;
 | |
| 
 | |
|             _CheckBoxBounds = Rectangle.Empty;
 | |
|             m_Rect.Size = size;
 | |
| 
 | |
|             base.RecalcSize();
 | |
|         }
 | |
| 
 | |
|         private Rectangle _CheckBoxBounds = Rectangle.Empty;
 | |
|         internal Rectangle CheckBoxBounds
 | |
|         {
 | |
|             get
 | |
|             {
 | |
|                 return _CheckBoxBounds;
 | |
|             }
 | |
|             set
 | |
|             {
 | |
|                 _CheckBoxBounds = value;
 | |
|             }
 | |
|         }
 | |
| 
 | |
|         public override void InternalMouseEnter()
 | |
|         {
 | |
|             base.InternalMouseEnter();
 | |
|             if (!this.DesignMode)
 | |
|             {
 | |
|                 _MouseOver = true;
 | |
|                 if (this.GetEnabled() && _HotTracking)
 | |
|                     this.Refresh();
 | |
|             }
 | |
|         }
 | |
| 
 | |
|         public override void InternalMouseLeave()
 | |
|         {
 | |
|             base.InternalMouseLeave();
 | |
|             if (!this.DesignMode)
 | |
|             {
 | |
|                 _MouseOver = false;
 | |
|                 CheckBoxMouseState = eMouseState.None;
 | |
|                 if (this.GetEnabled() && _HotTracking)
 | |
|                     this.Refresh();
 | |
|             }
 | |
|         }
 | |
| 
 | |
|         public override void InternalMouseMove(MouseEventArgs objArg)
 | |
|         {
 | |
|             if (_CheckBoxBounds.Contains(objArg.Location))
 | |
|                 CheckBoxMouseState = eMouseState.Hot;
 | |
|             else
 | |
|                 CheckBoxMouseState = eMouseState.None;
 | |
|             base.InternalMouseMove(objArg);
 | |
|         }
 | |
| 
 | |
|         public override void InternalMouseDown(MouseEventArgs objArg)
 | |
|         {
 | |
|             if (objArg.Button == MouseButtons.Left && !_CheckBoxBounds.IsEmpty && _CheckBoxBounds.Contains(objArg.Location))
 | |
|                 CheckBoxMouseState = eMouseState.Down;
 | |
|             base.InternalMouseDown(objArg);
 | |
|         }
 | |
| 
 | |
|         public override void InternalMouseUp(MouseEventArgs objArg)
 | |
|         {
 | |
|             if (objArg.Button == MouseButtons.Left && !_CheckBoxBounds.IsEmpty && _CheckBoxBounds.Contains(objArg.Location))
 | |
|             {
 | |
|                 this.CheckState = this.CheckState == System.Windows.Forms.CheckState.Checked ? System.Windows.Forms.CheckState.Unchecked : System.Windows.Forms.CheckState.Checked;
 | |
|                 CheckBoxMouseState = eMouseState.Hot;
 | |
|             }
 | |
|             else if (objArg.Button == MouseButtons.Left)
 | |
|             {
 | |
|                 if (this.Bounds.Contains(objArg.Location))
 | |
|                 {
 | |
|                     ListBoxAdv listBox = this.ContainerControl as ListBoxAdv;
 | |
|                     if (listBox != null)
 | |
|                     {
 | |
|                         if (listBox.SelectionMode != eSelectionMode.None)
 | |
|                         {
 | |
|                             if (listBox.SelectionMode == eSelectionMode.MultiSimple)
 | |
|                                 this.SetIsSelected(!this.IsSelected, eEventSource.Mouse);
 | |
|                             else if (listBox.SelectionMode == eSelectionMode.MultiExtended)
 | |
|                             {
 | |
|                                 if ((Control.ModifierKeys & Keys.Control) == Keys.Control)
 | |
|                                 {
 | |
|                                     this.SetIsSelected(!this.IsSelected, eEventSource.Mouse);
 | |
|                                 }
 | |
|                                 else if ((Control.ModifierKeys & Keys.Shift) == Keys.Shift)
 | |
|                                 {
 | |
|                                     BaseItem itemContainer = listBox.GetBaseItemContainer();
 | |
|                                     int index = itemContainer.SubItems.IndexOf(this);
 | |
|                                     int hiSel = -1, lowSel = -1;
 | |
|                                     for (int i = 0; i < listBox.SelectedItems.Count; i++)
 | |
|                                     {
 | |
|                                         int itemIndex = itemContainer.SubItems.IndexOf(listBox.SelectedItems[i]);
 | |
|                                         if (itemIndex > hiSel || hiSel < 0) hiSel = itemIndex;
 | |
|                                         if (itemIndex < lowSel || lowSel < 0) lowSel = itemIndex;
 | |
|                                     }
 | |
|                                     if (hiSel < 0 || lowSel < 0)
 | |
|                                         this.SetIsSelected(true, eEventSource.Mouse);
 | |
|                                     else
 | |
|                                     {
 | |
|                                         if (index < lowSel)
 | |
|                                         {
 | |
|                                             for (int i = lowSel; i >= index; i--)
 | |
|                                             {
 | |
|                                                 ListBoxItem listItem = itemContainer.SubItems[i] as ListBoxItem;
 | |
|                                                 if (listItem != null) listItem.SetIsSelected(true, eEventSource.Mouse);
 | |
|                                             }
 | |
|                                         }
 | |
|                                         else if (index > hiSel)
 | |
|                                         {
 | |
|                                             for (int i = hiSel; i <= index; i++)
 | |
|                                             {
 | |
|                                                 ListBoxItem listItem = itemContainer.SubItems[i] as ListBoxItem;
 | |
|                                                 if (listItem != null) listItem.SetIsSelected(true, eEventSource.Mouse);
 | |
|                                             }
 | |
|                                         }
 | |
|                                     }
 | |
|                                 }
 | |
|                                 else
 | |
|                                 {
 | |
|                                     listBox.ClearSelectedItems(eEventSource.Mouse);
 | |
|                                     this.SetIsSelected(true, eEventSource.Mouse);
 | |
|                                 }
 | |
|                             }
 | |
|                             else if(!this.IsSelected)
 | |
|                                 this.SetIsSelected(true, eEventSource.Mouse);
 | |
|                         }
 | |
|                     }
 | |
|                     else
 | |
|                         this.SetIsSelected(true, eEventSource.Mouse);
 | |
|                 }
 | |
|             }
 | |
|             base.InternalMouseUp(objArg);
 | |
|         }
 | |
| 
 | |
|         private Size GetSymbolSize(Graphics g)
 | |
|         {
 | |
|             Size symbolSize = Size.Empty;
 | |
|             if (g == null || string.IsNullOrEmpty(_Symbol)) return symbolSize;
 | |
|             Font symFont = Symbols.GetFont(this.SymbolSize, this.SymbolSet);
 | |
|             symbolSize = TextDrawing.MeasureString(g, "\uF00A", symFont); // Need to do this to get consistent size for the symbol since they are not all the same width we pick widest
 | |
|             int descent = (int)Math.Ceiling((symFont.FontFamily.GetCellDescent(symFont.Style) *
 | |
|                 symFont.Size / symFont.FontFamily.GetEmHeight(symFont.Style)));
 | |
|             symbolSize.Height -= descent;
 | |
|             return symbolSize;
 | |
|         }
 | |
|         private Size _ActualSymbolSize = Size.Empty;
 | |
|         internal Size ActualSymbolSize
 | |
|         {
 | |
|             get
 | |
|             {
 | |
|                 return _ActualSymbolSize;
 | |
|             }
 | |
|         }
 | |
| 
 | |
|         private bool _MouseOver = false;
 | |
|         /// <summary>
 | |
|         /// Gets whether mouse is over the item.
 | |
|         /// </summary>
 | |
|         [Browsable(false)]
 | |
|         public bool IsMouseOver
 | |
|         {
 | |
|             get { return _MouseOver; }
 | |
|             internal set { _MouseOver = value; }
 | |
|         }
 | |
| 
 | |
|         internal Size CheckBoxSize
 | |
|         {
 | |
|             get
 | |
|             {
 | |
|                 return _CheckBoxSize;
 | |
|             }
 | |
|         }
 | |
| 
 | |
|         private eMouseState _CheckBoxMouseState = eMouseState.None;
 | |
|         /// <summary>
 | |
|         /// Gets the mouse state of the check box part of item if visible.
 | |
|         /// </summary>
 | |
|         [Browsable(false)]
 | |
|         public eMouseState CheckBoxMouseState
 | |
|         {
 | |
|             get { return _CheckBoxMouseState; }
 | |
|             internal set
 | |
|             {
 | |
|                 if (_CheckBoxMouseState != value)
 | |
|                 {
 | |
|                     _CheckBoxMouseState = value;
 | |
|                     this.Refresh();
 | |
|                 }
 | |
|             }
 | |
|         }
 | |
| 
 | |
|         /// <summary>
 | |
|         /// Indicates check-box state if visible.
 | |
|         /// </summary>
 | |
|         [DefaultValue(CheckState.Unchecked), Category("Appearance"), Description("Indicates check-box state if visible.")]
 | |
|         public CheckState CheckState
 | |
|         {
 | |
|             get { return _CheckState; }
 | |
|             set
 | |
|             {
 | |
|                 if (value != _CheckState)
 | |
|                 {
 | |
|                     CheckState oldValue = _CheckState;
 | |
|                     _CheckState = value;
 | |
|                     OnCheckStateChanged(oldValue, value);
 | |
|                 }
 | |
|             }
 | |
|         }
 | |
|         /// <summary>
 | |
|         /// Called when CheckState property has changed.
 | |
|         /// </summary>
 | |
|         /// <param name="oldValue">Old property value</param>
 | |
|         /// <param name="newValue">New property value</param>
 | |
|         protected virtual void OnCheckStateChanged(CheckState oldValue, CheckState newValue)
 | |
|         {
 | |
|             ListBoxAdv listBox = this.ContainerControl as ListBoxAdv;
 | |
|             if (listBox != null)
 | |
|             {
 | |
|                 ListBoxAdvItemCheckEventArgs e = new ListBoxAdvItemCheckEventArgs(this, newValue);
 | |
|                 listBox.ListItemCheckStateChanged(e);
 | |
|                 if (e.Cancel)
 | |
|                     _CheckState = oldValue;
 | |
|             }
 | |
|             //OnPropertyChanged(new PropertyChangedEventArgs("CheckState"));
 | |
|             this.Refresh();
 | |
|         }
 | |
| 
 | |
|         // Fields...
 | |
|         private Image _Image;
 | |
|         private bool _IsSelected = false;
 | |
|         /// <summary>
 | |
|         /// Gets or sets whether item is selected.
 | |
|         /// </summary>
 | |
|         [Browsable(false), DefaultValue(false)]
 | |
|         public bool IsSelected
 | |
|         {
 | |
|             get { return _IsSelected; }
 | |
|             set
 | |
|             {
 | |
|                 if (value != _IsSelected)
 | |
|                 {
 | |
|                     SetIsSelected(value, eEventSource.Code);
 | |
|                 }
 | |
|             }
 | |
|         }
 | |
|         /// <summary>
 | |
|         /// Called when IsSelected property has changed.
 | |
|         /// </summary>
 | |
|         /// <param name="oldValue">Old property value</param>
 | |
|         /// <param name="newValue">New property value</param>
 | |
|         protected virtual void OnIsSelectedChanged(bool oldValue, bool newValue)
 | |
|         {
 | |
|             //OnPropertyChanged(new PropertyChangedEventArgs("IsSelected"));
 | |
|             this.Refresh();
 | |
|         }
 | |
|         /// <summary>
 | |
|         /// Sets selected state of the item including the source of the action that caused the change.
 | |
|         /// </summary>
 | |
|         /// <param name="isSelected"></param>
 | |
|         /// <param name="source"></param>
 | |
|         public void SetIsSelected(bool isSelected, eEventSource source)
 | |
|         {
 | |
|             bool oldValue = _IsSelected;
 | |
|             ListBoxAdv listBox = this.ContainerControl as ListBoxAdv;
 | |
|             _IsSelected = isSelected;
 | |
|             if (listBox != null)
 | |
|             {
 | |
|                 listBox.OnListBoxItemSelectedChanged(this, source);
 | |
|             }
 | |
|             OnIsSelectedChanged(oldValue, isSelected);
 | |
|         }
 | |
|         /// <summary>
 | |
|         /// Indicates whether item changes its background colors when mouse is over the item.
 | |
|         /// </summary>
 | |
|         [DefaultValue(false), Category("Behavior"), Description("Indicates whether item changes its background colors when mouse is over the item")]
 | |
|         public bool HotTracking
 | |
|         {
 | |
|             get { return _HotTracking; }
 | |
|             set
 | |
|             {
 | |
|                 if (value != _HotTracking)
 | |
|                 {
 | |
|                     bool oldValue = _HotTracking;
 | |
|                     _HotTracking = value;
 | |
|                     OnHotTrackingChanged(oldValue, value);
 | |
|                 }
 | |
|             }
 | |
|         }
 | |
|         /// <summary>
 | |
|         /// Called when HotTracking property has changed.
 | |
|         /// </summary>
 | |
|         /// <param name="oldValue">Old property value</param>
 | |
|         /// <param name="newValue">New property value</param>
 | |
|         protected virtual void OnHotTrackingChanged(bool oldValue, bool newValue)
 | |
|         {
 | |
|             //OnPropertyChanged(new PropertyChangedEventArgs("HotTracking"));
 | |
|         }
 | |
| 
 | |
|         /// <summary>
 | |
|         /// Specifies image displayed on the item.
 | |
|         /// </summary>
 | |
|         [DefaultValue(null), Category("Appearance"), Description("Specifies image displayed on the item.")]
 | |
|         public Image Image
 | |
|         {
 | |
|             get { return _Image; }
 | |
|             set
 | |
|             {
 | |
|                 if (value != _Image)
 | |
|                 {
 | |
|                     Image oldValue = _Image;
 | |
|                     _Image = value;
 | |
|                     OnImageChanged(oldValue, value);
 | |
|                 }
 | |
|             }
 | |
|         }
 | |
|         /// <summary>
 | |
|         /// Called when Image property has changed.
 | |
|         /// </summary>
 | |
|         /// <param name="oldValue">Old property value</param>
 | |
|         /// <param name="newValue">New property value</param>
 | |
|         protected virtual void OnImageChanged(Image oldValue, Image newValue)
 | |
|         {
 | |
|             //OnPropertyChanged(new PropertyChangedEventArgs("Image"));
 | |
|             NeedRecalcSize = true;
 | |
|             OnAppearanceChanged();
 | |
|             this.Refresh();
 | |
|         }
 | |
| 
 | |
|         private Color _SymbolColor = Color.Empty;
 | |
|         /// <summary>
 | |
|         /// Gets or sets the color of the Symbol.
 | |
|         /// </summary>
 | |
|         [Category("Appearance"), Description("Indicates color of the Symbol.")]
 | |
|         public Color SymbolColor
 | |
|         {
 | |
|             get { return _SymbolColor; }
 | |
|             set { _SymbolColor = value; this.Refresh(); }
 | |
|         }
 | |
|         /// <summary>
 | |
|         /// Gets whether property should be serialized.
 | |
|         /// </summary>
 | |
|         [EditorBrowsable(EditorBrowsableState.Never)]
 | |
|         public bool ShouldSerializeSymbolColor()
 | |
|         {
 | |
|             return !_SymbolColor.IsEmpty;
 | |
|         }
 | |
|         /// <summary>
 | |
|         /// Resets property to its default value.
 | |
|         /// </summary>
 | |
|         [EditorBrowsable(EditorBrowsableState.Never)]
 | |
|         public void ResetSymbolColor()
 | |
|         {
 | |
|             this.SymbolColor = Color.Empty;
 | |
|         }
 | |
| 
 | |
|         /// <summary>
 | |
|         /// Gets the realized symbol string.
 | |
|         /// </summary>
 | |
|         [Browsable(false)]
 | |
|         public string SymbolRealized
 | |
|         {
 | |
|             get { return _SymbolRealized; }
 | |
|         }
 | |
|         private string _Symbol = "", _SymbolRealized = "";
 | |
|         /// <summary>
 | |
|         /// Indicates the symbol displayed on face of the button instead of the image. Setting the symbol overrides the image setting.
 | |
|         /// </summary>
 | |
|         [DefaultValue(""), Category("Appearance"), Description("Indicates the symbol displayed on face of the button instead of the image. Setting the symbol overrides the image setting.")]
 | |
|         [Editor("DevComponents.DotNetBar.Design.SymbolTypeEditor, DevComponents.DotNetBar.Design, Version=14.1.0.37, Culture=neutral,  PublicKeyToken=90f470f34c89ccaf", typeof(System.Drawing.Design.UITypeEditor))]
 | |
|         public string Symbol
 | |
|         {
 | |
|             get { return _Symbol; }
 | |
|             set
 | |
|             {
 | |
|                 if (value != _Symbol)
 | |
|                 {
 | |
|                     string oldValue = _Symbol;
 | |
|                     _Symbol = value;
 | |
|                     OnSymbolChanged(oldValue, value);
 | |
|                 }
 | |
|             }
 | |
|         }
 | |
|         /// <summary>
 | |
|         /// Called when Symbol property has changed.
 | |
|         /// </summary>
 | |
|         /// <param name="oldValue">Old property value</param>
 | |
|         /// <param name="newValue">New property value</param>
 | |
|         protected virtual void OnSymbolChanged(string oldValue, string newValue)
 | |
|         {
 | |
|             if (string.IsNullOrEmpty(newValue))
 | |
|                 _SymbolRealized = "";
 | |
|             else
 | |
|                 _SymbolRealized = Symbols.GetSymbol(newValue);
 | |
|             //OnPropertyChanged(new PropertyChangedEventArgs("Symbol"));
 | |
|             NeedRecalcSize = true;
 | |
|             OnAppearanceChanged();
 | |
|             this.Refresh();
 | |
|         }
 | |
| 
 | |
|         private eSymbolSet _SymbolSet = eSymbolSet.Awesome;
 | |
|         /// <summary>
 | |
|         /// Gets or sets the symbol set used to represent the Symbol.
 | |
|         /// </summary>
 | |
|         [Browsable(false), DefaultValue(eSymbolSet.Awesome)]
 | |
|         public eSymbolSet SymbolSet
 | |
|         {
 | |
|             get { return _SymbolSet; }
 | |
|             set
 | |
|             {
 | |
|                 if (_SymbolSet != value)
 | |
|                 {
 | |
|                     eSymbolSet oldValue = _SymbolSet;
 | |
|                     _SymbolSet = value;
 | |
|                     OnSymbolSetChanged(oldValue, value);
 | |
|                 }
 | |
|             }
 | |
|         }
 | |
|         /// <summary>
 | |
|         /// Called when SymbolSet property value changes.
 | |
|         /// </summary>
 | |
|         /// <param name="oldValue">Indciates old value</param>
 | |
|         /// <param name="newValue">Indicates new value</param>
 | |
|         protected virtual void OnSymbolSetChanged(eSymbolSet oldValue, eSymbolSet newValue)
 | |
|         {
 | |
|             NeedRecalcSize = true;
 | |
|             OnAppearanceChanged();
 | |
|             this.Refresh();
 | |
|         }
 | |
| 
 | |
|         private float _SymbolSize = 13f;
 | |
|         /// <summary>
 | |
|         /// Indicates the size of the symbol in points.
 | |
|         /// </summary>
 | |
|         [DefaultValue(13f), Category("Appearance"), Description("Indicates the size of the symbol in points.")]
 | |
|         public float SymbolSize
 | |
|         {
 | |
|             get { return _SymbolSize; }
 | |
|             set
 | |
|             {
 | |
|                 if (value != _SymbolSize)
 | |
|                 {
 | |
|                     float oldValue = _SymbolSize;
 | |
|                     _SymbolSize = value;
 | |
|                     OnSymbolSizeChanged(oldValue, value);
 | |
|                 }
 | |
|             }
 | |
|         }
 | |
|         /// <summary>
 | |
|         /// Called when SymbolSize property has changed.
 | |
|         /// </summary>
 | |
|         /// <param name="oldValue">Old property value</param>
 | |
|         /// <param name="newValue">New property value</param>
 | |
|         protected virtual void OnSymbolSizeChanged(float oldValue, float newValue)
 | |
|         {
 | |
|             //OnPropertyChanged(new PropertyChangedEventArgs("SymbolSize"));
 | |
|             NeedRecalcSize = true;
 | |
|             OnAppearanceChanged();
 | |
|             this.Refresh();
 | |
|         }
 | |
| 
 | |
|         private Color[] _BackColors = null;
 | |
|         /// <summary>
 | |
|         /// Indicates the array of colors that when set are used to draw the background of the item.
 | |
|         /// </summary>
 | |
|         [DefaultValue(null), Category("Appearance"), Description("Indicates the array of colors that when set are used to draw the background of the item."), TypeConverter(typeof(ArrayConverter))]
 | |
|         public Color[] BackColors
 | |
|         {
 | |
|             get
 | |
|             {
 | |
|                 return _BackColors;
 | |
|             }
 | |
|             set
 | |
|             {
 | |
|                 if (_BackColors != value)
 | |
|                 {
 | |
|                     _BackColors = value;
 | |
|                     //OnPropertyChanged(new PropertyChangedEventArgs("Colors"));
 | |
|                     this.Refresh();
 | |
|                 }
 | |
|             }
 | |
|         }
 | |
|         private Color _TextColor = Color.Empty;
 | |
|         /// <summary>
 | |
|         /// Gets or sets the color of the text.
 | |
|         /// </summary>
 | |
|         [Category("Columns"), Description("Indicates color of text.")]
 | |
|         public Color TextColor
 | |
|         {
 | |
|             get { return _TextColor; }
 | |
|             set { _TextColor = value; this.Refresh(); }
 | |
|         }
 | |
|         /// <summary>
 | |
|         /// Gets whether property should be serialized.
 | |
|         /// </summary>
 | |
|         [EditorBrowsable(EditorBrowsableState.Never)]
 | |
|         public bool ShouldSerializeTextColor()
 | |
|         {
 | |
|             return !_TextColor.IsEmpty;
 | |
|         }
 | |
|         /// <summary>
 | |
|         /// Resets property to its default value.
 | |
|         /// </summary>
 | |
|         [EditorBrowsable(EditorBrowsableState.Never)]
 | |
|         public void ResetTextColor()
 | |
|         {
 | |
|             this.TextColor = Color.Empty;
 | |
|         }
 | |
|         /// <summary>
 | |
|         /// Gets or sets the text associated with this item.
 | |
|         /// </summary>
 | |
|         [System.ComponentModel.Browsable(true), DevCoBrowsable(true), Editor("DevComponents.DotNetBar.Design.TextMarkupUIEditor, DevComponents.DotNetBar.Design, Version=14.1.0.37, Culture=neutral,  PublicKeyToken=90f470f34c89ccaf", typeof(System.Drawing.Design.UITypeEditor)), System.ComponentModel.Category("Appearance"), System.ComponentModel.Description("The text contained in the item."), System.ComponentModel.Localizable(true), System.ComponentModel.DefaultValue("")]
 | |
|         public override string Text
 | |
|         {
 | |
|             get
 | |
|             {
 | |
|                 return base.Text;
 | |
|             }
 | |
|             set
 | |
|             {
 | |
|                 base.Text = value;
 | |
|             }
 | |
|         }
 | |
| 
 | |
|         private eButtonTextAlignment _TextAlignment = eButtonTextAlignment.Left;
 | |
|         /// <summary>
 | |
|         /// Gets or sets the text alignment. Default value is left.
 | |
|         /// </summary>
 | |
|         [Browsable(true), DefaultValue(eButtonTextAlignment.Left), Category("Appearance"), Description("Indicates text alignment.")]
 | |
|         public eButtonTextAlignment TextAlignment
 | |
|         {
 | |
|             get { return _TextAlignment; }
 | |
|             set
 | |
|             {
 | |
|                 _TextAlignment = value;
 | |
|                 this.Refresh();
 | |
|             }
 | |
|         }
 | |
|         #endregion
 | |
| 
 | |
|         #region Markup Implementation
 | |
|         /// <summary>
 | |
|         /// Gets whether item supports text markup. Default is false.
 | |
|         /// </summary>
 | |
|         protected override bool IsMarkupSupported
 | |
|         {
 | |
|             get { return _EnableMarkup; }
 | |
|         }
 | |
| 
 | |
|         private bool _EnableMarkup = true;
 | |
|         /// <summary>
 | |
|         /// Gets or sets whether text-markup support is enabled for items Text property. Default value is true.
 | |
|         /// Set this property to false to display HTML or other markup in the item instead of it being parsed as text-markup.
 | |
|         /// </summary>
 | |
|         [DefaultValue(true), Category("Appearance"), Description("Indicates whether text-markup support is enabled for items Text property.")]
 | |
|         public bool EnableMarkup
 | |
|         {
 | |
|             get { return _EnableMarkup; }
 | |
|             set
 | |
|             {
 | |
|                 if (_EnableMarkup != value)
 | |
|                 {
 | |
|                     _EnableMarkup = value;
 | |
|                     NeedRecalcSize = true;
 | |
|                     OnTextChanged();
 | |
|                 }
 | |
|             }
 | |
|         }
 | |
|         #endregion
 | |
|     }
 | |
| }
 |