first commit
This commit is contained in:
@@ -0,0 +1,169 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
using System.Windows.Forms;
|
||||
using System.Drawing;
|
||||
using System.ComponentModel;
|
||||
|
||||
namespace Aga.Controls.Tree.NodeControls
|
||||
{
|
||||
[DesignTimeVisible(false), ToolboxItem(false)]
|
||||
public abstract class NodeControl : Component
|
||||
{
|
||||
#region Properties
|
||||
|
||||
private TreeViewAdv _parent;
|
||||
[Browsable(false)]
|
||||
[DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
|
||||
public TreeViewAdv Parent
|
||||
{
|
||||
get { return _parent; }
|
||||
set
|
||||
{
|
||||
if (value != _parent)
|
||||
{
|
||||
if (_parent != null)
|
||||
_parent.NodeControls.Remove(this);
|
||||
|
||||
if (value != null)
|
||||
value.NodeControls.Add(this);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private IToolTipProvider _toolTipProvider;
|
||||
[Browsable(false), DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
|
||||
public IToolTipProvider ToolTipProvider
|
||||
{
|
||||
get { return _toolTipProvider; }
|
||||
set { _toolTipProvider = value; }
|
||||
}
|
||||
|
||||
private TreeColumn _parentColumn;
|
||||
public TreeColumn ParentColumn
|
||||
{
|
||||
get { return _parentColumn; }
|
||||
set
|
||||
{
|
||||
_parentColumn = value;
|
||||
if (_parent != null)
|
||||
_parent.FullUpdate();
|
||||
}
|
||||
}
|
||||
|
||||
private VerticalAlignment _verticalAlign = VerticalAlignment.Center;
|
||||
[DefaultValue(VerticalAlignment.Center)]
|
||||
public VerticalAlignment VerticalAlign
|
||||
{
|
||||
get { return _verticalAlign; }
|
||||
set
|
||||
{
|
||||
_verticalAlign = value;
|
||||
if (_parent != null)
|
||||
_parent.FullUpdate();
|
||||
}
|
||||
}
|
||||
|
||||
private int _leftMargin = 0;
|
||||
public int LeftMargin
|
||||
{
|
||||
get { return _leftMargin; }
|
||||
set
|
||||
{
|
||||
if (value < 0)
|
||||
throw new ArgumentOutOfRangeException();
|
||||
|
||||
_leftMargin = value;
|
||||
if (_parent != null)
|
||||
_parent.FullUpdate();
|
||||
}
|
||||
}
|
||||
#endregion
|
||||
|
||||
internal virtual void AssignParent(TreeViewAdv parent)
|
||||
{
|
||||
_parent = parent;
|
||||
}
|
||||
|
||||
protected virtual Rectangle GetBounds(TreeNodeAdv node, DrawContext context)
|
||||
{
|
||||
Rectangle r = context.Bounds;
|
||||
Size s = GetActualSize(node, context);
|
||||
Size bs = new Size(r.Width - LeftMargin, Math.Min(r.Height, s.Height));
|
||||
switch (VerticalAlign)
|
||||
{
|
||||
case VerticalAlignment.Top:
|
||||
return new Rectangle(new Point(r.X + LeftMargin, r.Y), bs);
|
||||
case VerticalAlignment.Bottom:
|
||||
return new Rectangle(new Point(r.X + LeftMargin, r.Bottom - s.Height), bs);
|
||||
default:
|
||||
return new Rectangle(new Point(r.X + LeftMargin, r.Y + (r.Height - s.Height) / 2), bs);
|
||||
}
|
||||
}
|
||||
|
||||
protected void CheckThread()
|
||||
{
|
||||
if (Parent != null && Control.CheckForIllegalCrossThreadCalls)
|
||||
if (Parent.InvokeRequired)
|
||||
throw new InvalidOperationException("Cross-thread calls are not allowed");
|
||||
}
|
||||
|
||||
public bool IsVisible(TreeNodeAdv node)
|
||||
{
|
||||
NodeControlValueEventArgs args = new NodeControlValueEventArgs(node);
|
||||
args.Value = true;
|
||||
OnIsVisibleValueNeeded(args);
|
||||
return Convert.ToBoolean(args.Value);
|
||||
}
|
||||
|
||||
internal Size GetActualSize(TreeNodeAdv node, DrawContext context)
|
||||
{
|
||||
if (IsVisible(node))
|
||||
{
|
||||
Size s = MeasureSize(node, context);
|
||||
return new Size(s.Width + LeftMargin, s.Height);
|
||||
}
|
||||
else
|
||||
return Size.Empty;
|
||||
}
|
||||
|
||||
public abstract Size MeasureSize(TreeNodeAdv node, DrawContext context);
|
||||
|
||||
public abstract void Draw(TreeNodeAdv node, DrawContext context);
|
||||
|
||||
public virtual string GetToolTip(TreeNodeAdv node)
|
||||
{
|
||||
if (ToolTipProvider != null)
|
||||
return ToolTipProvider.GetToolTip(node, this);
|
||||
else
|
||||
return string.Empty;
|
||||
}
|
||||
|
||||
public virtual void MouseDown(TreeNodeAdvMouseEventArgs args)
|
||||
{
|
||||
}
|
||||
|
||||
public virtual void MouseUp(TreeNodeAdvMouseEventArgs args)
|
||||
{
|
||||
}
|
||||
|
||||
public virtual void MouseDoubleClick(TreeNodeAdvMouseEventArgs args)
|
||||
{
|
||||
}
|
||||
|
||||
public virtual void KeyDown(KeyEventArgs args)
|
||||
{
|
||||
}
|
||||
|
||||
public virtual void KeyUp(KeyEventArgs args)
|
||||
{
|
||||
}
|
||||
|
||||
public event EventHandler<NodeControlValueEventArgs> IsVisibleValueNeeded;
|
||||
protected virtual void OnIsVisibleValueNeeded(NodeControlValueEventArgs args)
|
||||
{
|
||||
if (IsVisibleValueNeeded != null)
|
||||
IsVisibleValueNeeded(this, args);
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user