252 lines
6.2 KiB
C#
252 lines
6.2 KiB
C#
using System.ComponentModel;
|
|
using System.Drawing;
|
|
using System.Drawing.Design;
|
|
using DevComponents.Instrumentation.Primitives;
|
|
|
|
namespace DevComponents.Instrumentation
|
|
{
|
|
public class StateRangeCollection : GenericCollection<StateRange>
|
|
{
|
|
#region GetValueRange
|
|
|
|
public StateRange GetValueRange(double value)
|
|
{
|
|
foreach (StateRange range in this)
|
|
{
|
|
if (value >= range.StartValue && value <= range.EndValue)
|
|
return (range);
|
|
}
|
|
|
|
return (null);
|
|
}
|
|
|
|
#endregion
|
|
|
|
#region ICloneable Members
|
|
|
|
public override object Clone()
|
|
{
|
|
StateRangeCollection copy = new StateRangeCollection();
|
|
|
|
CopyToItem(copy);
|
|
|
|
return (copy);
|
|
}
|
|
|
|
#endregion
|
|
|
|
#region CopyToItem
|
|
|
|
internal void CopyToItem(StateRangeCollection copy)
|
|
{
|
|
foreach (StateRange item in this)
|
|
{
|
|
StateRange ic = new StateRange();
|
|
|
|
item.CopyToItem(ic);
|
|
|
|
copy.Add(ic);
|
|
}
|
|
}
|
|
|
|
#endregion
|
|
}
|
|
|
|
public class StateRange : IndicatorRange
|
|
{
|
|
#region Private variables
|
|
|
|
private Image _Image;
|
|
private StateIndicator _StateIndicator;
|
|
|
|
private string _Text;
|
|
private Color _TextColor;
|
|
private float _TextVerticalOffset;
|
|
private float _TextHorizontalOffset;
|
|
|
|
#endregion
|
|
|
|
public StateRange()
|
|
{
|
|
TextColor = Color.Black;
|
|
}
|
|
|
|
#region Public properties
|
|
|
|
#region Image
|
|
|
|
/// <summary>
|
|
/// Gets or sets the Image to use
|
|
/// </summary>
|
|
[Browsable(true), Category("Appearance"), DefaultValue(null)]
|
|
[Description("Indicates the Image to use.")]
|
|
public Image Image
|
|
{
|
|
get { return (_Image); }
|
|
|
|
set
|
|
{
|
|
if (_Image != value)
|
|
{
|
|
_Image = value;
|
|
|
|
OnIndicatorRangeChanged();
|
|
}
|
|
}
|
|
}
|
|
|
|
#endregion
|
|
|
|
#region StateIndicator
|
|
|
|
/// <summary>
|
|
/// Gets or sets the StateIndicator
|
|
/// </summary>
|
|
[Browsable(false)]
|
|
[DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
|
|
public StateIndicator StateIndicator
|
|
{
|
|
get { return (_StateIndicator); }
|
|
internal set { _StateIndicator = value; }
|
|
}
|
|
|
|
#endregion
|
|
|
|
#region Text
|
|
|
|
/// <summary>
|
|
/// Gets or sets the text to be displayed
|
|
/// </summary>
|
|
[Browsable(true), Category("Behavior"), DefaultValue(null)]
|
|
[Description("Indicates the text to be displayed.")]
|
|
public string Text
|
|
{
|
|
get { return (_Text); }
|
|
|
|
set
|
|
{
|
|
if (_Text != value)
|
|
{
|
|
_Text = value;
|
|
|
|
OnIndicatorRangeChanged();
|
|
}
|
|
}
|
|
}
|
|
|
|
#endregion
|
|
|
|
#region TextColor
|
|
|
|
/// <summary>
|
|
/// Gets or sets the text Color
|
|
/// </summary>
|
|
[Browsable(true), Category("Appearance"), DefaultValue(typeof(Color), "Black")]
|
|
[Description("Indicates the text Color.")]
|
|
public Color TextColor
|
|
{
|
|
get { return (_TextColor); }
|
|
|
|
set
|
|
{
|
|
if (_TextColor != value)
|
|
{
|
|
_TextColor = value;
|
|
|
|
OnIndicatorRangeChanged();
|
|
}
|
|
}
|
|
}
|
|
|
|
#endregion
|
|
|
|
#region TextHorizontalOffset
|
|
|
|
/// <summary>
|
|
/// Gets or sets the horizontal distance to offset the Indicator Text, measured as a percentage
|
|
/// </summary>
|
|
[Browsable(true)]
|
|
[Category("Layout"), DefaultValue(0f)]
|
|
[Editor("DevComponents.Instrumentation.Design.OffsetRangeValueEditor, DevComponents.Instrumentation.Design, Version=14.1.0.37, Culture=neutral, PublicKeyToken=76cb4c6eb576bca5", typeof(UITypeEditor))]
|
|
[Description("Indicates the horizontal distance to offset the Indicator Text, measured as a percentage.")]
|
|
public float TextHorizontalOffset
|
|
{
|
|
get { return (_TextHorizontalOffset); }
|
|
|
|
set
|
|
{
|
|
if (_TextHorizontalOffset != value)
|
|
{
|
|
_TextHorizontalOffset = value;
|
|
|
|
OnIndicatorRangeChanged();
|
|
}
|
|
}
|
|
}
|
|
|
|
#endregion
|
|
|
|
#region TextVerticalOffset
|
|
|
|
/// <summary>
|
|
/// Gets or sets the vertical distance to offset the Indicator Text, measured as a percentage
|
|
/// </summary>
|
|
[Browsable(true)]
|
|
[Category("Layout"), DefaultValue(0f)]
|
|
[Editor("DevComponents.Instrumentation.Design.OffsetRangeValueEditor, DevComponents.Instrumentation.Design, Version=14.1.0.37, Culture=neutral, PublicKeyToken=76cb4c6eb576bca5", typeof(UITypeEditor))]
|
|
[Description("Indicates the vertical distance to offset the Indicator Text, measured as a percentage.")]
|
|
public float TextVerticalOffset
|
|
{
|
|
get { return (_TextVerticalOffset); }
|
|
|
|
set
|
|
{
|
|
if (_TextVerticalOffset != value)
|
|
{
|
|
_TextVerticalOffset = value;
|
|
|
|
OnIndicatorRangeChanged();
|
|
}
|
|
}
|
|
}
|
|
|
|
#endregion
|
|
|
|
#endregion
|
|
|
|
#region ICloneable Members
|
|
|
|
public override object Clone()
|
|
{
|
|
StateRange copy = new StateRange();
|
|
|
|
CopyToItem(copy);
|
|
|
|
return (copy);
|
|
}
|
|
|
|
#endregion
|
|
|
|
#region CopyToItem
|
|
|
|
public override void CopyToItem(GaugeItem copy)
|
|
{
|
|
StateRange c = copy as StateRange;
|
|
|
|
if (c != null)
|
|
{
|
|
base.CopyToItem(c);
|
|
|
|
c.Image = _Image;
|
|
c.Text = _Text;
|
|
c.TextColor = _TextColor;
|
|
c.TextHorizontalOffset = _TextHorizontalOffset;
|
|
c.TextVerticalOffset = _TextVerticalOffset;
|
|
}
|
|
}
|
|
|
|
#endregion
|
|
|
|
}
|
|
}
|