408 lines
		
	
	
		
			13 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
			
		
		
	
	
			408 lines
		
	
	
		
			13 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
| using System;
 | |
| using System.Collections.Generic;
 | |
| using System.ComponentModel;
 | |
| using System.Drawing;
 | |
| using System.Text;
 | |
| 
 | |
| namespace DevComponents.DotNetBar.Controls
 | |
| {
 | |
|     /// <summary>
 | |
|     /// Class represents single token in TokenEditor control.
 | |
|     /// </summary>
 | |
|     [ToolboxItem(false)]
 | |
|     public class EditToken : Component
 | |
|     {
 | |
|         #region Constructor
 | |
|         /// <summary>
 | |
|         /// Initializes a new instance of the EditToken class.
 | |
|         /// </summary>
 | |
|         /// <param name="value">Indicates token value.</param>
 | |
|         public EditToken(string value)
 | |
|         {
 | |
|             _Value = value;
 | |
|         }
 | |
|         /// <summary>
 | |
|         /// Initializes a new instance of the EditToken class.
 | |
|         /// </summary>
 | |
|         /// <param name="value">Indicates token value</param>
 | |
|         /// <param name="text">Indicates token text</param>
 | |
|         public EditToken(string value, string text)
 | |
|         {
 | |
|             _Value = value;
 | |
|             _Text = text;
 | |
|         }
 | |
|         /// <summary>
 | |
|         /// Initializes a new instance of the EditToken class.
 | |
|         /// </summary>
 | |
|         /// <param name="value">Indicates token value</param>
 | |
|         /// <param name="text">Indicates token text</param>
 | |
|         /// <param name="image">Indicates token image</param>
 | |
|         public EditToken(string value, string text, Image image)
 | |
|         {
 | |
|             _Value = value;
 | |
|             _Text = text;
 | |
|             _Image = image;
 | |
|         }
 | |
|         #endregion
 | |
| 
 | |
|         #region Implementation
 | |
|         private eTokenPart _MouseOverPart;
 | |
|         private string _Value = "";
 | |
|         /// <summary>
 | |
|         /// Indicates the token value, for example an email token has email address as token Value and full name as token Text.
 | |
|         /// </summary>
 | |
|         [DefaultValue(""), Category("Data"), Description("Indicates the token value, for example an email token has email address as token Value and full name as token Text.")]
 | |
|         public string Value
 | |
|         {
 | |
|             get { return _Value; }
 | |
|             set
 | |
|             {
 | |
|                 if (value != _Value)
 | |
|                 {
 | |
|                     string oldValue = _Value;
 | |
|                     _Value = value;
 | |
|                     OnValueChanged(oldValue, value);
 | |
|                 }
 | |
|             }
 | |
|         }
 | |
|         /// <summary>
 | |
|         /// Called when Value property has changed.
 | |
|         /// </summary>
 | |
|         /// <param name="oldValue">Old property value</param>
 | |
|         /// <param name="newValue">New property value</param>
 | |
|         protected virtual void OnValueChanged(string oldValue, string newValue)
 | |
|         {
 | |
|             //OnPropertyChanged(new PropertyChangedEventArgs("Value"));
 | |
|         }
 | |
| 
 | |
|         private string _Text = "";
 | |
|         /// <summary>
 | |
|         /// Indicates the token text, for example an email token has email address as token Value and full name as token Text.
 | |
|         /// </summary>
 | |
|         [DefaultValue(""), Category("Data"), Description("Indicates the token text, for example an email token has email address as token Value and full name as token Text.")]
 | |
|         public string Text
 | |
|         {
 | |
|             get { return _Text; }
 | |
|             set
 | |
|             {
 | |
|                 if (value != _Text)
 | |
|                 {
 | |
|                     string oldValue = _Text;
 | |
|                     _Text = value;
 | |
|                     OnTextChanged(oldValue, value);
 | |
|                 }
 | |
|             }
 | |
|         }
 | |
|         /// <summary>
 | |
|         /// Called when Text property has changed.
 | |
|         /// </summary>
 | |
|         /// <param name="oldValue">Old property value</param>
 | |
|         /// <param name="newValue">New property value</param>
 | |
|         protected virtual void OnTextChanged(string oldValue, string newValue)
 | |
|         {
 | |
|             //OnPropertyChanged(new PropertyChangedEventArgs("Text"));
 | |
| 
 | |
|         }
 | |
| 
 | |
|         private object _Tag = null;
 | |
|         /// <summary>
 | |
|         /// Gets or sets custom data associated with the object.
 | |
|         /// </summary>
 | |
|         [DefaultValue((string)null), Localizable(false), TypeConverter(typeof(StringConverter)), Category("Data"), Description("Custom data associated with the object")]
 | |
|         public object Tag
 | |
|         {
 | |
|             get { return _Tag; }
 | |
|             set { _Tag = value; }
 | |
|         }
 | |
| 
 | |
|         private Rectangle _Bounds = Rectangle.Empty;
 | |
|         /// <summary>
 | |
|         /// Gets the display bounds of the token, if displayed, inside of TokenEditor control.
 | |
|         /// </summary>
 | |
|         [Browsable(false)]
 | |
|         public Rectangle Bounds
 | |
|         {
 | |
|             get { return _Bounds; }
 | |
|             internal set { _Bounds = value; }
 | |
|         }
 | |
| 
 | |
|         private Image _Image = null;
 | |
|         /// <summary>
 | |
|         /// Indicates the image that is displayed next to the token
 | |
|         /// </summary>
 | |
|         [DefaultValue(null), Category("Appearance"), Description("Indicates the image that is displayed next to the token")]
 | |
|         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"));
 | |
|         }
 | |
| 
 | |
|         /// <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 token instead of the image. Setting the symbol overrides the image setting.
 | |
|         /// </summary>
 | |
|         [DefaultValue(""), Category("Appearance"), Description("Indicates the symbol displayed on face of the token 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"));
 | |
|             this.Invalidate();
 | |
|         }
 | |
