#if FRAMEWORK20
using System;
using System.Collections.Generic;
using System.Text;
using System.ComponentModel;
using DevComponents.AdvTree;
namespace DevComponents.DotNetBar
{
///
/// Represents check-box style property node in AdvPropertyGrid.
///
public class PropertyCheckBoxNode : PropertyNode
{
#region Internal Implementation
///
/// Initializes a new instance of the PropertyNode class.
///
///
public PropertyCheckBoxNode(PropertyDescriptor property):base(property)
{
}
internal override void OnLoaded()
{
base.OnLoaded();
Cell cell = this.EditCell;
cell.CheckBoxStyle = eCheckBoxStyle.CheckBox;
cell.CheckBoxAlignment = eCellPartAlignment.NearCenter;
cell.CheckBoxVisible = true;
}
protected override void UpdateDisplayedValue(object propertyValue, bool refreshSubProperties)
{
base.UpdateDisplayedValue(propertyValue, refreshSubProperties);
if (propertyValue is bool)
{
this.EditCell.Checked = (bool)propertyValue;
}
else
this.EditCell.Checked = false;
}
public override void EnterEditorMode(eTreeAction action, bool focusEditor)
{
}
protected override void OnBeforeCellCheck(Cell cell, AdvTreeCellBeforeCheckEventArgs e)
{
if (this.IsReadOnly && e.Action != eTreeAction.Code)
e.Cancel = true;
else
{
if (e.Action != eTreeAction.Code)
{
bool newValue = (e.NewCheckState == System.Windows.Forms.CheckState.Checked);
e.Cancel = !ApplyValue(newValue, null);
}
}
base.OnBeforeCellCheck(cell, e);
}
protected internal override void InvokeNodeClick(object sender, EventArgs e)
{
base.InvokeNodeClick(sender, e);
if (e is TreeNodeMouseEventArgs)
{
Cell editCell = EditCell;
TreeNodeMouseEventArgs me = (TreeNodeMouseEventArgs)e;
if (editCell.Bounds.Contains(me.X, me.Y) && !editCell.CheckBoxBounds.Contains(me.X, me.Y))
editCell.SetChecked(!editCell.Checked, eTreeAction.Mouse);
}
}
#endregion
}
}
#endif