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);
 | |
| 			}
 | |
| 		}
 | |
| 	}
 | |
| }
 |