91 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
			
		
		
	
	
			91 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
namespace DevComponents.DotNetBar
 | 
						|
{
 | 
						|
	using System;
 | 
						|
	using System.Windows.Forms;
 | 
						|
	using System.Collections;
 | 
						|
 | 
						|
	/// <summary>
 | 
						|
	///		
 | 
						|
	/// </summary>
 | 
						|
	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();
 | 
						|
		}
 | 
						|
        /// <summary>
 | 
						|
        /// Returns the renderer control will be rendered with.
 | 
						|
        /// </summary>
 | 
						|
        /// <returns>The current renderer.</returns>
 | 
						|
        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);
 | 
						|
			}
 | 
						|
		}
 | 
						|
	}
 | 
						|
}
 |