using System; using System.Text; using System.ComponentModel; using System.Drawing; using System.Windows.Forms; using DevComponents.DotNetBar.Rendering; namespace DevComponents.DotNetBar { /// /// Represents the slider item which allows you to select a value from predefined range. /// [Browsable(false), Designer("DevComponents.DotNetBar.Design.SimpleItemDesigner, DevComponents.DotNetBar.Design, Version=14.1.0.37, Culture=neutral, PublicKeyToken=90f470f34c89ccaf")] public class SliderItem : BaseItem { #region Private Variables private int m_Maximum = 100; private int m_Minimum = 0; private int m_Value = 0; private int m_Step = 1; private bool m_LabelVisible = true; private int m_Width = 136; private int m_LabelWidth = 38; private eSliderLabelPosition m_LabelPosition = eSliderLabelPosition.Left; private eSliderPart m_MouseOverPart = eSliderPart.None; private eSliderPart m_MouseDownPart = eSliderPart.None; private int m_ButtonSize = 18; private Size m_SlideSize = new Size(11, 15); private bool m_TrackMarker = true; private Color m_TextColor = Color.Empty; private string m_DecreaseTooltip = ""; private string m_IncreaseTooltip = ""; private string m_ItemTooltip = ""; #endregion #region Events /// /// Occurs after Value property has changed. /// public event EventHandler ValueChanged; /// /// Occurs before Value property has changed. /// public event CancelIntValueEventHandler ValueChanging; /// /// Occurs when Increase button is clicked using mouse. /// public event EventHandler IncreaseButtonClick; /// /// Occurs when Decrease button is clicked using mouse. /// public event EventHandler DecreaseButtonClick; #endregion #region Constructor, Copy /// /// Creates new instance of SliderItem. /// public SliderItem():this("","") {} /// /// Creates new instance of SliderItem and assigns the name to it. /// /// Item name. public SliderItem(string sItemName):this(sItemName,"") {} /// /// Creates new instance of SliderItem and assigns the name and text to it. /// /// Item name. /// item text. public SliderItem(string sItemName, string ItemText) : base(sItemName, ItemText) { this.ClickRepeatInterval = 200; this.MouseUpNotification = true; this.MouseDownCapture = true; } /// /// Returns copy of the item. /// public override BaseItem Copy() { SliderItem objCopy = new SliderItem(m_Name); this.CopyToItem(objCopy); return objCopy; } /// /// Copies the SliderItem specific properties to new instance of the item. /// /// New SliderItem instance. internal void InternalCopyToItem(SliderItem copy) { CopyToItem(copy); } /// /// Copies the SliderItem specific properties to new instance of the item. /// /// New SliderItem instance. protected override void CopyToItem(BaseItem copy) { SliderItem c = copy as SliderItem; base.CopyToItem(c); c.Maximum = this.Maximum; c.Minimum = this.Minimum; c.Value = this.Value; c.Text = this.Text; c.LabelWidth = this.LabelWidth; c.LabelVisible = this.LabelVisible; c.LabelPosition = this.LabelPosition; c.Width = this.Width; c.IncreaseButtonClick = this.IncreaseButtonClick; c.DecreaseButtonClick = this.DecreaseButtonClick; c.ValueChanged = this.ValueChanged; c.ValueChanging = this.ValueChanging; } protected override void Dispose(bool disposing) { DisposeClickTimer(); base.Dispose(disposing); } #endregion #region Internal Implementation public override void Paint(ItemPaintArgs p) { Rendering.BaseRenderer renderer = p.Renderer; if (renderer != null) { SliderItemRendererEventArgs e = new SliderItemRendererEventArgs(this, p.Graphics); e.ItemPaintArgs = p; renderer.DrawSliderItem(e); } else { Rendering.SliderPainter painter = PainterFactory.CreateSliderPainter(this); if (painter != null) { SliderItemRendererEventArgs e = new SliderItemRendererEventArgs(this, p.Graphics); e.ItemPaintArgs = p; painter.Paint(e); } } if (this.DesignMode && this.Focused) { Rectangle r = m_Rect; r.Inflate(-1, -1); DesignTime.DrawDesignTimeSelection(p.Graphics, r, p.Colors.ItemDesignTimeBorder); } } public override void RecalcSize() { Font font = GetFont(null); int sliderHeight = Dpi.Height(m_ButtonSize); Size sz = new Size(Dpi.Width(m_Width), sliderHeight); Control objCtrl = this.ContainerControl as Control; if (objCtrl == null || objCtrl.Disposing || objCtrl.IsDisposed) return; Graphics g = BarFunctions.CreateGraphics(objCtrl); if (g == null) return; try { if (m_LabelVisible) { Size textSize = ButtonItemLayout.MeasureItemText(this, g, sz.Width, font, eTextFormat.Default, this.IsRightToLeft); if (m_LabelPosition == eSliderLabelPosition.Left || m_LabelPosition == eSliderLabelPosition.Right) { sz.Height = Math.Max(sliderHeight, Math.Max(textSize.Height, font.Height)); sz.Width += Dpi.Width(m_LabelWidth); } else { sz.Height = sliderHeight + Math.Max(textSize.Height, font.Height); } } if (_SliderOrientation == eOrientation.Vertical) sz = new Size(sz.Height, sz.Width); m_Rect.Size = sz; UpdateLayout(); base.RecalcSize(); } finally { g.Dispose(); } } public eSliderPart HitTest(int x, int y) { eSliderPart mo = eSliderPart.None; Rectangle r = this.DecreaseBounds; r.Offset(this.Bounds.Location); if (r.Contains(x, y)) mo = eSliderPart.DecreaseButton; else { r = this.IncreaseBounds; r.Offset(this.Bounds.Location); if (r.Contains(x, y)) mo = eSliderPart.IncreaseButton; else { // Commented out to allow wider selection area for touch input //r = this.SlideBounds; //r.Offset(this.Bounds.Location); r = this.Bounds; if (r.Contains(x, y)) mo = eSliderPart.TrackArea; } } return mo; } public override void InternalMouseMove(System.Windows.Forms.MouseEventArgs objArg) { if (this.GetEnabled() && !this.DesignMode) { if (this.MouseDownPart == eSliderPart.None) { eSliderPart mo = HitTest(objArg.X, objArg.Y); if (MouseOverPart != mo) MouseOverPart = mo; } else if (this.MouseDownPart == eSliderPart.TrackArea) { // Calculate and move the tracker to the position indicates by the mouse if(this.SliderOrientation == eOrientation.Horizontal) SetValue(GetValueFromX(objArg.X), eEventSource.Mouse); else SetValue(GetValueFromY(objArg.Y), eEventSource.Mouse); } } base.InternalMouseMove(objArg); } public override void InternalMouseLeave() { if (m_MouseOverPart != eSliderPart.None) MouseOverPart = eSliderPart.None; DisposeClickTimer(); if (this.MouseDownPart != eSliderPart.None) this.MouseDownPart = eSliderPart.None; base.InternalMouseLeave(); } private void DisposeClickTimer() { if (m_ClickTimer != null) { m_ClickTimer.Stop(); m_ClickTimer.Dispose(); m_ClickTimer = null; } } /// /// Raises the IncreaseButtonClick event. /// /// Provides event arguments protected virtual void OnIncreaseButtonClick(EventArgs e) { EventHandler handler = IncreaseButtonClick; if (handler != null) handler(this, e); } /// /// Raises the DecreaseButtonClick event. /// /// Provides event arguments protected virtual void OnDecreaseButtonClick(EventArgs e) { EventHandler handler = DecreaseButtonClick; if (handler != null) handler(this, e); } private System.Windows.Forms.Timer m_ClickTimer = null; public override void InternalMouseDown(System.Windows.Forms.MouseEventArgs objArg) { if (this.GetEnabled() && !this.DesignMode && objArg.Button == MouseButtons.Left) { eSliderPart mo = HitTest(objArg.X, objArg.Y); this.MouseDownPart = mo; if (this.MouseDownPart == eSliderPart.DecreaseButton) { SetValue(this.Value - this.Step, eEventSource.Mouse); OnDecreaseButtonClick(EventArgs.Empty); } else if (this.MouseDownPart == eSliderPart.IncreaseButton) { this.PerformStep(eEventSource.Mouse); OnIncreaseButtonClick(EventArgs.Empty); } else if (mo == eSliderPart.TrackArea) { if (!m_TrackBounds.Contains(objArg.X, objArg.Y)) { // Calculate and move the tracker to the position indicates by the mouse if (this.SliderOrientation == eOrientation.Horizontal) SetValue(GetValueFromX(objArg.X), eEventSource.Mouse); else SetValue(GetValueFromY(objArg.Y), eEventSource.Mouse); } } if (this.ClickRepeatInterval > 0 && (mo == eSliderPart.IncreaseButton || mo == eSliderPart.DecreaseButton)) { if (m_ClickTimer == null) m_ClickTimer = new Timer(); m_ClickTimer.Interval = this.ClickRepeatInterval; m_ClickTimer.Tick += new EventHandler(this.ClickTimerTick); m_ClickTimer.Start(); } } base.InternalMouseDown(objArg); } private int GetValueFromX(int x) { x -= (m_SlideSize.Width - 2) / 2; Rectangle r = this.SlideBounds; r.Width -= m_SlideSize.Width; r.Offset(this.DisplayRectangle.Location); if (x <= r.X) { if (this.IsRightToLeft) return this.Maximum; else return this.Minimum; } else if (x >= r.Right) { if (this.IsRightToLeft) return this.Minimum; else return this.Maximum; } float f = (float)(x - r.X) / (float)(r.Right - r.X); if (this.IsRightToLeft) f = 1 - f; int v = this.Minimum + (int)((this.Maximum - this.Minimum) * f); if (this.Step > 1) { if (Math.Ceiling((float)((v - this.Minimum) / (float)this.Step)) * this.Step != v - this.Minimum) { v = this.Minimum + (int)Math.Ceiling((float)((v - this.Minimum) / (float)this.Step)) * this.Step; } } return v; } private int GetValueFromY(int y) { y -= (m_SlideSize.Width - 2) / 2; Rectangle r = this.SlideBounds; r.Height -= m_SlideSize.Width; r.Offset(this.DisplayRectangle.Location); if (y <= r.Y) { return this.Maximum; } else if (y >= r.Bottom) { return this.Minimum; } float f = 1- (float)(y - r.Y) / (float)(r.Bottom - r.Y); int v = this.Minimum + (int)((this.Maximum - this.Minimum) * f); if (this.Step > 1) { if (Math.Ceiling((float)((v - this.Minimum) / (float)this.Step)) * this.Step != v - this.Minimum) { v = this.Minimum + (int)Math.Ceiling((float)((v - this.Minimum) / (float)this.Step)) * this.Step; } } return v; } private void ClickTimerTick(object sender, EventArgs e) { if (this.MouseDownPart == eSliderPart.DecreaseButton) { SetValue(this.Value - this.Step, eEventSource.Mouse); OnDecreaseButtonClick(EventArgs.Empty); } else if (this.MouseDownPart == eSliderPart.IncreaseButton) { this.PerformStep(eEventSource.Mouse); OnIncreaseButtonClick(EventArgs.Empty); } } public override void InternalMouseUp(System.Windows.Forms.MouseEventArgs objArg) { DisposeClickTimer(); if(this.MouseDownPart!= eSliderPart.None) this.MouseDownPart = eSliderPart.None; base.InternalMouseUp(objArg); } /// /// Gets or sets the slider mouse over part. /// internal eSliderPart MouseOverPart { get { return m_MouseOverPart; } set { m_MouseOverPart = value; UpdateTooltip(); this.Refresh(); } } /// /// Gets or sets the slider part that mouse is pressed over. This property should not be modified and it is for internal usage only. /// [Browsable(false), DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)] public eSliderPart MouseDownPart { get { return m_MouseDownPart; } set { m_MouseDownPart = value; this.Refresh(); } } protected override void OnExternalSizeChange() { UpdateLayout(); base.OnExternalSizeChange(); } private void UpdateLayout() { bool rtl = this.IsRightToLeft; Rectangle r = new Rectangle(Point.Empty, this.DisplayRectangle.Size); int buttonSize = Dpi.Width(m_ButtonSize); if (m_LabelVisible) { int labelWidth = Dpi.Width(m_LabelWidth); if (m_LabelPosition == eSliderLabelPosition.Left && (!rtl || _SliderOrientation == eOrientation.Vertical) || m_LabelPosition == eSliderLabelPosition.Right && rtl) { if (_SliderOrientation == eOrientation.Vertical) { m_LabelBounds = new Rectangle(0, 2, r.Width, labelWidth - 2); r.Height -= labelWidth; r.Y += labelWidth; } else { m_LabelBounds = new Rectangle(2, 0, labelWidth - 2, r.Height); r.Width -= labelWidth; r.X += labelWidth; } } else if (m_LabelPosition == eSliderLabelPosition.Left && rtl || m_LabelPosition == eSliderLabelPosition.Right && (!rtl || _SliderOrientation == eOrientation.Vertical)) { if (_SliderOrientation == eOrientation.Vertical) { m_LabelBounds = new Rectangle(0, r.Height - labelWidth + 2, r.Width, labelWidth - 2); r.Height -= labelWidth; } else { m_LabelBounds = new Rectangle(r.Width - labelWidth + 2, 0, labelWidth - 2, r.Height); r.Width -= labelWidth; } } else if (m_LabelPosition == eSliderLabelPosition.Top) { Font font = GetFont(null); int h = (font != null) ? font.Height : 14; if (this.TextMarkupBody != null) h = this.TextMarkupBody.Bounds.Height; int th = buttonSize + h; if (_SliderOrientation == eOrientation.Vertical) { m_LabelBounds = new Rectangle((r.Width - th) / 2, 0, h, r.Height); r.X = m_LabelBounds.Right; r.Width = buttonSize; } else { m_LabelBounds = new Rectangle(0, (r.Height - th) / 2, r.Width, h); r.Y = m_LabelBounds.Bottom; r.Height = buttonSize; } } else if (m_LabelPosition == eSliderLabelPosition.Bottom) { Font font = GetFont(null); int h = (font != null) ? font.Height : 14; if (this.TextMarkupBody != null) h = this.TextMarkupBody.Bounds.Height; int th = buttonSize + h; if (_SliderOrientation == eOrientation.Vertical) { m_LabelBounds = new Rectangle((r.Width - th) / 2 + buttonSize, 0, h, r.Height); r.X = (r.Width - th) / 2; r.Width = buttonSize; } else { m_LabelBounds = new Rectangle(0, (r.Height - th) / 2 + buttonSize, r.Width, h); r.Y = (r.Height - th) / 2; r.Height = buttonSize; } } } else m_LabelBounds = Rectangle.Empty; if (rtl && _SliderOrientation == eOrientation.Horizontal) { m_DecreaseBounds = new Rectangle(r.Right - buttonSize, r.Y + (r.Height - buttonSize) / 2, buttonSize, buttonSize); m_IncreaseBounds = new Rectangle(r.X, r.Y + (r.Height - buttonSize) / 2, buttonSize, buttonSize); } else { if (_SliderOrientation == eOrientation.Horizontal) { m_DecreaseBounds = new Rectangle(r.X, r.Y + (r.Height - buttonSize) / 2, buttonSize, buttonSize); m_IncreaseBounds = new Rectangle(r.Right - buttonSize, r.Y + (r.Height - buttonSize) / 2, buttonSize, buttonSize); } else { m_DecreaseBounds = new Rectangle(r.X + (r.Width - buttonSize) / 2, r.Bottom - buttonSize, buttonSize, buttonSize); m_IncreaseBounds = new Rectangle(r.X + (r.Width - buttonSize) / 2, r.Y, buttonSize, buttonSize); } } if (_SliderOrientation == eOrientation.Horizontal) m_SlideBounds = new Rectangle(r.X + buttonSize, r.Y, r.Width - buttonSize * 2, r.Height); else m_SlideBounds = new Rectangle(r.X, r.Y + buttonSize, r.Width, r.Height - buttonSize * 2); } private Rectangle m_LabelBounds = Rectangle.Empty; /// /// Returns the label bounds inside of the control. /// internal Rectangle LabelBounds { get { return m_LabelBounds; } } private Rectangle m_DecreaseBounds = Rectangle.Empty; internal Rectangle DecreaseBounds { get { return m_DecreaseBounds; } } private Rectangle m_IncreaseBounds = Rectangle.Empty; internal Rectangle IncreaseBounds { get { return m_IncreaseBounds; } } private Rectangle m_SlideBounds = Rectangle.Empty; internal Rectangle SlideBounds { get { return m_SlideBounds; } } private Rectangle m_TrackBounds = Rectangle.Empty; internal Rectangle TrackBounds { get { return m_TrackBounds; } set { m_TrackBounds = value; } } /// /// Gets or sets the text associated with this item. /// [System.ComponentModel.Browsable(true), DevCoBrowsable(true), Editor("DevComponents.DotNetBar.Design.TextMarkupUIEditor, DevComponents.DotNetBar.Design, Version=14.1.0.37, Culture=neutral, PublicKeyToken=90f470f34c89ccaf", typeof(System.Drawing.Design.UITypeEditor)), System.ComponentModel.Category("Appearance"), System.ComponentModel.Description("The text contained in the item."), System.ComponentModel.Localizable(true), System.ComponentModel.DefaultValue("")] public override string Text { get { return base.Text; } set { base.Text = value; } } #region Markup Implementation /// /// Gets whether item supports text markup. Default is false. /// protected override bool IsMarkupSupported { get { return _EnableMarkup; } } private bool _EnableMarkup = true; /// /// Gets or sets whether text-markup support is enabled for items Text property. Default value is true. /// Set this property to false to display HTML or other markup in the item instead of it being parsed as text-markup. /// [DefaultValue(true), Category("Appearance"), Description("Indicates whether text-markup support is enabled for items Text property.")] public bool EnableMarkup { get { return _EnableMarkup; } set { if (_EnableMarkup != value) { _EnableMarkup = value; NeedRecalcSize = true; OnTextChanged(); } } } #endregion /// /// Returns the Font object to be used for drawing the item text. /// /// Font object. private Font GetFont(ItemPaintArgs pa) { System.Drawing.Font objFont = null; if (pa != null) objFont = pa.Font; if (objFont == null) { System.Windows.Forms.Control objCtrl = null; if (pa != null) objCtrl = pa.ContainerControl; if (objCtrl == null) objCtrl = this.ContainerControl as System.Windows.Forms.Control; if (objCtrl != null && objCtrl.Font != null) objFont = (Font)objCtrl.Font; else objFont = SystemFonts.DefaultFont; // (Font)System.Windows.Forms.SystemInformation.MenuFont; } return objFont; } /// /// Gets or sets the maximum value of the range of the control. /// [DevCoBrowsable(true), Browsable(true), Description("Gets or sets the maximum value of the range of the control."), Category("Behavior"), DefaultValue(100)] public int Maximum { get { return m_Maximum; } set { m_Maximum = value; this.Refresh(); OnAppearanceChanged(); } } /// /// Gets or sets the minimum value of the range of the control. /// [DevCoBrowsable(true), Browsable(true), Description("Gets or sets the minimum value of the range of the control."), Category("Behavior"), DefaultValue(0)] public int Minimum { get { return m_Minimum; } set { m_Minimum = value; this.Refresh(); OnAppearanceChanged(); } } /// /// Gets or sets the current position of the slider. /// [DevCoBrowsable(true), Browsable(true), Description("Gets or sets the current position of the slider."), Category("Behavior")] public int Value { get { return m_Value; } set { if (m_Value != value) { SetValue(value, eEventSource.Code); } } } private void SetValue(int value, eEventSource source) { if (value == m_Value) return; CancelIntValueEventArgs e = new CancelIntValueEventArgs(); e.NewValue = value; e.EventSource = source; OnValueChanging(e); if (e.Cancel) return; if (value < m_Minimum) m_Value = m_Minimum; else if (value > m_Maximum) m_Value = m_Maximum; else m_Value = value; OnValueChanged(e); if (ShouldSyncProperties) BarFunctions.SyncProperty(this, "Value"); this.Refresh(); OnAppearanceChanged(); ExecuteCommand(); } /// /// Gets or sets the amount by which a call to the PerformStep method increases the current position of the slider. Value must be greater than 0. /// [DevCoBrowsable(true), Browsable(true), Description("Gets or sets the amount by which a call to the PerformStep method increases the current position of the slider."), Category("Behavior"), DefaultValue(1)] public int Step { get { return m_Step; } set { if (m_Step <= 0) return; m_Step = value; } } /// /// Advances the current position of the slider by the amount of the Step property. /// public virtual void PerformStep() { PerformStep(eEventSource.Code); } /// /// Advances the current position of the slider by the amount of the Step property. /// public virtual void PerformStep(eEventSource eventSource) { SetValue(this.Value + m_Step, eventSource); } /// /// Advances the current position of the slider by the specified amount. /// /// The amount by which to increment the sliders current position. public virtual void Increment(int value) { Increment(value, eEventSource.Code); } /// /// Advances the current position of the slider by the specified amount. /// /// The amount by which to increment the sliders current position. public virtual void Increment(int value, eEventSource eventSource) { SetValue(this.Value + value, eventSource); } /// /// Gets or sets whether the text label next to the slider is displayed. /// [DevCoBrowsable(true), Browsable(true), Description("Gets or sets whether the label text is displayed."), Category("Behavior"), DefaultValue(true)] public bool LabelVisible { get { return m_LabelVisible; } set { m_LabelVisible = value; OnAppearanceChanged(); this.Refresh(); } } /// /// Gets or sets the width of the slider part of the item in pixels. Value must be greater than 0. Default value is 136. /// [Browsable(true), DevCoBrowsable(true), DefaultValue(136), System.ComponentModel.Category("Layout"), System.ComponentModel.Description("Indicates the width of the slider part of the item in pixels.")] public int Width { get { return m_Width; } set { if (m_Width == value || value<=0) return; m_Width = value; NeedRecalcSize = true; OnAppearanceChanged(); this.Refresh(); } } /// /// Gets or sets the width of the label part of the item in pixels. Value must be greater than 0. Default value is 38. /// [Browsable(true), DevCoBrowsable(true), DefaultValue(38), System.ComponentModel.Category("Layout"), System.ComponentModel.Description("Indicates width of the label part of the item in pixels.")] public int LabelWidth { get { return m_LabelWidth; } set { if (m_LabelWidth == value || value<=0) return; m_LabelWidth = value; NeedRecalcSize = true; OnAppearanceChanged(); this.Refresh(); } } /// /// Gets or sets the text label position in relationship to the slider. Default value is Left. /// [Browsable(true), DefaultValue(eSliderLabelPosition.Left), Category("Layout"), Description("Indicates text label position in relationship to the slider")] public eSliderLabelPosition LabelPosition { get { return m_LabelPosition; } set { m_LabelPosition = value; NeedRecalcSize = true; this.OnAppearanceChanged(); this.Refresh(); } } /// /// Raises the ValueChanged event. /// protected virtual void OnValueChanged() { OnValueChanged(EventArgs.Empty); } /// /// Raises the ValueChanged event. /// protected virtual void OnValueChanged(EventArgs e) { if (ValueChanged != null) ValueChanged(this, e); } /// /// Raises the ValueChanging event. /// protected virtual void OnValueChanging(CancelIntValueEventArgs e) { if (ValueChanging != null) ValueChanging(this, e); } /// /// Gets or sets whether Click event will be auto repeated when mouse button is kept pressed over the item. /// [Browsable(false), DevCoBrowsable(false), DefaultValue(false), Category("Behavior"), Description("Gets or sets whether Click event will be auto repeated when mouse button is kept pressed over the item.")] public override bool ClickAutoRepeat { get { return base.ClickAutoRepeat; } set { base.ClickAutoRepeat = value; } } /// /// Gets or sets the auto-repeat interval for the click event when mouse button is kept pressed over the item. /// [Browsable(true), DevCoBrowsable(true), System.ComponentModel.DefaultValue(200), System.ComponentModel.Category("Behavior"), System.ComponentModel.Description("Gets or sets the auto-repeat interval for the click event when mouse button is kept pressed over the item.")] public override int ClickRepeatInterval { get { return base.ClickRepeatInterval; } set { base.ClickRepeatInterval = value; } } /// /// Gets or sets whether vertical line track marker is displayed on the slide line. Default value is true. /// [Browsable(true), Category("Appearance"), DefaultValue(true), Description("Indicates whether vertical line track marker is displayed on the slide line.")] public virtual bool TrackMarker { get { return m_TrackMarker; } set { m_TrackMarker = value; this.Refresh(); } } /// /// Gets or sets the color of the label text. /// [Browsable(true), Category("Appearance"), Description("Indicates color of the label text.")] public Color TextColor { get { return m_TextColor; } set { m_TextColor = value; this.Refresh(); } } /// /// Returns whether property should be serialized. Used by Windows Forms designer. /// [EditorBrowsable(EditorBrowsableState.Never)] public bool ShouldSerializeTextColor() { return !m_TextColor.IsEmpty; } /// /// Resets the property to default value. Used by Windows Forms designer. /// [EditorBrowsable(EditorBrowsableState.Never)] public void ResetTextColor() { TextColor = Color.Empty; } /// /// Gets or sets the Key Tips access key or keys for the item when on Ribbon Control or Ribbon Bar. Use KeyTips property /// when you want to assign the one or more letters to be used to access an item. For example assigning the FN to KeyTips property /// will require the user to press F then N keys to select an item. Pressing the F letter will show only keytips for the items that start with letter F. /// [Browsable(false), Category("Appearance"), DefaultValue(""), Description("Indicates the Key Tips access key or keys for the item when on Ribbon Control or Ribbon Bar.")] public override string KeyTips { get { return base.KeyTips; } set { base.KeyTips = value; } } /// /// Gets or sets the collection of shortcut keys associated with the item. /// [Browsable(false), DevCoBrowsable(false), System.ComponentModel.Category("Design"), System.ComponentModel.Description("Indicates list of shortcut keys for this item."), System.ComponentModel.Editor("DevComponents.DotNetBar.Design.ShortcutsDesigner, DevComponents.DotNetBar.Design, Version=14.1.0.37, Culture=neutral, PublicKeyToken=90f470f34c89ccaf", typeof(System.Drawing.Design.UITypeEditor)), System.ComponentModel.TypeConverter("DevComponents.DotNetBar.Design.ShortcutsConverter, DevComponents.DotNetBar.Design, Version=14.1.0.37, Culture=neutral, PublicKeyToken=90f470f34c89ccaf"), System.ComponentModel.DesignerSerializationVisibility(System.ComponentModel.DesignerSerializationVisibility.Content)] public override ShortcutsCollection Shortcuts { get { return base.Shortcuts; } set { base.Shortcuts = value; } } /// /// Gets or sets whether item will display sub items. /// [Browsable(false), DevCoBrowsable(false), System.ComponentModel.DefaultValue(true), System.ComponentModel.Category("Behavior"), System.ComponentModel.Description("Determines whether sub-items are displayed.")] public override bool ShowSubItems { get { return base.ShowSubItems; } set { base.ShowSubItems = value; } } /// /// Specifies whether item is drawn using Themes when running on OS that supports themes like Windows XP. /// [Browsable(false), DevCoBrowsable(false), DefaultValue(false), Category("Appearance"), Description("Specifies whether item is drawn using Themes when running on OS that supports themes like Windows XP.")] public override bool ThemeAware { get { return base.ThemeAware; } set { base.ThemeAware = value; } } /// /// Gets or sets whether the item expands automatically to fill out the remaining space inside the container. Applies to Items on stretchable, no-wrap Bars only. /// [Browsable(false), DevCoBrowsable(false), System.ComponentModel.DefaultValue(false), System.ComponentModel.Category("Appearance"), System.ComponentModel.Description("Indicates whether item will stretch to consume empty space. Items on stretchable, no-wrap Bars only.")] public override bool Stretch { get { return base.Stretch; } set { base.Stretch = value; } } /// /// Gets or sets the tooltip for the Increase button of the slider. /// [Browsable(true), DefaultValue(""), Localizable(true), Category("Appearance"), Description("Indicates tooltip for the Increase button of the slider.")] public string IncreaseTooltip { get { return m_IncreaseTooltip; } set { m_IncreaseTooltip = value; UpdateTooltip(); } } /// /// Gets or sets the tooltip for the Decrease button of the slider. /// [Browsable(true), DefaultValue(""), Localizable(true), Category("Appearance"), Description("Indicates tooltip for the Increase button of the slider.")] public string DecreaseTooltip { get { return m_DecreaseTooltip; } set { m_DecreaseTooltip = value; UpdateTooltip(); } } protected override void OnTooltipChanged() { m_ItemTooltip = this.Tooltip; UpdateTooltip(); base.OnTooltipChanged(); } private void UpdateTooltip() { if (this.DesignMode) return; if (m_MouseOverPart == eSliderPart.DecreaseButton && m_DecreaseTooltip != "") { SetInternalTooltip(m_DecreaseTooltip); } else if (m_MouseOverPart == eSliderPart.IncreaseButton && m_IncreaseTooltip != "") SetInternalTooltip(m_IncreaseTooltip); else if (m_Tooltip != m_ItemTooltip) SetInternalTooltip(m_ItemTooltip); } private void SetInternalTooltip(string t) { if (m_Tooltip != t) { m_Tooltip = t; if (this.ToolTipVisible) this.ShowToolTip(); } } private eOrientation _SliderOrientation = eOrientation.Horizontal; /// /// Gets or sets the slider orientation. Default value is horizontal. /// [DefaultValue(eOrientation.Horizontal), Category("Appearance"), Description("Indicates slider orientation.")] public eOrientation SliderOrientation { get { return _SliderOrientation; } set { if (_SliderOrientation != value) { _SliderOrientation = value; NeedRecalcSize = true; this.Refresh(); } } } private Office2007SliderColorTable _ColorTable = null; /// /// Gets or sets the custom color table for the item. Color table here will override all system color table settings. /// [Browsable(false), DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)] public Office2007SliderColorTable ColorTable { get { return _ColorTable; } set { _ColorTable = value; this.Refresh(); } } #endregion } }