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