using System;
using System.Drawing;
namespace DevComponents.Tree.Display
{
///
/// Represents abstract renderer class for node objects.
///
public abstract class NodeRenderer
{
#region Events
///
/// Occurs when node background is being drawn.
///
public event NodeRendererEventHandler RenderNodeBackground;
///
/// Occurs when node expand part is being drawn.
///
public event NodeExpandPartRendererEventHandler RenderNodeExpandPart;
///
/// Occurs when node command part is being drawn.
///
public event NodeCommandPartRendererEventHandler RenderNodeCommandPart;
///
/// Occurs when cell bacgkround is being drawn.
///
public event NodeCellRendererEventHandler RenderCellBackground;
///
/// Occurs when cell check-box is being drawn.
///
public event NodeCellRendererEventHandler RenderCellCheckBox;
///
/// Occurs when cell image is being drawn.
///
public event NodeCellRendererEventHandler RenderCellImage;
///
/// Occurs when cell text is being drawn.
///
public event NodeCellRendererEventHandler RenderCellText;
///
/// Occurs when cell text is being drawn.
///
public event SelectionRendererEventHandler RenderSelection;
///
/// Occurs when node connector is being drawn.
///
public event ConnectorRendererEventHandler RenderConnector;
///
/// Occurs when tree background is rendered.
///
public event TreeBackgroundRendererEventHandler RenderTreeBackground;
#endregion
#region Private Variables
#endregion
#region Constructor
public NodeRenderer()
{
}
#endregion
#region Internal Implementation
///
/// 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.
///
/// Information provided for rendering.
public virtual void DrawNodeBackground(NodeRendererEventArgs e)
{
OnRenderNodeBackground(e);
}
///
/// Raises RenderNodeBackground event.
///
/// Event arguments.
protected virtual void OnRenderNodeBackground(NodeRendererEventArgs e)
{
if(RenderNodeBackground!=null)
RenderNodeBackground(this,e);
}
///
/// 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.
///
/// Information provided for rendering.
public virtual void DrawNodeExpandPart(NodeExpandPartRendererEventArgs e)
{
OnRenderNodeExpandPart(e);
}
///
/// Raises RenderNodeExpandPart event.
///
///
protected virtual void OnRenderNodeExpandPart(NodeExpandPartRendererEventArgs e)
{
if(RenderNodeExpandPart!=null)
RenderNodeExpandPart(this,e);
}
///
/// 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.
///
/// Information provided for rendering.
public virtual void DrawNodeCommandPart(NodeCommandPartRendererEventArgs e)
{
OnRenderNodeCommandPart(e);
}
///
/// Raises RenderNodeCommandPart event.
///
/// Event arguments.
protected virtual void OnRenderNodeCommandPart(NodeCommandPartRendererEventArgs e)
{
if(RenderNodeCommandPart!=null)
RenderNodeCommandPart(this,e);
}
///
/// 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.
///
/// Information provided for rendering.
public virtual void DrawCellBackground(NodeCellRendererEventArgs e)
{
OnRenderCellBackground(e);
}
///
/// Raises RenderCellBackground event.
///
/// Event arguments
protected virtual void OnRenderCellBackground(NodeCellRendererEventArgs e)
{
if(RenderCellBackground!=null)
RenderCellBackground(this, e);
}
///
/// 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.
///
/// Information provided for rendering.
public virtual void DrawCellCheckBox(NodeCellRendererEventArgs e)
{
OnRenderCellCheckBox(e);
}
///
/// Raises RenderCellCheckBox event.
///
/// Event arguments
protected virtual void OnRenderCellCheckBox(NodeCellRendererEventArgs e)
{
if(RenderCellCheckBox!=null)
RenderCellCheckBox(this, e);
}
///
/// 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.
///
/// Information provided for rendering.
public virtual void DrawCellImage(NodeCellRendererEventArgs e)
{
OnRenderCellImage(e);
}
///
/// Raises RenderCellImage event.
///
/// Event arguments
protected virtual void OnRenderCellImage(NodeCellRendererEventArgs e)
{
if(RenderCellImage!=null)
RenderCellImage(this, e);
}
///
/// 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.
///
/// Information provided for rendering.
public virtual void DrawCellText(NodeCellRendererEventArgs e)
{
OnRenderCellText(e);
}
///
/// Raises RenderCellImage event.
///
/// Event arguments
protected virtual void OnRenderCellText(NodeCellRendererEventArgs e)
{
if(RenderCellText!=null)
RenderCellText(this, e);
}
///
/// 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.
///
/// Information provided for rendering.
public virtual void DrawSelection(SelectionRendererEventArgs e)
{
OnRenderSelection(e);
}
///
/// Raises RenderSelection event.
///
/// Event data.
protected virtual void OnRenderSelection(SelectionRendererEventArgs e)
{
if(RenderSelection!=null)
RenderSelection(this, e);
}
///
/// 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.
///
/// Information provided for rendering.
public virtual void DrawConnector(ConnectorRendererEventArgs e)
{
OnRenderConnector(e);
}
///
/// Raises RenderConnector event.
///
/// Event data.
protected virtual void OnRenderConnector(ConnectorRendererEventArgs e)
{
if(RenderConnector!=null)
RenderConnector(this, e);
}
///
/// 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.
///
/// Information provided for rendering.
public virtual void DrawTreeBackground(TreeBackgroundRendererEventArgs e)
{
OnRenderTreeBackground(e);
}
///
/// Raises RenderTreeBackground event.
///
/// Event data.
protected virtual void OnRenderTreeBackground(TreeBackgroundRendererEventArgs e)
{
if(RenderTreeBackground!=null)
RenderTreeBackground(this, e);
}
#endregion
}
}