269 lines
7.8 KiB
C#
269 lines
7.8 KiB
C#
using System;
|
|
using System.ComponentModel;
|
|
using System.Drawing;
|
|
|
|
namespace DevComponents.Tree
|
|
{
|
|
/// <summary>Represents the node or tree ColumnHeader.</summary>
|
|
[ToolboxItem(false)]
|
|
public class ColumnHeader:Component
|
|
{
|
|
#region Private Variables
|
|
private string m_Text="";
|
|
private ColumnWidth m_Width=null;
|
|
private string m_StyleNormal="";
|
|
private string m_StyleMouseDown="";
|
|
private string m_StyleMouseOver="";
|
|
private string m_ColumnName="";
|
|
private bool m_Visible=true;
|
|
private Rectangle m_Bounds=Rectangle.Empty;
|
|
private bool m_SizeChanged=true;
|
|
private string m_Name="";
|
|
|
|
internal event EventHandler HeaderSizeChanged;
|
|
#endregion
|
|
|
|
#region Constructor
|
|
/// <summary>
|
|
/// Creates new instance of the object.
|
|
/// </summary>
|
|
public ColumnHeader():this("")
|
|
{
|
|
|
|
}
|
|
|
|
/// <summary>
|
|
/// Creates new instance of the object and initalizes it with text.
|
|
/// </summary>
|
|
/// <param name="text">Text to initalize object with.</param>
|
|
public ColumnHeader(string text)
|
|
{
|
|
m_Text=text;
|
|
m_Width=new ColumnWidth();
|
|
m_Width.WidthChanged+=new EventHandler(this.WidthChanged);
|
|
}
|
|
#endregion
|
|
|
|
#region Methods
|
|
/// <summary>
|
|
/// Makes a copy of ColumnHeader object.
|
|
/// </summary>
|
|
/// <returns>Returns new instance of column header object.</returns>
|
|
public virtual ColumnHeader Copy()
|
|
{
|
|
ColumnHeader c=new ColumnHeader();
|
|
c.ColumnName=this.ColumnName;
|
|
c.StyleMouseDown=this.StyleMouseDown;
|
|
c.StyleMouseOver=this.StyleMouseOver;
|
|
c.StyleNormal=this.StyleNormal;
|
|
c.Text=this.Text;
|
|
c.Visible=this.Visible;
|
|
c.Width.Absolute=this.Width.Absolute;
|
|
c.Width.Relative=this.Width.Relative;
|
|
|
|
return c;
|
|
}
|
|
#endregion
|
|
|
|
#region Properties
|
|
/// <summary>
|
|
/// Returns name of the column header that can be used to identify it from the code.
|
|
/// </summary>
|
|
[Browsable(false),Category("Design"),Description("Indicates the name used to identify column header.")]
|
|
public string Name
|
|
{
|
|
get
|
|
{
|
|
if(this.Site!=null)
|
|
m_Name=this.Site.Name;
|
|
return m_Name;
|
|
}
|
|
set
|
|
{
|
|
if(this.Site!=null)
|
|
this.Site.Name=value;
|
|
if(value==null)
|
|
m_Name="";
|
|
else
|
|
m_Name=value;
|
|
}
|
|
}
|
|
/// <summary>
|
|
/// Returns rectangle that this column occupies. If the layout has not been performed on the column the return value will be Rectangle.Empty.
|
|
/// </summary>
|
|
[Browsable(false)]
|
|
public Rectangle Bounds
|
|
{
|
|
get {return m_Bounds;}
|
|
}
|
|
/// <summary>
|
|
/// Sets the column bounds.
|
|
/// </summary>
|
|
internal void SetBounds(Rectangle bounds)
|
|
{
|
|
m_Bounds=bounds;
|
|
}
|
|
|
|
/// <summary>
|
|
/// Gets the reference to the object that represents width of the column as either
|
|
/// absolute or relative value.
|
|
/// </summary>
|
|
/// <remarks>
|
|
/// Set Width using Absolute or Relative properties of ColumnWidth object.
|
|
/// </remarks>
|
|
/// <seealso cref="ColumnWidth.Absolute">Absolute Property (DevComponents.Tree.ColumnWidth)</seealso>
|
|
/// <seealso cref="ColumnWidth.Relative">Relative Property (DevComponents.Tree.ColumnWidth)</seealso>
|
|
[Browsable(true),Category("Layout"),Description("Gets or sets the width of the column."),DesignerSerializationVisibility(DesignerSerializationVisibility.Content)]
|
|
public ColumnWidth Width
|
|
{
|
|
// TODO: Add Proper TypeConverter for ColumnWidth object and test design-time support
|
|
get {return m_Width;}
|
|
}
|
|
|
|
/// <summary>
|
|
/// Gets or sets the style class assigned to the column. Empty value indicates that
|
|
/// default style is used as specified on cell's parent's control.
|
|
/// </summary>
|
|
/// <value>
|
|
/// Name of the style assigned to the cell or an empty string indicating that default
|
|
/// style setting from tree control is applied. Default is empty string.
|
|
/// </value>
|
|
/// <remarks>
|
|
/// When property is set to an empty string the style setting from parent tree
|
|
/// controls is used. ColumnStyleNormal on TreeGX control is a root style for a cell.
|
|
/// </remarks>
|
|
/// <seealso cref="StyleMouseDown">StyleMouseDown Property</seealso>
|
|
/// <seealso cref="StyleMouseOver">StyleMouseOver Property</seealso>
|
|
[Browsable(true),DefaultValue(""),Category("Style"),Description("Indicates the style class assigned to the column.")]
|
|
public string StyleNormal
|
|
{
|
|
get {return m_StyleNormal;}
|
|
set
|
|
{
|
|
m_StyleNormal=value;
|
|
this.OnSizeChanged();
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// Gets or sets the style class assigned to the column which is applied when mouse
|
|
/// button is pressed over the header. Empty value indicates that default
|
|
/// style is used as specified on column's parent.
|
|
/// </summary>
|
|
/// <value>
|
|
/// Name of the style assigned to the column or an empty string indicating that default
|
|
/// style setting from tree control is applied. Default is empty string.
|
|
/// </value>
|
|
/// <remarks>
|
|
/// When property is set to an empty string the style setting from parent tree
|
|
/// controls is used. ColumnStyleMouseDown on TreeGX control is a root style for a
|
|
/// cell.
|
|
/// </remarks>
|
|
/// <seealso cref="StyleNormal">StyleNormal Property</seealso>
|
|
/// <seealso cref="StyleMouseOver">StyleMouseOver Property</seealso>
|
|
[Browsable(true),DefaultValue(""),Category("Style"),Description("Indicates the style class assigned to the column when mouse is down.")]
|
|
public string StyleMouseDown
|
|
{
|
|
get {return m_StyleMouseDown;}
|
|
set
|
|
{
|
|
m_StyleMouseDown=value;
|
|
this.OnSizeChanged();
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// Gets or sets the style class assigned to the column which is applied when mouse is
|
|
/// over the column. Empty value indicates that default style is used as specified on column's
|
|
/// parent control.
|
|
/// </summary>
|
|
/// <value>
|
|
/// Name of the style assigned to the column or an empty string indicating that default
|
|
/// style setting from tree control is applied. Default is empty string.
|
|
/// </value>
|
|
/// <remarks>
|
|
/// When property is set to an empty string the style setting from parent tree
|
|
/// controls is used. ColumnStyleMouseOver on TreeGX control is a root style for a
|
|
/// cell.
|
|
/// </remarks>
|
|
/// <seealso cref="StyleNormal">StyleNormal Property</seealso>
|
|
/// <seealso cref="StyleMouseDown">StyleMouseDown Property</seealso>
|
|
[Browsable(true),DefaultValue(""),Category("Style"),Description("Indicates the style class assigned to the cell when mouse is over the column.")]
|
|
public string StyleMouseOver
|
|
{
|
|
get {return m_StyleMouseOver;}
|
|
set
|
|
{
|
|
m_StyleMouseOver=value;
|
|
this.OnSizeChanged();
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// Gets or sets the name of the column in the ColumnHeaderCollection.
|
|
/// </summary>
|
|
[Browsable(true),DefaultValue(""),Category("Data"),Description("Indicates the name of the column in the ColumnHeaderCollection.")]
|
|
public string ColumnName
|
|
{
|
|
get {return m_ColumnName;}
|
|
set
|
|
{
|
|
m_ColumnName=value;
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// Gets or sets the column caption.
|
|
/// </summary>
|
|
[Browsable(true),DefaultValue(""),Category("Appearance"),Description("Indicates column caption.")]
|
|
public string Text
|
|
{
|
|
get {return m_Text;}
|
|
set
|
|
{
|
|
m_Text=value;
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// Gets or sets whether column is visible. Hidding the header column will also hide coresponding data column.
|
|
/// </summary>
|
|
[Browsable(true),DefaultValue(true),Category("Behavior"),Description("Indicates whether column is visible.")]
|
|
public bool Visible
|
|
{
|
|
get {return m_Visible;}
|
|
set
|
|
{
|
|
if(m_Visible!=value)
|
|
{
|
|
m_Visible=value;
|
|
}
|
|
}
|
|
}
|
|
#endregion
|
|
|
|
#region Internal Implementation
|
|
/// <summary>
|
|
/// Gets or sets whether column size has changed and it's layout needs to be recalculated.
|
|
/// </summary>
|
|
internal bool SizeChanged
|
|
{
|
|
get {return m_SizeChanged;}
|
|
set {m_SizeChanged=value;}
|
|
}
|
|
|
|
private void OnSizeChanged()
|
|
{
|
|
m_SizeChanged=true;
|
|
if(HeaderSizeChanged!=null)
|
|
HeaderSizeChanged(this,new EventArgs());
|
|
}
|
|
|
|
private void WidthChanged(object sender, EventArgs e)
|
|
{
|
|
this.OnSizeChanged();
|
|
}
|
|
#endregion
|
|
}
|
|
}
|