305 lines
9.5 KiB
C#
305 lines
9.5 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.ComponentModel;
|
|
using System.Drawing;
|
|
using System.Text;
|
|
using System.Windows.Forms;
|
|
|
|
namespace DevComponents.DotNetBar
|
|
{
|
|
/// <summary>
|
|
/// Represents the progress steps control.
|
|
/// </summary>
|
|
[ToolboxBitmap(typeof(ProgressSteps), "ProgressSteps.ico"), ToolboxItem(true), Designer("DevComponents.DotNetBar.Design.ProgressStepsDesigner, DevComponents.DotNetBar.Design, Version=14.1.0.37, Culture=neutral, PublicKeyToken=90f470f34c89ccaf"), System.Runtime.InteropServices.ComVisible(false), DefaultEvent("ItemClick")]
|
|
public class ProgressSteps : ItemControl
|
|
{
|
|
#region Constructor
|
|
/// <summary>
|
|
/// Initializes a new instance of the ProgressSteps class.
|
|
/// </summary>
|
|
public ProgressSteps()
|
|
: base()
|
|
{
|
|
_ViewContainer = new StepItemContainer();
|
|
_ViewContainer.GlobalItem = false;
|
|
_ViewContainer.ContainerControl = this;
|
|
_ViewContainer.Displayed = true;
|
|
_ViewContainer.Style = eDotNetBarStyle.StyleManagerControlled;
|
|
_ViewContainer.SetOwner(this);
|
|
this.SetBaseItemContainer(_ViewContainer);
|
|
}
|
|
private StepItemContainer _ViewContainer = null;
|
|
#endregion
|
|
|
|
#region Implementation
|
|
/// <summary>
|
|
/// Returns collection of items on a bar.
|
|
/// </summary>
|
|
[DesignerSerializationVisibility(DesignerSerializationVisibility.Content), Browsable(false)]
|
|
public SubItemsCollection Items
|
|
{
|
|
get
|
|
{
|
|
return _ViewContainer.SubItems;
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// Gets/Sets the visual style for items and color scheme.
|
|
/// </summary>
|
|
[Browsable(true), DevCoBrowsable(true), Category("Appearance"), Description("Specifies the visual style of the control."), DefaultValue(eDotNetBarStyle.StyleManagerControlled)]
|
|
public eDotNetBarStyle Style
|
|
{
|
|
get
|
|
{
|
|
return _ViewContainer.Style;
|
|
}
|
|
set
|
|
{
|
|
this.ColorScheme.SwitchStyle(value);
|
|
_ViewContainer.Style = value;
|
|
this.Invalidate();
|
|
this.RecalcLayout();
|
|
}
|
|
}
|
|
|
|
private Size _PreferredSize = Size.Empty;
|
|
[Localizable(true), Browsable(false)]
|
|
public new System.Windows.Forms.Padding Padding
|
|
{
|
|
get { return base.Padding; }
|
|
set { base.Padding = value; }
|
|
}
|
|
|
|
public override Size GetPreferredSize(Size proposedSize)
|
|
{
|
|
if (!_PreferredSize.IsEmpty) return _PreferredSize;
|
|
|
|
if (!BarFunctions.IsHandleValid(this))
|
|
return base.GetPreferredSize(proposedSize);
|
|
|
|
if (this.Items.Count == 0 || !BarFunctions.IsHandleValid(this) || _ViewContainer.SubItems.Count == 0)
|
|
return new Size(base.GetPreferredSize(proposedSize).Width, Dpi.Height22);
|
|
|
|
int height = GetAutoSizePreferredHeight();
|
|
|
|
_PreferredSize = new Size(proposedSize.Width, height);
|
|
return _PreferredSize;
|
|
}
|
|
|
|
private int GetAutoSizePreferredHeight()
|
|
{
|
|
int height = ElementStyleLayout.VerticalStyleWhiteSpace(this.GetBackgroundStyle());
|
|
height += _ViewContainer.CalculatedHeight > 0 ? _ViewContainer.CalculatedHeight : 20;
|
|
return height;
|
|
}
|
|
protected override void RecalcSize()
|
|
{
|
|
base.RecalcSize();
|
|
if (this.AutoSize && this.IsHandleCreated && GetAutoSizePreferredHeight() != this.Height)
|
|
{
|
|
InvalidateAutoSize();
|
|
this.AdjustSize();
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// Gets or sets a value indicating whether the control is automatically resized to display its entire contents. You can set MaximumSize.Width property to set the maximum width used by the control.
|
|
/// </summary>
|
|
[Browsable(true), DefaultValue(false), EditorBrowsable(EditorBrowsableState.Always), DesignerSerializationVisibility(DesignerSerializationVisibility.Visible)]
|
|
public override bool AutoSize
|
|
{
|
|
get
|
|
{
|
|
return base.AutoSize;
|
|
}
|
|
set
|
|
{
|
|
if (this.AutoSize != value)
|
|
{
|
|
base.AutoSize = value;
|
|
InvalidateAutoSize();
|
|
AdjustSize();
|
|
}
|
|
}
|
|
}
|
|
|
|
private void InvalidateAutoSize()
|
|
{
|
|
_PreferredSize = Size.Empty;
|
|
}
|
|
|
|
protected override void SetBoundsCore(int x, int y, int width, int height, BoundsSpecified specified)
|
|
{
|
|
if (this.AutoSize)
|
|
{
|
|
Size preferredSize = base.PreferredSize;
|
|
if (preferredSize.Width > 0)
|
|
width = preferredSize.Width;
|
|
if (preferredSize.Height > 0)
|
|
height = preferredSize.Height;
|
|
}
|
|
base.SetBoundsCore(x, y, width, height, specified);
|
|
}
|
|
|
|
private void AdjustSize()
|
|
{
|
|
if (this.AutoSize)
|
|
{
|
|
System.Drawing.Size prefSize = base.PreferredSize;
|
|
if (prefSize.Width > 0 && prefSize.Height > 0)
|
|
this.Size = base.PreferredSize;
|
|
else if (prefSize.Height > 0)
|
|
this.Size = new Size(this.Width, base.PreferredSize.Height);
|
|
}
|
|
}
|
|
|
|
[Browsable(false), EditorBrowsable(EditorBrowsableState.Never), DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
|
|
public override Image BackgroundImage
|
|
{
|
|
get { return base.BackgroundImage; }
|
|
set { base.BackgroundImage = value; }
|
|
}
|
|
|
|
protected override void OnHandleCreated(EventArgs e)
|
|
{
|
|
base.OnHandleCreated(e);
|
|
if (this.AutoSize)
|
|
this.AdjustSize();
|
|
}
|
|
|
|
/// <summary>
|
|
/// Gets or sets the arrow pointer width for the StepItem objects hosted within this container.
|
|
/// </summary>
|
|
[DefaultValue(10), Category("Appearance"), Description("Gets or sets the arrow pointer width for the StepItem objects hosted within this container.")]
|
|
public int PointerSize
|
|
{
|
|
get { return _ViewContainer.PointerSize; }
|
|
set
|
|
{
|
|
_ViewContainer.PointerSize = value;
|
|
|
|
}
|
|
}
|
|
#endregion
|
|
|
|
#region Property Hiding
|
|
[Browsable(false)]
|
|
public override eBarImageSize ImageSize
|
|
{
|
|
get
|
|
{
|
|
return base.ImageSize;
|
|
}
|
|
set
|
|
{
|
|
base.ImageSize = value;
|
|
}
|
|
}
|
|
[Browsable(false)]
|
|
public override System.Windows.Forms.ImageList ImagesLarge
|
|
{
|
|
get
|
|
{
|
|
return base.ImagesLarge;
|
|
}
|
|
set
|
|
{
|
|
base.ImagesLarge = value;
|
|
}
|
|
}
|
|
[Browsable(false)]
|
|
public override System.Windows.Forms.ImageList ImagesMedium
|
|
{
|
|
get
|
|
{
|
|
return base.ImagesMedium;
|
|
}
|
|
set
|
|
{
|
|
base.ImagesMedium = value;
|
|
}
|
|
}
|
|
[Browsable(false)]
|
|
public override Font KeyTipsFont
|
|
{
|
|
get
|
|
{
|
|
return base.KeyTipsFont;
|
|
}
|
|
set
|
|
{
|
|
base.KeyTipsFont = value;
|
|
}
|
|
}
|
|
[Browsable(false)]
|
|
public override bool ShowShortcutKeysInToolTips
|
|
{
|
|
get
|
|
{
|
|
return base.ShowShortcutKeysInToolTips;
|
|
}
|
|
set
|
|
{
|
|
base.ShowShortcutKeysInToolTips = value;
|
|
}
|
|
}
|
|
[Browsable(false)]
|
|
public override bool ThemeAware
|
|
{
|
|
get
|
|
{
|
|
return base.ThemeAware;
|
|
}
|
|
set
|
|
{
|
|
base.ThemeAware = value;
|
|
}
|
|
}
|
|
[Browsable(false), DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
|
|
public override string Text
|
|
{
|
|
get
|
|
{
|
|
return base.Text;
|
|
}
|
|
set
|
|
{
|
|
base.Text = value;
|
|
}
|
|
}
|
|
#endregion
|
|
|
|
#region Licensing
|
|
#if !TRIAL
|
|
private string m_LicenseKey = "";
|
|
[Browsable(false), DefaultValue("")]
|
|
public string LicenseKey
|
|
{
|
|
get { return m_LicenseKey; }
|
|
set
|
|
{
|
|
if (NativeFunctions.ValidateLicenseKey(value))
|
|
return;
|
|
m_LicenseKey = (!NativeFunctions.CheckLicenseKey(value) ? "9dsjkhds7" : value);
|
|
}
|
|
}
|
|
#endif
|
|
protected override void OnPaint(PaintEventArgs e)
|
|
{
|
|
base.OnPaint(e);
|
|
#if !TRIAL
|
|
if (NativeFunctions.keyValidated2 != 266)
|
|
TextDrawing.DrawString(e.Graphics, "Invalid License", this.Font, Color.FromArgb(180, Color.Red), this.ClientRectangle, eTextFormat.Bottom | eTextFormat.HorizontalCenter);
|
|
#else
|
|
if (NativeFunctions.ColorExpAlt() || !NativeFunctions.CheckedThrough)
|
|
{
|
|
e.Graphics.Clear(SystemColors.Control);
|
|
return;
|
|
}
|
|
#endif
|
|
}
|
|
#endregion
|
|
}
|
|
}
|