268 lines
		
	
	
		
			9.3 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
			
		
		
	
	
			268 lines
		
	
	
		
			9.3 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
using System;
 | 
						|
using System.Drawing;
 | 
						|
 | 
						|
namespace DevComponents.Tree.Display
 | 
						|
{
 | 
						|
	/// <summary>
 | 
						|
	/// Represents abstract renderer class for node objects.
 | 
						|
	/// </summary>
 | 
						|
	public abstract class NodeRenderer
 | 
						|
	{
 | 
						|
		#region Events
 | 
						|
		/// <summary>
 | 
						|
		/// Occurs when node background is being drawn.
 | 
						|
		/// </summary>
 | 
						|
		public event NodeRendererEventHandler RenderNodeBackground;
 | 
						|
		/// <summary>
 | 
						|
		/// Occurs when node expand part is being drawn.
 | 
						|
		/// </summary>
 | 
						|
		public event NodeExpandPartRendererEventHandler RenderNodeExpandPart;
 | 
						|
		/// <summary>
 | 
						|
		/// Occurs when node command part is being drawn.
 | 
						|
		/// </summary>
 | 
						|
		public event NodeCommandPartRendererEventHandler RenderNodeCommandPart;
 | 
						|
		/// <summary>
 | 
						|
		/// Occurs when cell bacgkround is being drawn.
 | 
						|
		/// </summary>
 | 
						|
		public event NodeCellRendererEventHandler RenderCellBackground;
 | 
						|
		/// <summary>
 | 
						|
		/// Occurs when cell check-box is being drawn.
 | 
						|
		/// </summary>
 | 
						|
		public event NodeCellRendererEventHandler RenderCellCheckBox;
 | 
						|
		/// <summary>
 | 
						|
		/// Occurs when cell image is being drawn.
 | 
						|
		/// </summary>
 | 
						|
		public event NodeCellRendererEventHandler RenderCellImage;
 | 
						|
		/// <summary>
 | 
						|
		/// Occurs when cell text is being drawn.
 | 
						|
		/// </summary>
 | 
						|
		public event NodeCellRendererEventHandler RenderCellText;
 | 
						|
		/// <summary>
 | 
						|
		/// Occurs when cell text is being drawn.
 | 
						|
		/// </summary>
 | 
						|
		public event SelectionRendererEventHandler RenderSelection;
 | 
						|
		/// <summary>
 | 
						|
		/// Occurs when node connector is being drawn.
 | 
						|
		/// </summary>
 | 
						|
		public event ConnectorRendererEventHandler RenderConnector;
 | 
						|
		
 | 
						|
		/// <summary>
 | 
						|
		/// Occurs when tree background is rendered.
 | 
						|
		/// </summary>
 | 
						|
		public event TreeBackgroundRendererEventHandler RenderTreeBackground;
 | 
						|
		#endregion
 | 
						|
		
 | 
						|
		#region Private Variables
 | 
						|
		#endregion
 | 
						|
		
 | 
						|
		#region Constructor
 | 
						|
		public NodeRenderer()
 | 
						|
		{
 | 
						|
		}
 | 
						|
		#endregion
 | 
						|
		
 | 
						|
		#region Internal Implementation
 | 
						|
		/// <summary>
 | 
						|
		/// Draws node background. If you need to provide custom rendering this is the method that you should override in your custom rendered. If you
 | 
						|
		/// do not want default rendering to occur do not call the base implementation. You can call OnRenderNodeBackground method so events can occur.
 | 
						|
		/// </summary>
 | 
						|
		/// <param name="e">Information provided for rendering.</param>
 | 
						|
		public virtual void DrawNodeBackground(NodeRendererEventArgs e)
 | 
						|
		{
 | 
						|
			OnRenderNodeBackground(e);
 | 
						|
		}
 | 
						|
		
 | 
						|
		/// <summary>
 | 
						|
		/// Raises RenderNodeBackground event.
 | 
						|
		/// </summary>
 | 
						|
		/// <param name="e">Event arguments.</param>
 | 
						|
		protected virtual void OnRenderNodeBackground(NodeRendererEventArgs e)
 | 
						|
		{
 | 
						|
			if(RenderNodeBackground!=null)
 | 
						|
				RenderNodeBackground(this,e);
 | 
						|
		}
 | 
						|
		
 | 
						|
		/// <summary>
 | 
						|
		/// Draws node expand part. If you need to provide custom rendering this is the method that you should override in your custom rendered. If you
 | 
						|
		/// do not want default rendering to occur do not call the base implementation. You can call OnRenderNodeExpandPart method so events can occur.
 | 
						|
		/// </summary>
 | 
						|
		/// <param name="e">Information provided for rendering.</param>
 | 
						|
		public virtual void DrawNodeExpandPart(NodeExpandPartRendererEventArgs e)
 | 
						|
		{
 | 
						|
			OnRenderNodeExpandPart(e);
 | 
						|
		}
 | 
						|
		
 | 
						|
		/// <summary>
 | 
						|
		/// Raises RenderNodeExpandPart event.
 | 
						|
		/// </summary>
 | 
						|
		/// <param name="e"></param>
 | 
						|
		protected virtual void OnRenderNodeExpandPart(NodeExpandPartRendererEventArgs e)
 | 
						|
		{
 | 
						|
			if(RenderNodeExpandPart!=null)
 | 
						|
				RenderNodeExpandPart(this,e);
 | 
						|
		}
 | 
						|
		
 | 
						|
		/// <summary>
 | 
						|
		/// Draws node command part. If you need to provide custom rendering this is the method that you should override in your custom rendered. If you
 | 
						|
		/// do not want default rendering to occur do not call the base implementation. You can call OnRenderNodeCommandPart method so events can occur.
 | 
						|
		/// </summary>
 | 
						|
		/// <param name="e">Information provided for rendering.</param>
 | 
						|
		public virtual void DrawNodeCommandPart(NodeCommandPartRendererEventArgs e)
 | 
						|
		{
 | 
						|
			OnRenderNodeCommandPart(e);
 | 
						|
		}
 | 
						|
		
 | 
						|
		/// <summary>
 | 
						|
		/// Raises RenderNodeCommandPart event.
 | 
						|
		/// </summary>
 | 
						|
		/// <param name="e">Event arguments.</param>
 | 
						|
		protected virtual void OnRenderNodeCommandPart(NodeCommandPartRendererEventArgs e)
 | 
						|
		{
 | 
						|
			if(RenderNodeCommandPart!=null)
 | 
						|
				RenderNodeCommandPart(this,e);
 | 
						|
		}
 | 
						|
		
 | 
						|
		/// <summary>
 | 
						|
		/// Draws cell background. If you need to provide custom rendering this is the method that you should override in your custom rendered. If you
 | 
						|
		/// do not want default rendering to occur do not call the base implementation. You can call OnRenderCellBackground method so events can occur.
 | 
						|
		/// </summary>
 | 
						|
		/// <param name="e">Information provided for rendering.</param>
 | 
						|
		public virtual void DrawCellBackground(NodeCellRendererEventArgs e)
 | 
						|
		{
 | 
						|
			OnRenderCellBackground(e);
 | 
						|
		}
 | 
						|
		
 | 
						|
		/// <summary>
 | 
						|
		/// Raises RenderCellBackground event.
 | 
						|
		/// </summary>
 | 
						|
		/// <param name="e">Event arguments</param>
 | 
						|
		protected virtual void OnRenderCellBackground(NodeCellRendererEventArgs e)
 | 
						|
		{
 | 
						|
			if(RenderCellBackground!=null)
 | 
						|
				RenderCellBackground(this, e);
 | 
						|
		}
 | 
						|
		
 | 
						|
		/// <summary>
 | 
						|
		/// Draws cell check box.  If you need to provide custom rendering this is the method that you should override in your custom rendered. If you
 | 
						|
		/// do not want default rendering to occur do not call the base implementation. You can call OnRenderCellCheckBox method so events can occur.
 | 
						|
		/// </summary>
 | 
						|
		/// <param name="e">Information provided for rendering.</param>
 | 
						|
		public virtual void DrawCellCheckBox(NodeCellRendererEventArgs e)
 | 
						|
		{
 | 
						|
			OnRenderCellCheckBox(e);
 | 
						|
		}
 | 
						|
		
 | 
						|
		/// <summary>
 | 
						|
		/// Raises RenderCellCheckBox event.
 | 
						|
		/// </summary>
 | 
						|
		/// <param name="e">Event arguments</param>
 | 
						|
		protected virtual void OnRenderCellCheckBox(NodeCellRendererEventArgs e)
 | 
						|
		{
 | 
						|
			if(RenderCellCheckBox!=null)
 | 
						|
				RenderCellCheckBox(this, e);
 | 
						|
		}
 | 
						|
		
 | 
						|
		/// <summary>
 | 
						|
		/// Draws cell image. If you need to provide custom rendering this is the method that you should override in your custom rendered. If you
 | 
						|
		/// do not want default rendering to occur do not call the base implementation. You can call OnRenderCellImage method so events can occur.
 | 
						|
		/// </summary>
 | 
						|
		/// <param name="e">Information provided for rendering.</param>
 | 
						|
		public virtual void DrawCellImage(NodeCellRendererEventArgs e)
 | 
						|
		{
 | 
						|
			OnRenderCellImage(e);
 | 
						|
		}
 | 
						|
		
 | 
						|
		/// <summary>
 | 
						|
		/// Raises RenderCellImage event.
 | 
						|
		/// </summary>
 | 
						|
		/// <param name="e">Event arguments</param>
 | 
						|
		protected virtual void OnRenderCellImage(NodeCellRendererEventArgs e)
 | 
						|
		{
 | 
						|
			if(RenderCellImage!=null)
 | 
						|
				RenderCellImage(this, e);
 | 
						|
		}
 | 
						|
		
 | 
						|
		/// <summary>
 | 
						|
		/// Draws cell text. If you need to provide custom rendering this is the method that you should override in your custom rendered. If you
 | 
						|
		/// do not want default rendering to occur do not call the base implementation. You can call OnRenderCellText method so events can occur.
 | 
						|
		/// </summary>
 | 
						|
		/// <param name="e">Information provided for rendering.</param>
 | 
						|
		public virtual void DrawCellText(NodeCellRendererEventArgs e)
 | 
						|
		{
 | 
						|
			OnRenderCellText(e);
 | 
						|
		}
 | 
						|
		
 | 
						|
		/// <summary>
 | 
						|
		/// Raises RenderCellImage event.
 | 
						|
		/// </summary>
 | 
						|
		/// <param name="e">Event arguments</param>
 | 
						|
		protected virtual void OnRenderCellText(NodeCellRendererEventArgs e)
 | 
						|
		{
 | 
						|
			if(RenderCellText!=null)
 | 
						|
				RenderCellText(this, e);
 | 
						|
		}
 | 
						|
		
 | 
						|
		/// <summary>
 | 
						|
		/// Draws selection for SelectedNode. If you need to provide custom rendering this is the method that you should override in your custom rendered. If you
 | 
						|
		/// do not want default rendering to occur do not call the base implementation. You can call OnRenderSelection method so events can occur.
 | 
						|
		/// </summary>
 | 
						|
		/// <param name="e">Information provided for rendering.</param>
 | 
						|
		public virtual void DrawSelection(SelectionRendererEventArgs e)
 | 
						|
		{
 | 
						|
			OnRenderSelection(e);
 | 
						|
		}
 | 
						|
 | 
						|
		/// <summary>
 | 
						|
		/// Raises RenderSelection event.
 | 
						|
		/// </summary>
 | 
						|
		/// <param name="e">Event data.</param>
 | 
						|
		protected virtual void OnRenderSelection(SelectionRendererEventArgs e)
 | 
						|
		{
 | 
						|
			if(RenderSelection!=null)
 | 
						|
				RenderSelection(this, e);
 | 
						|
		}
 | 
						|
		
 | 
						|
		/// <summary>
 | 
						|
		/// Draws connector between nodes. If you need to provide custom rendering this is the method that you should override in your custom rendered. If you
 | 
						|
		/// do not want default rendering to occur do not call the base implementation. You can call OnRenderConnector method so events can occur.
 | 
						|
		/// </summary>
 | 
						|
		/// <param name="e">Information provided for rendering.</param>
 | 
						|
		public virtual void DrawConnector(ConnectorRendererEventArgs e)
 | 
						|
		{
 | 
						|
			OnRenderConnector(e);
 | 
						|
		}
 | 
						|
 | 
						|
		/// <summary>
 | 
						|
		/// Raises RenderConnector event.
 | 
						|
		/// </summary>
 | 
						|
		/// <param name="e">Event data.</param>
 | 
						|
		protected virtual void OnRenderConnector(ConnectorRendererEventArgs e)
 | 
						|
		{
 | 
						|
			if(RenderConnector!=null)
 | 
						|
				RenderConnector(this, e);
 | 
						|
		}
 | 
						|
 | 
						|
		/// <summary>
 | 
						|
		/// Draws the tree background. If you need to provide custom rendering this is the method that you should override in your custom rendered. If you
 | 
						|
		/// do not want default rendering to occur do not call the base implementation. You can call OnRenderTreeBackground method so events can occur.
 | 
						|
		/// </summary>
 | 
						|
		/// <param name="e">Information provided for rendering.</param>
 | 
						|
		public virtual void DrawTreeBackground(TreeBackgroundRendererEventArgs e)
 | 
						|
		{
 | 
						|
			OnRenderTreeBackground(e);
 | 
						|
		}
 | 
						|
 | 
						|
		/// <summary>
 | 
						|
		/// Raises RenderTreeBackground event.
 | 
						|
		/// </summary>
 | 
						|
		/// <param name="e">Event data.</param>
 | 
						|
		protected virtual void OnRenderTreeBackground(TreeBackgroundRendererEventArgs e)
 | 
						|
		{
 | 
						|
			if(RenderTreeBackground!=null)
 | 
						|
				RenderTreeBackground(this, e);
 | 
						|
		}
 | 
						|
		#endregion
 | 
						|
	}
 | 
						|
 | 
						|
}
 |