363 lines
		
	
	
		
			8.2 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
			
		
		
	
	
			363 lines
		
	
	
		
			8.2 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
using System;
 | 
						|
using System.ComponentModel;
 | 
						|
using System.Windows.Forms;
 | 
						|
using DevComponents.Charts.TextMarkup;
 | 
						|
using DevComponents.DotNetBar.Charts.Style;
 | 
						|
 | 
						|
namespace DevComponents.DotNetBar.Charts
 | 
						|
{
 | 
						|
    /// <summary>
 | 
						|
    /// ChartNote.
 | 
						|
    /// </summary>
 | 
						|
    public class ChartNote : ChartVisualElement
 | 
						|
    {
 | 
						|
        #region Private variables
 | 
						|
 | 
						|
        private States _States;
 | 
						|
 | 
						|
        private string _Text;
 | 
						|
        private BodyElement _TextMarkup;
 | 
						|
        private int _FixedHeight;
 | 
						|
 | 
						|
        #endregion
 | 
						|
 | 
						|
        #region Public properties
 | 
						|
 | 
						|
        #region EnableTextMarkup
 | 
						|
 | 
						|
        /// <summary>
 | 
						|
        /// Gets or sets whether text-markup support is enabled
 | 
						|
        /// </summary>
 | 
						|
        [DefaultValue(false), Category("Appearance")]
 | 
						|
        [Description("Indicates whether text-markup support is enabled.")]
 | 
						|
        public bool EnableTextMarkup
 | 
						|
        {
 | 
						|
            get { return (TestState(States.EnableTextMarkup)); }
 | 
						|
 | 
						|
            set
 | 
						|
            {
 | 
						|
                if (EnableTextMarkup != value)
 | 
						|
                {
 | 
						|
                    SetState(States.EnableTextMarkup, value);
 | 
						|
 | 
						|
                    MarkupTextChanged();
 | 
						|
 | 
						|
                    OnPropertyChangedEx("EnableTextMarkup", VisualChangeType.Layout);
 | 
						|
                }
 | 
						|
            }
 | 
						|
        }
 | 
						|
 | 
						|
        #region MarkupTextChanged
 | 
						|
 | 
						|
        private void MarkupTextChanged()
 | 
						|
        {
 | 
						|
            if (_TextMarkup != null)
 | 
						|
                _TextMarkup.HyperLinkClick -= TextMarkupLinkClick;
 | 
						|
 | 
						|
            _TextMarkup = null;
 | 
						|
 | 
						|
            if (EnableTextMarkup == true)
 | 
						|
            {
 | 
						|
                if (MarkupParser.IsMarkup(_Text) == true)
 | 
						|
                {
 | 
						|
                    _TextMarkup = MarkupParser.Parse(_Text);
 | 
						|
 | 
						|
                    if (_TextMarkup != null)
 | 
						|
                        _TextMarkup.HyperLinkClick += TextMarkupLinkClick;
 | 
						|
                }
 | 
						|
            }
 | 
						|
        }
 | 
						|
 | 
						|
        #endregion
 | 
						|
 | 
						|
        #region TextMarkupLinkClick
 | 
						|
 | 
						|
        /// <summary>
 | 
						|
        /// Occurs when a text markup link is clicked
 | 
						|
        /// </summary>
 | 
						|
        protected virtual void TextMarkupLinkClick(object sender, EventArgs e)
 | 
						|
        {
 | 
						|
            HyperLink link = sender as HyperLink;
 | 
						|
 | 
						|
            if (link != null)
 | 
						|
                ChartControl.DoChartTitleMarkupLinkClickEvent(this, link);
 | 
						|
        }
 | 
						|
 | 
						|
        #endregion
 | 
						|
 | 
						|
        #endregion
 | 
						|
 | 
						|
        #region PlainText
 | 
						|
 | 
						|
        /// <summary>
 | 
						|
        /// Gets text without text-markup (if text-markup is used in Text)
 | 
						|
        /// </summary>
 | 
						|
        [Browsable(false), EditorBrowsable(EditorBrowsableState.Never)]
 | 
						|
        public string PlainText
 | 
						|
        {
 | 
						|
            get { return (_TextMarkup != null ? _TextMarkup.PlainText : _Text); }
 | 
						|
        }
 | 
						|
 | 
						|
        #endregion
 | 
						|
 | 
						|
        #region FixedHeight
 | 
						|
 | 
						|
        /// <summary>
 | 
						|
        /// Gets or sets the fixed Text height (0 to auto-size)
 | 
						|
        /// </summary>
 | 
						|
        [DefaultValue(0), Category("Layout")]
 | 
						|
        [Description("Indicates the fixed Text height (0 to auto-size)")]
 | 
						|
        public int FixedHeight
 | 
						|
        {
 | 
						|
            get { return (_FixedHeight); }
 | 
						|
 | 
						|
            set
 | 
						|
            {
 | 
						|
                if (value != _FixedHeight)
 | 
						|
                {
 | 
						|
                    _FixedHeight = value;
 | 
						|
 | 
						|
                    OnPropertyChangedEx("FixedHeight", VisualChangeType.Layout);
 | 
						|
                }
 | 
						|
            }
 | 
						|
        }
 | 
						|
 | 
						|
        #endregion
 | 
						|
 | 
						|
        #region Text
 | 
						|
 | 
						|
        /// <summary>
 | 
						|
        /// Gets or sets the item Text.
 | 
						|
        /// </summary>
 | 
						|
        [DefaultValue(null), Category("Appearance")]
 | 
						|
        [Description("Indicates the item Text.")]
 | 
						|
        [Editor("DevComponents.DotNetBar.Design.TextMarkupUIEditor, DevComponents.DotNetBar.Design, Version=14.1.0.37, Culture=neutral,  PublicKeyToken=90f470f34c89ccaf", typeof(System.Drawing.Design.UITypeEditor))]
 | 
						|
        public string Text
 | 
						|
        {
 | 
						|
            get { return (_Text); }
 | 
						|
 | 
						|
            set
 | 
						|
            {
 | 
						|
                _Text = value;
 | 
						|
 | 
						|
                MarkupTextChanged();
 | 
						|
 | 
						|
                OnPropertyChangedEx("Text", VisualChangeType.Layout);
 | 
						|
            }
 | 
						|
        }
 | 
						|
 | 
						|
        #endregion
 | 
						|
 | 
						|
        #endregion
 | 
						|
 | 
						|
        #region Internal properties
 | 
						|
 | 
						|
        #region TextMarkup
 | 
						|
 | 
						|
        internal BodyElement TextMarkup
 | 
						|
        {
 | 
						|
            get { return (_TextMarkup); }
 | 
						|
        }
 | 
						|
 | 
						|
        #endregion
 | 
						|
 | 
						|
        #endregion
 | 
						|
 | 
						|
        #region MeasureOverride
 | 
						|
 | 
						|
        protected override void MeasureOverride(ChartLayoutInfo layoutInfo)
 | 
						|
        {
 | 
						|
            throw new NotImplementedException();
 | 
						|
        }
 | 
						|
 | 
						|
        #endregion
 | 
						|
 | 
						|
        #region ArrangeOverride
 | 
						|
 | 
						|
        protected override void ArrangeOverride(ChartLayoutInfo layoutInfo)
 | 
						|
        {
 | 
						|
            throw new NotImplementedException();
 | 
						|
        }
 | 
						|
 | 
						|
        #endregion
 | 
						|
 | 
						|
        #region RenderOverride
 | 
						|
 | 
						|
        protected override void RenderOverride(ChartRenderInfo renderInfo)
 | 
						|
        {
 | 
						|
            throw new NotImplementedException();
 | 
						|
        }
 | 
						|
 | 
						|
        #endregion
 | 
						|
 | 
						|
        #region Mouse handling
 | 
						|
 | 
						|
        #region OnMouseEnter
 | 
						|
 | 
						|
        protected override bool OnMouseEnter(EventArgs e)
 | 
						|
        {
 | 
						|
            return (true);
 | 
						|
        }
 | 
						|
 | 
						|
        #endregion
 | 
						|
 | 
						|
        #region OnMouseLeave
 | 
						|
 | 
						|
        protected override bool OnMouseLeave(EventArgs e)
 | 
						|
        {
 | 
						|
            return (true);
 | 
						|
        }
 | 
						|
 | 
						|
        #endregion
 | 
						|
 | 
						|
        #region OnMouseMove
 | 
						|
 | 
						|
        protected override bool OnMouseMove(MouseEventArgs e)
 | 
						|
        {
 | 
						|
            ChartCursor = Cursors.Default;
 | 
						|
 | 
						|
            return (false);
 | 
						|
        }
 | 
						|
 | 
						|
        #endregion
 | 
						|
 | 
						|
        #region OnMouseDown
 | 
						|
 | 
						|
        protected override bool OnMouseDown(MouseEventArgs e)
 | 
						|
        {
 | 
						|
            return (false);
 | 
						|
        }
 | 
						|
 | 
						|
        #endregion
 | 
						|
 | 
						|
        #region OnMouseUp
 | 
						|
 | 
						|
        protected override bool OnMouseUp(MouseEventArgs e)
 | 
						|
        {
 | 
						|
            base.OnMouseUp(e);
 | 
						|
 | 
						|
            return (true);
 | 
						|
        }
 | 
						|
 | 
						|
        #endregion
 | 
						|
 | 
						|
        #endregion
 | 
						|
 | 
						|
        #region Copy/CopyTo
 | 
						|
 | 
						|
        public override ChartVisualElement Copy()
 | 
						|
        {
 | 
						|
            ChartNote copy = new ChartNote();
 | 
						|
 | 
						|
            CopyTo(copy);
 | 
						|
 | 
						|
            return (copy);
 | 
						|
        }
 | 
						|
 | 
						|
        public override void CopyTo(ChartVisualElement copy)
 | 
						|
        {
 | 
						|
            ChartNote c = copy as ChartNote;
 | 
						|
 | 
						|
            if (c != null)
 | 
						|
            {
 | 
						|
                base.CopyTo(c);
 | 
						|
 | 
						|
                c.EnableTextMarkup = EnableTextMarkup;
 | 
						|
                c.FixedHeight = FixedHeight;
 | 
						|
                c.Text = Text;
 | 
						|
            }
 | 
						|
        }
 | 
						|
 | 
						|
        #endregion
 | 
						|
 | 
						|
        #region GetSerialData
 | 
						|
 | 
						|
        internal override SerialElementCollection GetSerialData(string serialName)
 | 
						|
        {
 | 
						|
            SerialElementCollection sec = new SerialElementCollection();
 | 
						|
 | 
						|
            if (serialName != null)
 | 
						|
            {
 | 
						|
                if (serialName.Equals("") == true)
 | 
						|
                    serialName = "ChartNote";
 | 
						|
 | 
						|
                sec.AddStartElement(serialName);
 | 
						|
            }
 | 
						|
 | 
						|
            sec.AddValue("EnableTextMarkup", EnableTextMarkup, false);
 | 
						|
            sec.AddValue("FixedHeight", FixedHeight, 0);
 | 
						|
            sec.AddValue("Text", Text, null);
 | 
						|
 | 
						|
            sec.AddElement(base.GetSerialData(null));
 | 
						|
 | 
						|
            if (serialName != null)
 | 
						|
                sec.AddEndElement(serialName);
 | 
						|
 | 
						|
            return (sec);
 | 
						|
        }
 | 
						|
 | 
						|
        #endregion
 | 
						|
 | 
						|
        #region PutSerialData
 | 
						|
 | 
						|
        #region ProcessValue
 | 
						|
 | 
						|
        internal override void ProcessValue(SerialElement se)
 | 
						|
        {
 | 
						|
            switch (se.Name)
 | 
						|
            {
 | 
						|
                case "EnableTextMarkup":
 | 
						|
                    EnableTextMarkup = bool.Parse(se.StringValue);
 | 
						|
                    break;
 | 
						|
 | 
						|
                case "FixedHeight":
 | 
						|
                    FixedHeight = int.Parse(se.StringValue);
 | 
						|
                    break;
 | 
						|
 | 
						|
                case "Text":
 | 
						|
                    Text = se.StringValue;
 | 
						|
                    break;
 | 
						|
 | 
						|
                default:
 | 
						|
                    base.ProcessValue(se);
 | 
						|
                    break;
 | 
						|
            }
 | 
						|
        }
 | 
						|
 | 
						|
        #endregion
 | 
						|
 | 
						|
        #endregion
 | 
						|
 | 
						|
        #region States
 | 
						|
 | 
						|
        [Flags]
 | 
						|
        private enum States : uint
 | 
						|
        {
 | 
						|
            EnableTextMarkup = (1U << 0),
 | 
						|
        }
 | 
						|
 | 
						|
        #region TestState
 | 
						|
 | 
						|
        private bool TestState(States state)
 | 
						|
        {
 | 
						|
            return ((_States & state) == state);
 | 
						|
        }
 | 
						|
 | 
						|
        #endregion
 | 
						|
 | 
						|
        #region SetState
 | 
						|
 | 
						|
        private void SetState(States state, bool value)
 | 
						|
        {
 | 
						|
            if (value == true)
 | 
						|
                _States |= state;
 | 
						|
            else
 | 
						|
                _States &= ~state;
 | 
						|
        }
 | 
						|
 | 
						|
        #endregion
 | 
						|
 | 
						|
        #endregion
 | 
						|
    }
 | 
						|
}
 |