664 lines
25 KiB
C#
664 lines
25 KiB
C#
using System;
|
|
using System.Text;
|
|
using System.Drawing;
|
|
using System.Drawing.Design;
|
|
using System.ComponentModel;
|
|
using System.Collections;
|
|
using DevComponents.DotNetBar.Rendering;
|
|
using System.Windows.Forms;
|
|
|
|
namespace DevComponents.DotNetBar
|
|
{
|
|
/// <summary>
|
|
/// Represents compact tree bread-crumb control.
|
|
/// </summary>
|
|
[ToolboxBitmap(typeof(CrumbBar), "CrumbBar.CrumbBar.ico"), ToolboxItem(true), Designer("DevComponents.DotNetBar.Design.CrumbBarDesigner, DevComponents.DotNetBar.Design, Version=14.1.0.37, Culture=neutral, PublicKeyToken=90f470f34c89ccaf"), System.Runtime.InteropServices.ComVisible(false), DefaultEvent("SelectedItemChanged")]
|
|
public class CrumbBar : ItemControl
|
|
{
|
|
#region Private Variables
|
|
private CrumbBarItemsCollection _Items = null;
|
|
private CrumbBarViewContainer _ViewContainer = null;
|
|
private Office2007Renderer _VistaRenderer = null;
|
|
#endregion
|
|
|
|
#region Events
|
|
/// <summary>
|
|
/// Occurs before SelectedItem has changed and provides opportunity to cancel the change. Set Cancel property on event arguments to true to cancel the change.
|
|
/// </summary>
|
|
[Description("Occurs before SelectedItem has changed and provides opportunity to cancel the change.")]
|
|
public event CrumBarSelectionEventHandler SelectedItemChanging;
|
|
/// <summary>
|
|
/// Occurs after SelectedItem has changed. The change of the selected item at this point cannot be canceled. For that use SelectedItemChanging event.
|
|
/// </summary>
|
|
public event CrumBarSelectionEventHandler SelectedItemChanged;
|
|
#endregion
|
|
|
|
#region Constructor
|
|
/// <summary>
|
|
/// Initializes a new instance of the CrumbBar class.
|
|
/// </summary>
|
|
public CrumbBar()
|
|
: base()
|
|
{
|
|
_Items = new CrumbBarItemsCollection(this);
|
|
|
|
_ViewContainer = new CrumbBarViewContainer();
|
|
_ViewContainer.GlobalItem = false;
|
|
_ViewContainer.ContainerControl = this;
|
|
_ViewContainer.Displayed = true;
|
|
_ViewContainer.Style = eDotNetBarStyle.StyleManagerControlled;
|
|
this.ColorScheme.Style = eDotNetBarStyle.StyleManagerControlled;
|
|
_ViewContainer.SetOwner(this);
|
|
InitializeVistaRenderer();
|
|
this.SetBaseItemContainer(_ViewContainer);
|
|
}
|
|
#endregion
|
|
|
|
#region Internal Implementation
|
|
private CrumbBarItem FindCrumbBarItem(IList subitems, string name)
|
|
{
|
|
foreach (CrumbBarItem item in subitems)
|
|
{
|
|
if (item.Name == name)
|
|
{
|
|
return item;
|
|
}
|
|
CrumbBarItem childItem = FindCrumbBarItem(item.SubItems, name);
|
|
if ((childItem != null)) return childItem;
|
|
}
|
|
return null;
|
|
}
|
|
/// <summary>
|
|
/// Finds CrumbBarItem with specified name.
|
|
/// </summary>
|
|
/// <param name="name">Name of item to look for</param>
|
|
/// <returns>Item or null if no item was found.</returns>
|
|
public CrumbBarItem FindByName(string name)
|
|
{
|
|
return FindCrumbBarItem(this.Items, name);
|
|
}
|
|
|
|
|
|
private CrumbBarItem _SelectedItem;
|
|
/// <summary>
|
|
/// Gets or sets currently selected item.
|
|
/// </summary>
|
|
[DefaultValue(null), Category("Appearance"), Description("Indicates currently selected item")]
|
|
public CrumbBarItem SelectedItem
|
|
{
|
|
get { return _SelectedItem; }
|
|
set
|
|
{
|
|
SetSelectedItem(value, eEventSource.Code);
|
|
}
|
|
}
|
|
|
|
internal void OnItemsCleared()
|
|
{
|
|
this.SelectedItem = null;
|
|
}
|
|
/// <summary>
|
|
/// Sets the currently selected item in the control.
|
|
/// </summary>
|
|
/// <param name="selection">Reference to selected item.</param>
|
|
/// <param name="source">Source of the event.</param>
|
|
public void SetSelectedItem(CrumbBarItem selection, eEventSource source)
|
|
{
|
|
bool raiseChangedEvents = selection != _SelectedItem;
|
|
|
|
if (raiseChangedEvents)
|
|
{
|
|
CrumbBarSelectionEventArgs eventArgs = new CrumbBarSelectionEventArgs(selection);
|
|
OnSelectedItemChanging(eventArgs);
|
|
if (eventArgs.Cancel) return;
|
|
selection = eventArgs.NewSelectedItem;
|
|
}
|
|
|
|
if (_SelectedItem != null)
|
|
_SelectedItem.IsSelected = false;
|
|
|
|
ArrayList newItems = new ArrayList();
|
|
if (selection == null)
|
|
selection = GetFirstVisibleItem();
|
|
_ViewContainer.Expanded = false; // closes any open popups
|
|
_ViewContainer.RestoreOverflowItems();
|
|
|
|
if (selection != null)
|
|
{
|
|
CrumbBarItem current = selection;
|
|
while (current != null)
|
|
{
|
|
newItems.Insert(0, GetItemView(current, true));
|
|
current = current.Parent as CrumbBarItem;
|
|
}
|
|
|
|
UpdateSelectedItemImage(selection);
|
|
}
|
|
else
|
|
UpdateSelectedItemImage(null);
|
|
|
|
// Remove current view items
|
|
_ViewContainer.ClearViewItems();
|
|
if (selection != null)
|
|
{
|
|
_ViewContainer.SubItems.AddRange((BaseItem[])newItems.ToArray(typeof(BaseItem)));
|
|
}
|
|
_ViewContainer.NeedRecalcSize = true;
|
|
|
|
_SelectedItem = selection;
|
|
if (_SelectedItem != null)
|
|
_SelectedItem.IsSelected = true;
|
|
|
|
this.RecalcLayout();
|
|
|
|
if (raiseChangedEvents)
|
|
{
|
|
CrumbBarSelectionEventArgs eventArgs = new CrumbBarSelectionEventArgs(selection);
|
|
OnSelectedItemChanged(eventArgs);
|
|
}
|
|
}
|
|
|
|
internal void RefreshView()
|
|
{
|
|
UpdateSelectedItemImage(_SelectedItem);
|
|
}
|
|
|
|
private void UpdateSelectedItemImage(CrumbBarItem selection)
|
|
{
|
|
if (selection == null)
|
|
{
|
|
_ViewContainer.ImageLabel.Visible = false;
|
|
return;
|
|
}
|
|
|
|
CompositeImage image = selection.GetImage();
|
|
if (image != null)
|
|
{
|
|
_ViewContainer.ImageLabel.Visible = true;
|
|
if (image.IsIcon)
|
|
_ViewContainer.ImageLabel.Icon = image.Icon;
|
|
else
|
|
_ViewContainer.ImageLabel.Image = image.Image;
|
|
}
|
|
else
|
|
{
|
|
_ViewContainer.ImageLabel.Visible = false;
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// Shows the selected item popup menu if it has menu items.
|
|
/// </summary>
|
|
/// <returns>true if popup was shown otherwise false</returns>
|
|
public bool ShowSelectedItemPopupMenu()
|
|
{
|
|
CrumbBarItem selectedItem = this.SelectedItem;
|
|
if (selectedItem == null) throw new NullReferenceException("SelectedItem is null");
|
|
CrumbBarItemView view = GetItemView(selectedItem, false) as CrumbBarItemView;
|
|
if (view != null && !view.Expanded && view.AttachedItem != null && view.AttachedItem.SubItems.Count > 0)
|
|
{
|
|
view.Expanded = true;
|
|
return true;
|
|
}
|
|
return false;
|
|
}
|
|
|
|
private object GetItemView(CrumbBarItem current, bool canCreateNewView)
|
|
{
|
|
for (int i = 2; i < _ViewContainer.SubItems.Count; i++)
|
|
{
|
|
CrumbBarItemView view = _ViewContainer.SubItems[i] as CrumbBarItemView;
|
|
if (view != null && view.AttachedItem == current) return view;
|
|
}
|
|
if(canCreateNewView)
|
|
return CrumbBarItemView.CreateViewForItem(current);
|
|
return null;
|
|
}
|
|
[EditorBrowsable(EditorBrowsableState.Never)]
|
|
public CrumbBarItem GetFirstVisibleItem()
|
|
{
|
|
foreach (CrumbBarItem crumbBarItem in Items)
|
|
{
|
|
if (crumbBarItem.Visible) return crumbBarItem;
|
|
}
|
|
return null;
|
|
}
|
|
|
|
/// <summary>
|
|
/// Gets whether an item is in selected path to the currently selected item as either one of the parents of selected item
|
|
/// or selected item itself.
|
|
/// </summary>
|
|
/// <param name="item">Item to test.</param>
|
|
/// <returns>true if item is in selected path otherwise false.</returns>
|
|
public bool GetIsInSelectedPath(CrumbBarItem item)
|
|
{
|
|
for (int i = 2; i < _ViewContainer.SubItems.Count; i++)
|
|
{
|
|
CrumbBarItemView view = _ViewContainer.SubItems[i] as CrumbBarItemView;
|
|
if (view != null && view.AttachedItem == item) return true;
|
|
}
|
|
return false;
|
|
}
|
|
|
|
/// <summary>
|
|
/// Gets collection of items assigned to the control.
|
|
/// </summary>
|
|
[DesignerSerializationVisibility(DesignerSerializationVisibility.Content), Editor("DevComponents.DotNetBar.Design.CrumbBarItemCollectionEditor, DevComponents.DotNetBar.Design, Version=14.1.0.37, Culture=neutral, PublicKeyToken=90f470f34c89ccaf", typeof(System.Drawing.Design.UITypeEditor))]
|
|
#if FRAMEWORK20
|
|
[Browsable(false)]
|
|
#else
|
|
[Browsable(true)]
|
|
#endif
|
|
public CrumbBarItemsCollection Items
|
|
{
|
|
get { return _Items; }
|
|
}
|
|
|
|
private eCrumbBarStyle _Style = eCrumbBarStyle.Vista;
|
|
/// <summary>
|
|
/// Gets or sets the visual style of the control. Default value is Windows Vista style.
|
|
/// </summary>
|
|
[DefaultValue(eCrumbBarStyle.Vista), Category("Appearance"), Description("Indicates visual style of the control.")]
|
|
public eCrumbBarStyle Style
|
|
{
|
|
get { return _Style; }
|
|
set
|
|
{
|
|
if (value != _Style)
|
|
{
|
|
eCrumbBarStyle oldValue = _Style;
|
|
_Style = value;
|
|
OnStyleChanged(oldValue, value);
|
|
}
|
|
}
|
|
}
|
|
protected virtual void OnStyleChanged(eCrumbBarStyle oldValue, eCrumbBarStyle newValue)
|
|
{
|
|
this.Invalidate();
|
|
}
|
|
|
|
/// <summary>
|
|
/// Gets the color table used by the Vista style renderer.
|
|
/// </summary>
|
|
[Browsable(false)]
|
|
public Office2007ColorTable VistaColorTable
|
|
{
|
|
get { return _VistaRenderer.ColorTable; }
|
|
}
|
|
|
|
/// <summary>
|
|
/// Returns the renderer control will be rendered with.
|
|
/// </summary>
|
|
/// <returns>The current renderer.</returns>
|
|
public override Rendering.BaseRenderer GetRenderer()
|
|
{
|
|
if (this.RenderMode == eRenderMode.Global && _Style == eCrumbBarStyle.Vista)
|
|
return _VistaRenderer;
|
|
return base.GetRenderer();
|
|
}
|
|
|
|
private void InitializeVistaRenderer()
|
|
{
|
|
_VistaRenderer = new Office2007Renderer();
|
|
Office2007ColorTable colorTable = _VistaRenderer.ColorTable;
|
|
colorTable.CrumbBarItemView = GetCrumbBarVistaColorTable();
|
|
// Popup menu style
|
|
colorTable.Menu.Background = new LinearGradientColorTable(ColorScheme.GetColor("FFF0F0F0"));
|
|
colorTable.Menu.Border = new LinearGradientColorTable(ColorScheme.GetColor("FF646464"));
|
|
colorTable.Menu.Side = new LinearGradientColorTable(ColorScheme.GetColor("FFF1F1F1"));
|
|
colorTable.Menu.SideBorder = new LinearGradientColorTable(ColorScheme.GetColor("FFE2E3E3"));
|
|
colorTable.Menu.SideBorderLight = new LinearGradientColorTable(ColorScheme.GetColor("FFFFFFFF"));
|
|
Office2007ButtonItemColorTable menu = colorTable.ButtonItemColors[0];
|
|
menu.Default.Text = Color.Black;
|
|
menu.MouseOver.Background = new LinearGradientColorTable(ColorScheme.GetColor("34C5EBFF"), ColorScheme.GetColor("7081D8FF"), 90);
|
|
menu.MouseOver.OuterBorder = new LinearGradientColorTable(ColorScheme.GetColor("FF96DBFA"));
|
|
menu.MouseOver.InnerBorder = new LinearGradientColorTable(ColorScheme.GetColor("A0FFFFFF"));
|
|
menu.MouseOver.Text = Color.Black;
|
|
menu.Pressed = menu.MouseOver;
|
|
}
|
|
|
|
private CrumbBarItemViewColorTable GetCrumbBarVistaColorTable()
|
|
{
|
|
return GetCrumbBarVistaColorTable(new ColorFactory());
|
|
}
|
|
|
|
internal static CrumbBarItemViewColorTable GetCrumbBarVistaColorTable(ColorFactory factory)
|
|
{
|
|
CrumbBarItemViewColorTable viewColorTable = new CrumbBarItemViewColorTable();
|
|
CrumbBarItemViewStateColorTable crumbBarViewTable = new CrumbBarItemViewStateColorTable();
|
|
viewColorTable.Default = crumbBarViewTable;
|
|
crumbBarViewTable.Foreground = Color.Black;
|
|
crumbBarViewTable = new CrumbBarItemViewStateColorTable();
|
|
viewColorTable.MouseOver = crumbBarViewTable;
|
|
crumbBarViewTable.Foreground = Color.Black;
|
|
crumbBarViewTable.Background = new BackgroundColorBlendCollection();
|
|
crumbBarViewTable.Background.AddRange(new BackgroundColorBlend[]{
|
|
new BackgroundColorBlend(factory.GetColor(ColorScheme.GetColor("EAF6FD")), 0f),
|
|
new BackgroundColorBlend(factory.GetColor(ColorScheme.GetColor("D7EFFC")), .5f),
|
|
new BackgroundColorBlend(factory.GetColor(ColorScheme.GetColor("BDE6FD")), .5f),
|
|
new BackgroundColorBlend(factory.GetColor(ColorScheme.GetColor("A6D9F4")), 1f)});
|
|
crumbBarViewTable.Border = factory.GetColor(ColorScheme.GetColor("3C7FB1"));
|
|
crumbBarViewTable.BorderLight = factory.GetColor(ColorScheme.GetColor("E0FFFFFF"));
|
|
crumbBarViewTable = new CrumbBarItemViewStateColorTable();
|
|
viewColorTable.MouseOverInactive = crumbBarViewTable;
|
|
crumbBarViewTable.Foreground = Color.Black;
|
|
crumbBarViewTable.Background = new BackgroundColorBlendCollection();
|
|
crumbBarViewTable.Background.AddRange(new BackgroundColorBlend[]{
|
|
new BackgroundColorBlend(factory.GetColor(ColorScheme.GetColor("FFF2F2F2")), 0f),
|
|
new BackgroundColorBlend(factory.GetColor(ColorScheme.GetColor("FFEAEAEA")), .5f),
|
|
new BackgroundColorBlend(factory.GetColor(ColorScheme.GetColor("FFDCDCDC")), .5f),
|
|
new BackgroundColorBlend(factory.GetColor(ColorScheme.GetColor("FFCFCFCF")), 1f)});
|
|
crumbBarViewTable.Border = factory.GetColor(ColorScheme.GetColor("FF8E8F8F"));
|
|
crumbBarViewTable.BorderLight = factory.GetColor(ColorScheme.GetColor("E0FFFFFF"));
|
|
crumbBarViewTable = new CrumbBarItemViewStateColorTable();
|
|
viewColorTable.Pressed = crumbBarViewTable;
|
|
crumbBarViewTable.Foreground = Color.Black;
|
|
crumbBarViewTable.Background = new BackgroundColorBlendCollection();
|
|
crumbBarViewTable.Background.AddRange(new BackgroundColorBlend[]{
|
|
new BackgroundColorBlend(factory.GetColor(ColorScheme.GetColor("FFC2E4F6")), 0f),
|
|
new BackgroundColorBlend(factory.GetColor(ColorScheme.GetColor("FFC2E4F6")), .5f),
|
|
new BackgroundColorBlend(factory.GetColor(ColorScheme.GetColor("FFA9D9F2")), .5f),
|
|
new BackgroundColorBlend(factory.GetColor(ColorScheme.GetColor("FF90CBEB")), 1f)});
|
|
crumbBarViewTable.Border = factory.GetColor(ColorScheme.GetColor("FF6E8D9F"));
|
|
crumbBarViewTable.BorderLight = factory.GetColor(ColorScheme.GetColor("906E8D9F"));
|
|
|
|
return viewColorTable;
|
|
}
|
|
|
|
/// <summary>
|
|
/// Raises the SelectedItemChanging event.
|
|
/// </summary>
|
|
/// <param name="e">Provides event arguments.</param>
|
|
protected virtual void OnSelectedItemChanging(CrumbBarSelectionEventArgs e)
|
|
{
|
|
CrumBarSelectionEventHandler eh = SelectedItemChanging;
|
|
if (eh != null) eh(this, e);
|
|
}
|
|
|
|
/// <summary>
|
|
/// Raises the SelectedItemChanged event.
|
|
/// </summary>
|
|
/// <param name="e">Provides event arguments.</param>
|
|
protected virtual void OnSelectedItemChanged(CrumbBarSelectionEventArgs e)
|
|
{
|
|
CrumBarSelectionEventHandler eh = SelectedItemChanged;
|
|
if (eh != null) eh(this, e);
|
|
}
|
|
|
|
protected override Size DefaultSize
|
|
{
|
|
get
|
|
{
|
|
return new Size(200, 22);
|
|
}
|
|
}
|
|
|
|
#if FRAMEWORK20
|
|
|
|
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, 22);
|
|
|
|
int height = ElementStyleLayout.VerticalStyleWhiteSpace(this.GetBackgroundStyle());
|
|
height += _ViewContainer.CalculatedHeight > 0 ? _ViewContainer.CalculatedHeight : 20;
|
|
|
|
_PreferredSize = new Size(proposedSize.Width, height);
|
|
return _PreferredSize;
|
|
}
|
|
|
|
/// <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;
|
|
}
|
|
}
|
|
|
|
[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 FRAMEWORK20
|
|
if (this.AutoSize)
|
|
this.AdjustSize();
|
|
#endif
|
|
}
|
|
#endif
|
|
private string _PathSeparator = System.IO.Path.PathSeparator.ToString();
|
|
/// <summary>
|
|
/// Gets or sets the delimiter string that the tree node path uses.
|
|
/// </summary>
|
|
[DefaultValue("\\"), Browsable(false), Description("Indicates the delimiter string that the tree node path uses.")]
|
|
public string PathSeparator
|
|
{
|
|
get { return _PathSeparator; }
|
|
set { _PathSeparator = value; }
|
|
}
|
|
/// <summary>
|
|
/// Returns full path to the given node.
|
|
/// </summary>
|
|
/// <param name="item">Node to return path to.</param>
|
|
/// <returns>Full path to the node.</returns>
|
|
internal static string GetFullPath(CrumbBarItem item, string pathSeparator)
|
|
{
|
|
if (item == null)
|
|
throw new ArgumentNullException("node");
|
|
|
|
StringBuilder sb = new StringBuilder(item.Text);
|
|
item = item.Parent as CrumbBarItem;
|
|
while (item != null)
|
|
{
|
|
sb.Insert(0, item.Text + pathSeparator);
|
|
item = item.Parent as CrumbBarItem;
|
|
}
|
|
|
|
return sb.ToString();
|
|
}
|
|
#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
|
|
}
|
|
|
|
#region Event support
|
|
/// <summary>
|
|
/// Defines delegate for CrumbBar selection events.
|
|
/// </summary>
|
|
public delegate void CrumBarSelectionEventHandler(object sender, CrumbBarSelectionEventArgs e);
|
|
/// <summary>
|
|
/// Provides data for CrumbBar selection events.
|
|
/// </summary>
|
|
public class CrumbBarSelectionEventArgs : CancelEventArgs
|
|
{
|
|
/// <summary>
|
|
/// Gets or sets newly selected item.
|
|
/// </summary>
|
|
public CrumbBarItem NewSelectedItem = null;
|
|
/// <summary>
|
|
/// Initializes a new instance of the CrumbBarSelectionEventArgs class.
|
|
/// </summary>
|
|
/// <param name="newSelectedItem"></param>
|
|
public CrumbBarSelectionEventArgs(CrumbBarItem newSelectedItem)
|
|
{
|
|
NewSelectedItem = newSelectedItem;
|
|
}
|
|
}
|
|
#endregion
|
|
}
|