353 lines
11 KiB
C#
353 lines
11 KiB
C#
//using System;
|
|
//using System.ComponentModel;
|
|
//using System.Drawing;
|
|
//
|
|
//namespace DevComponents.DotNetBar
|
|
//{
|
|
// /// <summary>
|
|
// /// Represents container item which contains it's subitems and arranges them vertically.
|
|
// /// </summary>
|
|
// public class GroupItem:ImageItem,IContainerWordWrap
|
|
// {
|
|
// #region Private Variables
|
|
// private bool m_WordWrapSubItems=false;
|
|
// private int m_ContentLeftIndentation=0;
|
|
// private int m_ContentRightIndentation=0;
|
|
// private int m_ItemSpacing=0;
|
|
// private Rectangle m_HeaderRect=Rectangle.Empty;
|
|
//
|
|
// // Expand/Collapse button image
|
|
// private Image m_ButtonExpand=null;
|
|
// private Image m_ButtonCollapse=null;
|
|
// private eItemAlignment m_ExpandButtonAlignment=eItemAlignment.Near;
|
|
// private bool m_ExpandButtonVisible=true;
|
|
//
|
|
// // Image support
|
|
// private System.Drawing.Image m_Image=null;
|
|
// private int m_ImageIndex=-1; // Image index if image from ImageList is used
|
|
// private System.Drawing.Image m_ImageCachedIdx=null;
|
|
// #endregion
|
|
//
|
|
// #region Constructor
|
|
// /// <summary>
|
|
// /// Creates new instance of VerticalGroupItem.
|
|
// /// </summary>
|
|
// public GroupItem():this("","") {}
|
|
// /// <summary>
|
|
// /// Creates new instance of VerticalGroupItem and assigns the name to it.
|
|
// /// </summary>
|
|
// /// <param name="sItemName">Item name.</param>
|
|
// public GroupItem(string sItemName):this(sItemName,"") {}
|
|
// /// <summary>
|
|
// /// Creates new instance of VerticalGroupItem and assigns the name and text to it.
|
|
// /// </summary>
|
|
// /// <param name="sItemName">Item name.</param>
|
|
// /// <param name="ItemText">item text.</param>
|
|
// public GroupItem(string sItemName, string ItemText):base(sItemName,ItemText)
|
|
// {
|
|
// m_IsContainer=true;
|
|
// m_AllowOnlyOneSubItemExpanded=false;
|
|
//// try
|
|
//// {
|
|
//// m_HeaderStyle.Font=new Font(System.Windows.Forms.SystemInformation.MenuFont,FontStyle.Bold);
|
|
//// m_HeaderHotStyle.Font=new Font(System.Windows.Forms.SystemInformation.MenuFont,FontStyle.Bold);
|
|
//// }
|
|
//// catch(Exception e)
|
|
//// {
|
|
//// #if DEBUG
|
|
//// throw(e);
|
|
//// #endif
|
|
//// m_HeaderStyle.Font=System.Windows.Forms.SystemInformation.MenuFont.Clone() as Font;
|
|
//// m_HeaderHotStyle.Font=System.Windows.Forms.SystemInformation.MenuFont.Clone() as Font;
|
|
//// }
|
|
////
|
|
//// BarFunctions.SetExplorerBarStyle(this,m_StockStyle);
|
|
////
|
|
//// m_BackgroundStyle.VisualPropertyChanged+=new EventHandler(this.VisualPropertyChanged);
|
|
//// m_HeaderStyle.VisualPropertyChanged+=new EventHandler(this.VisualPropertyChanged);
|
|
//// m_HeaderHotStyle.VisualPropertyChanged+=new EventHandler(this.VisualPropertyChanged);
|
|
// }
|
|
// #endregion
|
|
//
|
|
// #region Internal Implementation
|
|
// /// <summary>
|
|
// /// Returns copy of ExplorerBarGroupItem item.
|
|
// /// </summary>
|
|
// public override BaseItem Copy()
|
|
// {
|
|
// VerticalGroupItem objCopy=new VerticalGroupItem();
|
|
// this.CopyToItem(objCopy);
|
|
// return objCopy;
|
|
// }
|
|
// /// <summary>
|
|
// /// Copies the VerticalGroupItem to different instance of the same type.
|
|
// /// </summary>
|
|
// /// <param name="copy">Destination VerticalGroupItem.</param>
|
|
// protected override void CopyToItem(BaseItem copy)
|
|
// {
|
|
// VerticalGroupItem objCopy=copy as VerticalGroupItem;
|
|
//
|
|
// base.CopyToItem(objCopy);
|
|
// }
|
|
// private void VisualPropertyChanged(object sender, EventArgs e)
|
|
// {
|
|
// VisualPropertyChanged();
|
|
// }
|
|
// /// <summary>
|
|
// /// Refreshes the display and applies any color scheme changes to the styles used by the item.
|
|
// /// </summary>
|
|
// internal void VisualPropertyChanged()
|
|
// {
|
|
// BarBaseControl eb=this.ContainerControl as BarBaseControl;
|
|
// if(eb!=null)
|
|
// {
|
|
// ColorScheme cs=eb.ColorScheme;
|
|
// m_BackgroundStyle.ApplyColorScheme(cs);
|
|
// m_HeaderHotStyle.ApplyColorScheme(cs);
|
|
// m_HeaderStyle.ApplyColorScheme(cs);
|
|
// }
|
|
// if(this.DesignMode)
|
|
// {
|
|
// m_NeedRecalcSize=true;
|
|
// this.Refresh();
|
|
// }
|
|
// }
|
|
// private Image GetImage()
|
|
// {
|
|
// if(m_Image!=null)
|
|
// return m_Image;
|
|
// if(m_ImageIndex>=0)
|
|
// {
|
|
// return GetImageFromImageList(m_ImageIndex);
|
|
// }
|
|
// return null;
|
|
// }
|
|
//
|
|
// private Image GetImageFromImageList(int ImageIndex)
|
|
// {
|
|
// if(ImageIndex>=0)
|
|
// {
|
|
// IOwner owner=null;
|
|
// BarBaseControl bar=null;
|
|
// if(owner==null) owner=this.GetOwner() as IOwner;
|
|
// if(bar==null) bar=this.ContainerControl as BarBaseControl;
|
|
//
|
|
// if(owner!=null)
|
|
// {
|
|
// try
|
|
// {
|
|
// if(owner.ImagesMedium!=null)
|
|
// {
|
|
// if(m_ImageCachedIdx==null)
|
|
// m_ImageCachedIdx=owner.ImagesMedium.Images[ImageIndex];
|
|
// return m_ImageCachedIdx;
|
|
// }
|
|
// }
|
|
// catch(Exception)
|
|
// {
|
|
// return null;
|
|
// }
|
|
// }
|
|
// }
|
|
// return null;
|
|
// }
|
|
//
|
|
// // Property Editor support for ImageIndex selection
|
|
// [System.ComponentModel.Browsable(false),System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)]
|
|
// public System.Windows.Forms.ImageList ImageList
|
|
// {
|
|
// get
|
|
// {
|
|
// IOwner owner=this.GetOwner() as IOwner;
|
|
// if(owner!=null)
|
|
// return owner.ImagesMedium;
|
|
// return null;
|
|
// }
|
|
// }
|
|
//
|
|
// /// <summary>
|
|
// /// Specifies the image for the group.
|
|
// /// </summary>
|
|
// [System.ComponentModel.Browsable(true),DevCoBrowsable(true),System.ComponentModel.Category("Appearance"),System.ComponentModel.Description("The image that will be displayed on the face of the item."),System.ComponentModel.DefaultValue(null),System.ComponentModel.Editor(typeof(DevComponents.DotNetBar.ImageUITypeEditor), typeof(System.Drawing.Design.UITypeEditor)),System.ComponentModel.TypeConverter(typeof(ImageConverter2))]
|
|
// public System.Drawing.Image Image
|
|
// {
|
|
// get
|
|
// {
|
|
// return m_Image;
|
|
// }
|
|
// set
|
|
// {
|
|
// m_NeedRecalcSize=true;
|
|
// m_Image=value;
|
|
// this.OnImageChanged();
|
|
// this.Refresh();
|
|
// }
|
|
// }
|
|
//
|
|
// /// <summary>
|
|
// /// Specifies the index of the image if ImageList is used. Note that GroupItem is using the image list specified in ImagesMedium property of control it belongs to.
|
|
// /// </summary>
|
|
// [System.ComponentModel.Browsable(true),DevCoBrowsable(true),System.ComponentModel.Category("Appearance"),System.ComponentModel.Description("The image list image index of the image that will be displayed on the face of the item."),System.ComponentModel.Editor(typeof(DevComponents.Editors.ImageIndexEditor), typeof(System.Drawing.Design.UITypeEditor)),System.ComponentModel.TypeConverter(typeof(System.Windows.Forms.ImageIndexConverter)),System.ComponentModel.DefaultValue(-1)]
|
|
// public int ImageIndex
|
|
// {
|
|
// get
|
|
// {
|
|
// return m_ImageIndex;
|
|
// }
|
|
// set
|
|
// {
|
|
// m_ImageCachedIdx=null;
|
|
// if(m_ImageIndex!=value)
|
|
// {
|
|
// m_ImageIndex=value;
|
|
// if(m_Name!="" && this.GlobalItem)
|
|
// {
|
|
// BarFunctions.SetProperty(this.GetOwner(),this.GetType(),m_Name,System.ComponentModel.TypeDescriptor.GetProperties(this)["ImageIndex"],m_ImageIndex);
|
|
// }
|
|
// if(m_Parent!=null)
|
|
// {
|
|
// OnImageChanged();
|
|
// m_NeedRecalcSize=true;
|
|
// this.Refresh();
|
|
// }
|
|
// }
|
|
// }
|
|
// }
|
|
// #endregion
|
|
//
|
|
// #region Sizing and Painting
|
|
// public override void RecalcSize()
|
|
// {
|
|
// System.Windows.Forms.Control objCtrl=this.ContainerControl as System.Windows.Forms.Control;
|
|
// if(!IsHandleValid(objCtrl))
|
|
// return;
|
|
//
|
|
// bool bLeft=(objCtrl.RightToLeft==System.Windows.Forms.RightToLeft.No);
|
|
// Graphics g=Graphics.FromHwnd(objCtrl.Handle);
|
|
// SizeF objStringSize=SizeF.Empty;
|
|
// System.Drawing.Size expandButtonSize=this.GetExpandButtonSize();
|
|
// System.Drawing.Image image=this.GetImage();
|
|
//
|
|
// string text=m_Text;
|
|
// if(text=="")
|
|
// text=" ";
|
|
// int textArea=m_Rect.Width-m_Margin*2;
|
|
// if(m_ExpandButtonVisible)
|
|
// textArea-=expandButtonSize.Width;
|
|
// if(image!=null)
|
|
// textArea-=(image.Width+m_Margin*2);
|
|
// if(textArea<=0)
|
|
// textArea=1;
|
|
// objStringSize=g.MeasureString(text,this.GetFont(),textArea,m_HeaderStyle.StringFormat);
|
|
// g.Dispose();
|
|
//
|
|
// m_Rect.Height=expandButtonSize.Height+m_Margin*2;
|
|
// if(m_Rect.Height<(int)objStringSize.Height+m_Margin*2)
|
|
// m_Rect.Height=(int)objStringSize.Height+m_Margin*2;
|
|
//
|
|
// if(image!=null)
|
|
// {
|
|
// int h=m_Rect.Height;
|
|
// if(image.Height>m_Rect.Height)
|
|
// m_Rect.Height=image.Height+m_Margin*2;
|
|
// }
|
|
// m_HeaderRect=new Rectangle(0,0,m_Rect.Width,m_Rect.Height);
|
|
//
|
|
// if(m_ExpandButtonVisible)
|
|
// {
|
|
// if(m_ExpandButtonAlignment==eItemAlignment.Near && bLeft || m_ExpandButtonAlignment==eItemAlignment.Far && !bLeft)
|
|
// m_ExpandButtonRect=new Rectangle(0,0,expandButtonSize.Width,m_HeaderRect.Height);
|
|
// else
|
|
// m_ExpandButtonRect=new Rectangle(m_HeaderRect.Right-expandButtonSize.Width,m_HeaderRect.Y,expandButtonSize.Width,m_HeaderRect.Height);
|
|
// }
|
|
//
|
|
// if(this.Expanded)
|
|
// {
|
|
// if(m_SubItems!=null)
|
|
// {
|
|
// int iTop=m_Rect.Bottom+1;
|
|
// int iLeft=m_Rect.Left+m_LeftIndentation;
|
|
//
|
|
// int iIndex=-1;
|
|
// foreach(BaseItem item in m_SubItems)
|
|
// {
|
|
// iIndex++;
|
|
// if(!item.Visible)
|
|
// {
|
|
// item.Displayed=false;
|
|
// continue;
|
|
// }
|
|
// item.WidthInternal=m_Rect.Width-(m_LeftIndentation+m_RightIndentation);
|
|
// item.RecalcSize();
|
|
// item.WidthInternal=m_Rect.Width-(m_LeftIndentation+m_RightIndentation);
|
|
// if(item.BeginGroup)
|
|
// {
|
|
// iTop+=3;
|
|
// }
|
|
// item.TopInternal=iTop;
|
|
// item.LeftInternal=iLeft;
|
|
// iTop+=(item.HeightInternal+m_ItemSpacing);;
|
|
// item.Displayed=true;
|
|
// }
|
|
// m_Rect.Height=iTop-m_Rect.Top+2;
|
|
// }
|
|
// }
|
|
// else
|
|
// {
|
|
// foreach(BaseItem item in m_SubItems)
|
|
// {
|
|
// item.Displayed=false;
|
|
// }
|
|
// }
|
|
//
|
|
// if(this.Expanded && this.DesignMode && this.SubItems.Count==0 && this.Parent!=null && this.Parent.SubItems.Count==1)
|
|
// {
|
|
// // Empty space to display instruction text that tells user what to do...
|
|
// m_Rect.Height+=64;
|
|
// }
|
|
//
|
|
// base.RecalcSize();
|
|
// }
|
|
//
|
|
// private Size GetExpandButtonSize()
|
|
// {
|
|
// Size size=Size.Empty;
|
|
// if(m_ButtonExpand!=null)
|
|
// size=m_ButtonExpand.Size;
|
|
// if(m_ButtonCollapse!=null)
|
|
// {
|
|
// if(m_ButtonCollapse.Height>size.Height)
|
|
// size.Height=m_ButtonCollapse.Height;
|
|
// if(m_ButtonCollapse.Width>size.Width)
|
|
// size.Width=m_ButtonCollapse.Width;
|
|
// }
|
|
//
|
|
// return size;
|
|
// }
|
|
//
|
|
// #endregion
|
|
//
|
|
// #region IContainerWordWrap
|
|
// /// <summary>
|
|
// /// Gets or sets whether items hosted inside of the container will word-wrap the text.
|
|
// /// </summary>
|
|
// [Browsable(true),DevCoBrowsable(true),DefaultValue(false),Category("Appearance"),Description("Indicates whether items hosted inside of the container will word-wrap the text.")]
|
|
// public bool WordWrapSubItems
|
|
// {
|
|
// get {return m_WordWrapSubItems;}
|
|
// set
|
|
// {
|
|
// m_WordWrapSubItems=value;
|
|
// m_NeedRecalcSize=true;
|
|
// if(this.DesignMode)
|
|
// {
|
|
// BarBaseControl bar=this.ContainerControl as BarBaseControl;
|
|
// if(bar!=null)
|
|
// bar.RecalcLayout();
|
|
// }
|
|
// }
|
|
// }
|
|
// #endregion
|
|
// }
|
|
//}
|