#if FRAMEWORK20 using System; using System.Text; using System.Windows.Forms; using System.Drawing; using System.ComponentModel; namespace DevComponents.Editors { public class VisualItem { #region Private Variables #endregion #region Events /// /// Occurs when item arrange becomes invalid. /// public event EventHandler ArrangeInvalid; /// /// Occurs when item appearance becomes invalid and items needs to be repainted. /// public event EventHandler RenderInvalid; /// /// Occurs when item needs to signal to parent control that MouseHover needs to be reset usually in response to tooltip hiding. /// public event EventHandler ResetMouseHover; /// /// Occurs when item is clicked. /// public event EventHandler Click; /// /// Occurs when item is clicked using mouse. /// public event MouseEventHandler MouseClick; /// /// Occurs when mouse button is pressed over the item. /// public event MouseEventHandler MouseDown; /// /// Occurs when mouse button is pressed over the item. /// public event MouseEventHandler MouseUp; /// /// Occurs when mouse hovers over the item. /// public event EventHandler MouseHover; #endregion #region Constructor #endregion #region Internal Implementation internal virtual void ProcessMouseEnter() { if (this.GetIsEnabled()) OnMouseEnter(); } protected virtual void OnMouseEnter() { } internal virtual void ProcessMouseLeave() { if (this.GetIsEnabled()) OnMouseLeave(); } protected virtual void OnMouseLeave() { } internal virtual void ProcessMouseMove(MouseEventArgs e) { if (this.GetIsEnabled()) OnMouseMove(e); } protected virtual void OnMouseMove(MouseEventArgs e) { } internal virtual void ProcessMouseWheel(MouseEventArgs e) { if (this.GetIsEnabled()) OnMouseWheel(e); } protected virtual void OnMouseWheel(MouseEventArgs e) { } internal virtual void ProcessMouseDown(MouseEventArgs e) { if (this.GetIsEnabled()) OnMouseDown(e); } protected virtual void OnMouseDown(MouseEventArgs e) { if (MouseDown != null) MouseDown(this, e); } internal virtual void ProcessMouseUp(MouseEventArgs e) { if (this.GetIsEnabled()) OnMouseUp(e); } protected virtual void OnMouseUp(MouseEventArgs e) { if (MouseUp != null) MouseUp(this, e); } internal virtual void ProcessMouseHover(EventArgs e) { if (this.GetIsEnabled()) OnMouseHover(e); } protected virtual void OnMouseHover(EventArgs e) { if (MouseHover != null) MouseHover(this, e); } internal virtual void ProcessClick() { if (this.GetIsEnabled()) OnClick(EventArgs.Empty); } protected virtual void OnClick(EventArgs e) { if (Click != null) Click(this, e); } internal virtual void ProcessMouseClick(MouseEventArgs e) { if (this.GetIsEnabled()) OnMouseClick(e); } protected virtual void OnMouseClick(MouseEventArgs e) { if (MouseClick != null) MouseClick(this, e); } internal virtual void ProcessKeyDown(KeyEventArgs e) { OnKeyDown(e); } protected virtual void OnKeyDown(KeyEventArgs e) { } internal virtual void ProcessKeyUp(KeyEventArgs e) { OnKeyUp(e); } protected virtual void OnKeyUp(KeyEventArgs e) { } internal virtual void ProcessKeyPress(KeyPressEventArgs e) { OnKeyPress(e); } protected virtual void OnKeyPress(KeyPressEventArgs e) { } internal virtual bool ProcessCmdKey(ref Message msg, Keys keyData) { return OnCmdKey(ref msg, keyData); } protected virtual bool OnCmdKey(ref Message msg, Keys keyData) { return false; } internal virtual void ProcessGotFocus() { OnGotFocus(); } protected virtual void OnGotFocus() { _IsFocused = true; OnFocusChanged(); } internal virtual void ProcessLostFocus() { OnLostFocus(); } protected virtual void OnLostFocus() { _IsFocused = false; OnFocusChanged(); } protected virtual void OnFocusChanged() { } internal virtual void ProcessPaint(PaintInfo p) { if (!IsRendered) return; OnPaint(p); } protected virtual void OnPaint(PaintInfo p) { } private bool _Focusable = false; public bool Focusable { get { return _Focusable; } set { if (_Focusable != value) { _Focusable = value; OnFocusableChanged(); } } } protected virtual void OnFocusableChanged() { } private bool _Enabled = true; /// /// Gets or sets whether item is Enabled. /// [DefaultValue(true)] public bool Enabled { get { return _Enabled; } set { if (_Enabled != value) { _Enabled = value; OnRenderInvalid(); } } } protected virtual bool GetIsEnabled() { if (!_Enabled) return _Enabled; VisualItem p = this.Parent; while (p != null) { if (!p.Enabled) return false; p = p.Parent; } return _Enabled; } protected virtual bool GetIsEnabled(PaintInfo p) { return p.ParentEnabled && _Enabled; } private bool _Visible = true; public bool Visible { get { return _Visible; } set { if (_Visible != value) { _Visible = value; OnVisibleChanged(); } } } protected virtual void OnVisibleChanged() { if (_Parent != null) { _Parent.OnChildItemVisibleChanged(this); } } private bool _IsRendered = true; /// /// Gets or sets whether visual is rendered. Default value is true. /// public virtual bool IsRendered { get { return _IsRendered; } set { _IsRendered = value; } } public virtual void InvalidateArrange() { _RenderBounds = Rectangle.Empty; _Location = Point.Empty; _IsLayoutValid = false; if (_Parent != null) _Parent.InvalidateArrange(); OnArrangeInvalid(); } public virtual void InvalidateRender() { if (_Parent != null) _Parent.InvalidateRender(); OnRenderInvalid(); } /// /// Raises the RenderInvalid event. /// protected virtual void OnRenderInvalid() { if (RenderInvalid != null) RenderInvalid(this, new EventArgs()); } /// /// Raises the ArrangeInvalid event. /// protected virtual void OnArrangeInvalid() { if (ArrangeInvalid != null) ArrangeInvalid(this, new EventArgs()); } private VisualGroup _Parent; /// /// Gets the parent of the item. /// public VisualGroup Parent { get { return _Parent; } internal set { if (_Parent != value) { _Parent = value; OnParentChanged(); } } } protected virtual void OnParentChanged() { } private Size _ItemSize = Size.Empty; public Size Size { get { return _ItemSize; } internal set { _ItemSize = value; } } private Rectangle _RenderBounds = Rectangle.Empty; public Rectangle RenderBounds { get { return _RenderBounds; } internal set { _RenderBounds = value; } } private Point _Location; /// /// Gets the relative location of the element inside of its parent item. /// public Point Location { get { return _Location; } internal set { _Location = value; } } private bool _IsRightToLeft; public bool IsRightToLeft { get { return _IsRightToLeft; } set { if (_IsRightToLeft != value) { _IsRightToLeft = value; OnIsRightToLeftChanged(); } } } protected virtual void OnIsRightToLeftChanged() { InvalidateArrange(); } private bool _IsLayoutValid = false; public virtual bool IsLayoutValid { get { return _IsLayoutValid; } } public virtual void PerformLayout(PaintInfo pi) { _IsLayoutValid = true; } private bool _IsFocused = false; public bool IsFocused { get { return _IsFocused; } } private eItemAlignment _Alignment = eItemAlignment.Left; /// /// Gets or sets the item horizontal alignment inside of the parent group. Default value is left. /// [DefaultValue(eItemAlignment.Left)] public eItemAlignment Alignment { get { return _Alignment; } set { if (_Alignment != value) { _Alignment = value; this.InvalidateArrange(); } } } private eSystemItemType _ItemType = eSystemItemType.Default; internal eSystemItemType ItemType { get { return _ItemType; } set { _ItemType = value; } } private Size _CalculatedSize; public Size CalculatedSize { get { return _CalculatedSize; } internal set { _CalculatedSize = value; } } public virtual void ResetHover() { if (_Parent != null) _Parent.ResetHover(); OnResetMouseHover(); } /// /// Raises the ResetMouseHover event. /// protected virtual void OnResetMouseHover() { if (ResetMouseHover != null) ResetMouseHover(this, new EventArgs()); } #endregion } } #endif