| 
 | |
|         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)
 | |
|         {
 | |
|             this.Invalidate();
 | |
|         }
 | |
| 
 | |
|         private void Invalidate()
 | |
|         {
 | |
|             //throw new NotImplementedException();
 | |
|         }
 | |
| 
 | |
|         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.Invalidate(); }
 | |
|         }
 | |
|         /// <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;
 | |
|         }
 | |
| 
 | |
|         private string _Tooltip = "";
 | |
|         /// <summary>
 | |
|         /// Indicates tooltip that is displayed when mouse is over the token and token is selected.
 | |
|         /// </summary>
 | |
|         [DefaultValue(""), Category("Behavior"), Description("Indicates tooltip that is displayed when mouse is over the token and token is selected")]
 | |
|         public string Tooltip
 | |
|         {
 | |
|             get { return _Tooltip; }
 | |
|             set
 | |
|             {
 | |
|                 if (value !=_Tooltip)
 | |
|                 {
 | |
|                     string oldValue = _Tooltip;
 | |
|                     _Tooltip = value;
 | |
|                     OnTooltipChanged(oldValue, value);
 | |
|                 }
 | |
|             }
 | |
|         }
 | |
|         /// <summary>
 | |
|         /// Called when Tooltip property has changed.
 | |
|         /// </summary>
 | |
|         /// <param name="oldValue">Old property value</param>
 | |
|         /// <param name="newValue">New property value</param>
 | |
|         protected virtual void OnTooltipChanged(string oldValue, string newValue)
 | |
|         {
 | |
|             //OnPropertyChanged(new PropertyChangedEventArgs("Tooltip"));
 | |
|             
 | |
|         }
 | |
| 
 | |
|         /// <summary>
 | |
|         /// Gets the part of the token mouse is over. Valid only when token is selected.
 | |
|         /// </summary>
 | |
|         [Browsable(false)]
 | |
|         public eTokenPart MouseOverPart
 | |
