using System; using System.ComponentModel; using System.Windows.Forms; using DevComponents.Charts.TextMarkup; using DevComponents.DotNetBar.Charts.Style; namespace DevComponents.DotNetBar.Charts { /// /// ChartNote. /// 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 /// /// Gets or sets whether text-markup support is enabled /// [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 /// /// Occurs when a text markup link is clicked /// protected virtual void TextMarkupLinkClick(object sender, EventArgs e) { HyperLink link = sender as HyperLink; if (link != null) ChartControl.DoChartTitleMarkupLinkClickEvent(this, link); } #endregion #endregion #region PlainText /// /// Gets text without text-markup (if text-markup is used in Text) /// [Browsable(false), EditorBrowsable(EditorBrowsableState.Never)] public string PlainText { get { return (_TextMarkup != null ? _TextMarkup.PlainText : _Text); } } #endregion #region FixedHeight /// /// Gets or sets the fixed Text height (0 to auto-size) /// [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 /// /// Gets or sets the item Text. /// [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 } }