using System;
using System.ComponentModel;
namespace DevComponents.Tree
{
///
/// Represents the width of the Column. Supports absolute width in Pixels and
/// relative width as percentage of the width of parent control.
///
public class ColumnWidth
{
private int m_Relative=0;
private int m_Absolute=0;
internal event EventHandler WidthChanged;
///
/// Creates new instance of the object.
///
public ColumnWidth()
{
}
///
/// Gets or sets relative width expressed as percentage between 1-100. 0 indicates that
/// absolute width will be used.
///
///
/// Relative width is expressed as percentage between 1-100 of the parent controls
/// width. 0 indicates that absolute width will be used. Absolute width always takes
/// priority over relative width. For example value of 30 assigned to this property
/// indicates that width of the column will be 30% of the total client width of the
/// control.
///
[DefaultValue(0),Browsable(true),Description("Gets or sets relative width in percent. Valid values are between 1-100 with 0 indicating that absolute width will be used.")]
public int Relative
{
get {return m_Relative;}
set
{
if(m_Relative!=value)
{
m_Relative=value;
OnSizeChanged();
}
}
}
/// Gets or sets the absolute width of the column in pixels.
///
/// Absolute width always takes precedence over the relative width of the
/// column.
///
[DefaultValue(0),Browsable(true),Description("Gets or sets the absolute width of the column in pixels.")]
public int Absolute
{
get {return m_Absolute;}
set
{
if(m_Absolute<0)
return;
if(m_Absolute!=value)
{
m_Absolute=value;
if(m_Absolute!=0)
m_Relative=0;
OnSizeChanged();
}
}
}
private void OnSizeChanged()
{
if(WidthChanged!=null)
WidthChanged(this,new EventArgs());
}
}
}