|         {
 | |
|             get { return _MouseOverPart; }
 | |
|             internal set
 | |
|             {
 | |
|                 if (value !=_MouseOverPart)
 | |
|                 {
 | |
|                     eTokenPart oldValue = _MouseOverPart;
 | |
|                     _MouseOverPart = value;
 | |
|                     OnMouseOverPartChanged(oldValue, value);
 | |
|                 }
 | |
|             }
 | |
|         }
 | |
|         /// <summary>
 | |
|         /// Called when MouseOverPart property has changed.
 | |
|         /// </summary>
 | |
|         /// <param name="oldValue">Old property value</param>
 | |
|         /// <param name="newValue">New property value</param>
 | |
|         protected virtual void OnMouseOverPartChanged(eTokenPart oldValue, eTokenPart newValue)
 | |
|         {
 | |
|             //OnPropertyChanged(new PropertyChangedEventArgs("MouseOverPart"));
 | |
|             
 | |
|         }
 | |
| 
 | |
|         private Rectangle _RemoveButtonBounds = Rectangle.Empty;
 | |
|         /// <summary>
 | |
|         /// Gets the bounds of the remove button if displayed. Valid only when token is selected.
 | |
|         /// </summary>
 | |
|         [Browsable(false)]
 | |
|         public Rectangle RemoveButtonBounds
 | |
|         {
 | |
|             get
 | |
|             {
 | |
|                 return _RemoveButtonBounds;
 | |
|             }
 | |
|             internal set
 | |
|             {
 | |
|                 _RemoveButtonBounds = value;
 | |
|             }
 | |
|         }
 | |
|         private Rectangle _ImageBounds = Rectangle.Empty;
 | |
|         /// <summary>
 | |
|         /// Gets the bounds of the image if displayed. Valid only when token is selected.
 | |
|         /// </summary>
 | |
|         [Browsable(false)]
 | |
|         public Rectangle ImageBounds
 | |
|         {
 | |
|             get
 | |
|             {
 | |
|                 return _ImageBounds;
 | |
|             }
 | |
|             internal set
 | |
|             {
 | |
|                 _ImageBounds = value;
 | |
|             }
 | |
|         }
 | |
| 
 | |
|         private bool _IsSelected = false;
 | |
|         /// <summary>
 | |
|         /// Indicates whether token is selected.
 | |
|         /// </summary>
 | |
|         [Browsable(false)]
 | |
|         public bool IsSelected
 | |
|         {
 | |
|             get
 | |
|             {
 | |
|                 return _IsSelected;
 | |
|             }
 | |
|             internal set
 | |
|             {
 | |
|                 _IsSelected = value;
 | |
|             }
 | |
|         }
 | |
| 
 | |
|         private bool _IsFocused = false;
 | |
|         /// <summary>
 | |
|         /// Indicates whether token is focused while selected.
 | |
|         /// </summary>
 | |
|         [Browsable(false)]
 | |
|         public bool IsFocused
 | |
|         {
 | |
|             get
 | |
|             {
 | |
|                 return _IsFocused;
 | |
|             }
 | |
|             internal set
 | |
|             {
 | |
|                 _IsFocused = value;
 | |
|             }
 | |
|         }
 | |
|         #endregion
 | |
|     }
 | |
| 
 | |
|     /// <summary>
 | |
|     /// Defines the token parts.
 | |
|     /// </summary>
 | |
|     public enum eTokenPart
 | |
|     {
 | |
|         /// <summary>
 | |
|         /// Identifies no token part.
 | |
|         /// </summary>
 | |
|         None,
 | |
|         /// <summary>
 | |
|         /// Identifies the token body/text.
 | |
|         /// </summary>
 | |
|         Token,
 | |
|         /// <summary>
 | |
|         /// Identifies the remove token button.
 | |
|         /// </summary>
 | |
|         RemoveButton,
 | |
|         /// <summary>
 | |
|         /// Identifies the token image.
 | |
|         /// </summary>
 | |
|         Image
 | |
|     }
 | |
| }
 |