namespace DevComponents.DotNetBar { using System; using System.Windows.Forms; using System.Collections; /// /// /// internal class ItemsListBox : System.Windows.Forms.ListBox { private ArrayList m_Items; internal eDotNetBarStyle Style=eDotNetBarStyle.Office2003; internal ItemsListBox() { this.DrawMode=DrawMode.OwnerDrawFixed; m_Items=null; this.IntegralHeight=false; this.BackColor=System.Drawing.SystemColors.Control; } protected override void OnDrawItem(DrawItemEventArgs e) { base.OnDrawItem(e); if(m_Items==null || e.Index<0) return; BaseItem objItem=this.Items[e.Index] as BaseItem; e.DrawBackground(); if(objItem==null) { //e.DrawBackground(); return; } objItem.LeftInternal=e.Bounds.Left; objItem.TopInternal=e.Bounds.Top; objItem.WidthInternal=e.Bounds.Width; if ((e.State & DrawItemState.Selected) == DrawItemState.Selected) { objItem.InternalMouseEnter(); objItem.InternalMouseMove(new MouseEventArgs(MouseButtons.None, 0, objItem.LeftInternal + 2, objItem.TopInternal + 2, 0)); } ItemPaintArgs pa=new ItemPaintArgs(null,this,e.Graphics,new ColorScheme(Style)); // TODO: ADD COLOR SCHEME pa.Renderer = GetRenderer(); objItem.Paint(pa); if((e.State & DrawItemState.Selected)==DrawItemState.Selected) objItem.InternalMouseLeave(); } /// /// Returns the renderer control will be rendered with. /// /// The current renderer. private Rendering.BaseRenderer GetRenderer() { return Rendering.GlobalManager.Renderer; } /*protected virtual void OnMeasureItem(MeasureItemEventArgs e) { base.OnMeasureItem(e); }*/ internal void SetItems(ArrayList DotNetBarItems) { m_Items=DotNetBarItems; this.Items.Clear(); int iMaxHeight=0; foreach(BaseItem objItem in m_Items) { objItem.ContainerControl=this; objItem.SetIsOnCustomizeDialog(true); objItem.Visible=true; objItem.WidthInternal=this.ClientSize.Width; objItem.RecalcSize(); if(objItem.HeightInternal>iMaxHeight) iMaxHeight=objItem.HeightInternal; } if(iMaxHeight==0) iMaxHeight=16; this.ItemHeight=iMaxHeight; foreach(BaseItem objItem in m_Items) { objItem.HeightInternal=iMaxHeight; this.Items.Add(objItem); } } } }