DotNet 4.8.1 build of DotNetBar
This commit is contained in:
@@ -0,0 +1,408 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Drawing.Design;
|
||||
using DevComponents.DotNetBar.Charts;
|
||||
using DevComponents.DotNetBar.Charts.Style;
|
||||
|
||||
/// <summary>
|
||||
/// Represents the collection of DataLabels.
|
||||
/// </summary>
|
||||
[Editor("DevComponents.Charts.Design.DataLabelCollectionEditor, DevComponents.Charts.Design, " +
|
||||
"Version=14.1.0.37, Culture=neutral, PublicKeyToken=90f470f34c89ccaf", typeof(UITypeEditor))]
|
||||
public class DataLabelCollection : CustomNamedCollection<DataLabel>
|
||||
{
|
||||
#region GetUniqueName
|
||||
|
||||
public string GetUniqueName()
|
||||
{
|
||||
return (GetUniqueName("DataLabel"));
|
||||
}
|
||||
|
||||
#endregion
|
||||
}
|
||||
|
||||
namespace DevComponents.DotNetBar.Charts
|
||||
{
|
||||
public class DataLabel : ChartVisualElement, IEffectiveStyle
|
||||
{
|
||||
#region Private variables
|
||||
|
||||
private string _Text;
|
||||
|
||||
private DataLabelVisualStyle _DataLabelVisualStyle;
|
||||
private EffectiveStyle<DataLabelVisualStyle> _EffectiveDataLabelStyle;
|
||||
|
||||
private object _ValueX;
|
||||
private object _ValueY;
|
||||
|
||||
private BarLabelPosition _BarLabelPosition = BarLabelPosition.NotSet;
|
||||
|
||||
#endregion
|
||||
|
||||
#region Constructors
|
||||
|
||||
/// <summary>
|
||||
/// DataLabel
|
||||
/// </summary>
|
||||
/// <param name="sp">Associated SeriesPoint</param>
|
||||
/// <param name="text">Label text</param>
|
||||
public DataLabel(SeriesPoint sp, string text)
|
||||
: this(sp)
|
||||
{
|
||||
_Text = text;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// DataLabel
|
||||
/// </summary>
|
||||
/// <param name="sp">Associated SeriesPoint</param>
|
||||
public DataLabel(SeriesPoint sp)
|
||||
: this()
|
||||
{
|
||||
if (sp.ValueX == null)
|
||||
throw new Exception("DataLabel Value X must be defined.");
|
||||
|
||||
if (sp.ValueY == null || sp.ValueY.Length == 0)
|
||||
throw new Exception("DataLabel Value Y must be defined.");
|
||||
|
||||
ValueX = sp.ValueX;
|
||||
ValueY = sp.ValueY[0];
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// DataLabel
|
||||
/// </summary>
|
||||
public DataLabel()
|
||||
{
|
||||
_EffectiveDataLabelStyle = new EffectiveStyle<DataLabelVisualStyle>(this);
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region Public properties
|
||||
|
||||
#region BarLabelPosition
|
||||
|
||||
/// <summary>
|
||||
/// Gets or sets the position of bar series labels.
|
||||
/// </summary>
|
||||
[DefaultValue(BarLabelPosition.NotSet), Category("Bar Display")]
|
||||
[Description("Indicates the position of bar series labels.")]
|
||||
public BarLabelPosition BarLabelPosition
|
||||
{
|
||||
get { return (_BarLabelPosition); }
|
||||
set { _BarLabelPosition = value; }
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region DataLabelVisualStyle
|
||||
|
||||
/// <summary>
|
||||
/// Gets or sets the visual style for the data label.
|
||||
/// </summary>
|
||||
[Category("Style")]
|
||||
[Description("Indicates the visual style for the data label.")]
|
||||
[DesignerSerializationVisibility(DesignerSerializationVisibility.Content)]
|
||||
public DataLabelVisualStyle DataLabelVisualStyle
|
||||
{
|
||||
get
|
||||
{
|
||||
if (_DataLabelVisualStyle == null)
|
||||
{
|
||||
_DataLabelVisualStyle = new DataLabelVisualStyle();
|
||||
|
||||
StyleVisualChangeHandler(null, _DataLabelVisualStyle);
|
||||
}
|
||||
|
||||
return (_DataLabelVisualStyle);
|
||||
}
|
||||
|
||||
set
|
||||
{
|
||||
if (_DataLabelVisualStyle != value)
|
||||
{
|
||||
DataLabelVisualStyle oldValue = _DataLabelVisualStyle;
|
||||
|
||||
_DataLabelVisualStyle = value;
|
||||
|
||||
OnVisualStyleChanged("DataLabelVisualStyle", oldValue, value);
|
||||
|
||||
if (oldValue != null)
|
||||
oldValue.Dispose();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region EffectiveDataLabelStyle
|
||||
|
||||
/// <summary>
|
||||
/// Gets a reference to the DataLabel effective (cached, composite) style.
|
||||
/// </summary>
|
||||
[Browsable(false)]
|
||||
[DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
|
||||
[Description("Indicates a reference to the DataLabel effective (cached, composite) style.")]
|
||||
public DataLabelVisualStyle EffectiveDataLabelStyle
|
||||
{
|
||||
get { return (_EffectiveDataLabelStyle.Style); }
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region ValueX
|
||||
|
||||
/// <summary>
|
||||
/// Gets or sets the X-Axis Value.
|
||||
/// </summary>
|
||||
[Category("Data")]
|
||||
[Description("Indicates the X-Axis Value.")]
|
||||
[TypeConverter("DevComponents.Charts.Design.PointValueConverter, DevComponents.Charts.Design," +
|
||||
"Version=14.1.0.37, Culture=neutral, PublicKeyToken=90f470f34c89ccaf")]
|
||||
public object ValueX
|
||||
{
|
||||
get { return (_ValueX); }
|
||||
set { _ValueX = value; }
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region ValueY
|
||||
|
||||
/// <summary>
|
||||
/// Gets or sets the Y-Axis Value.
|
||||
/// </summary>
|
||||
[Category("Data")]
|
||||
[Description("Indicates the Y-Axis Value.")]
|
||||
[TypeConverter("DevComponents.Charts.Design.PointValueConverter, DevComponents.Charts.Design," +
|
||||
"Version=14.1.0.37, Culture=neutral, PublicKeyToken=90f470f34c89ccaf")]
|
||||
public object ValueY
|
||||
{
|
||||
get { return (_ValueY); }
|
||||
set { _ValueY = value; }
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region Text
|
||||
|
||||
///<summary>
|
||||
/// Gets or sets the DataLabel text.
|
||||
///</summary>
|
||||
[DefaultValue(null), Category("Appearance")]
|
||||
[Description("Indicates the DataLabel text.")]
|
||||
public string Text
|
||||
{
|
||||
get { return (_Text); }
|
||||
|
||||
set
|
||||
{
|
||||
_Text = value;
|
||||
|
||||
OnPropertyChangedEx("Text", VisualChangeType.Layout);
|
||||
}
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#endregion
|
||||
|
||||
#region MeasureOverride
|
||||
|
||||
protected override void MeasureOverride(ChartLayoutInfo layoutInfo)
|
||||
{
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region ArrangeOverride
|
||||
|
||||
protected override void ArrangeOverride(ChartLayoutInfo layoutInfo)
|
||||
{
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region RenderOverride
|
||||
|
||||
protected override void RenderOverride(ChartRenderInfo renderInfo)
|
||||
{
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region Style handling
|
||||
|
||||
#region ApplyStyles
|
||||
|
||||
public override void ApplyStyles(BaseVisualStyle style)
|
||||
{
|
||||
DataLabelVisualStyle dstyle = style as DataLabelVisualStyle;
|
||||
|
||||
if (dstyle != null)
|
||||
{
|
||||
ChartSeries series = Parent as ChartSeries;
|
||||
|
||||
dstyle.ApplyStyle(series.EffectiveDataLabelStyle);
|
||||
dstyle.ApplyStyle(DataLabelVisualStyle);
|
||||
}
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region InvalidateStyle
|
||||
|
||||
///<summary>
|
||||
///Invalidate the cached Style definition
|
||||
///</summary>
|
||||
public void InvalidateStyle()
|
||||
{
|
||||
ClearEffectiveStyles();
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region ClearEffectiveStyles
|
||||
|
||||
protected override void ClearEffectiveStyles()
|
||||
{
|
||||
if (_EffectiveDataLabelStyle.InvalidateStyle() == true)
|
||||
InvalidateLayout();
|
||||
|
||||
ChartXy chartXy = ParentChartContainer as ChartXy;
|
||||
|
||||
if (chartXy != null)
|
||||
chartXy.InvalidatePointLabels();
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#endregion
|
||||
|
||||
#region Copy/CopyTo
|
||||
|
||||
public override ChartVisualElement Copy()
|
||||
{
|
||||
DataLabel copy = new DataLabel();
|
||||
|
||||
CopyTo(copy);
|
||||
|
||||
return (copy);
|
||||
}
|
||||
|
||||
public override void CopyTo(ChartVisualElement copy)
|
||||
{
|
||||
DataLabel c = copy as DataLabel;
|
||||
|
||||
if (c != null)
|
||||
{
|
||||
base.CopyTo(c);
|
||||
|
||||
c.DataLabelVisualStyle =
|
||||
(_DataLabelVisualStyle != null) ? DataLabelVisualStyle.Copy() : null;
|
||||
|
||||
c.ValueX = ValueX;
|
||||
c.ValueY = ValueY;
|
||||
|
||||
c.Text = (Text != null) ? (string)Text.Clone() : null;
|
||||
}
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region GetSerialData
|
||||
|
||||
internal override SerialElementCollection GetSerialData(string serialName)
|
||||
{
|
||||
SerialElementCollection sec = new SerialElementCollection();
|
||||
|
||||
if (serialName != null)
|
||||
{
|
||||
if (serialName.Equals("") == true)
|
||||
serialName = "DataLabel";
|
||||
|
||||
sec.AddStartElement(serialName);
|
||||
}
|
||||
|
||||
if (_DataLabelVisualStyle != null && _DataLabelVisualStyle.IsEmpty == false)
|
||||
sec.AddElement(_DataLabelVisualStyle.GetSerialData("DataLabelVisualStyle"));
|
||||
|
||||
sec.AddDataValue("ValueX", ValueX, null);
|
||||
sec.AddDataValue("ValueY", ValueY, null);
|
||||
|
||||
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 "ValueX":
|
||||
ValueX = se.DataValue;
|
||||
break;
|
||||
|
||||
case "ValueY":
|
||||
ValueY = se.DataValue;
|
||||
break;
|
||||
|
||||
case "Text":
|
||||
Text = se.StringValue;
|
||||
break;
|
||||
|
||||
default:
|
||||
base.ProcessValue(se);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region ProcessCollection
|
||||
|
||||
internal override void ProcessCollection(SerialElement se)
|
||||
{
|
||||
SerialElementCollection sec = se.Sec;
|
||||
|
||||
switch (se.Name)
|
||||
{
|
||||
case "DataLabelVisualStyle":
|
||||
sec.PutSerialData(DataLabelVisualStyle);
|
||||
break;
|
||||
|
||||
default:
|
||||
base.ProcessCollection(se);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#endregion
|
||||
|
||||
#region IDisposable
|
||||
|
||||
public override void Dispose()
|
||||
{
|
||||
DataLabelVisualStyle = null;
|
||||
|
||||
base.Dispose();
|
||||
}
|
||||
|
||||
#endregion
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user