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