using System; using System.Collections.Generic; using System.ComponentModel; using System.Drawing; using System.Text; using System.Windows.Forms; namespace DevComponents.DotNetBar { /// /// Represents the progress steps control. /// [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 /// /// Initializes a new instance of the ProgressSteps class. /// 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 /// /// Returns collection of items on a bar. /// [DesignerSerializationVisibility(DesignerSerializationVisibility.Content), Browsable(false)] public SubItemsCollection Items { get { return _ViewContainer.SubItems; } } /// /// Gets/Sets the visual style for items and color scheme. /// [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(); } } /// /// 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. /// [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(); } /// /// Gets or sets the arrow pointer width for the StepItem objects hosted within this container. /// [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 } }