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