760 lines
		
	
	
		
			31 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
			
		
		
	
	
			760 lines
		
	
	
		
			31 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
using System;
 | 
						|
using System.Text;
 | 
						|
using System.ComponentModel;
 | 
						|
using System.Drawing;
 | 
						|
using System.Windows.Forms;
 | 
						|
 | 
						|
namespace DevComponents.DotNetBar
 | 
						|
{
 | 
						|
    /// <summary>
 | 
						|
    /// Panel control with title bar that can be expanded or collapsed.
 | 
						|
    /// </summary>
 | 
						|
    [ToolboxItem(true), Designer("DevComponents.DotNetBar.Design.ExpandablePanelDesigner, DevComponents.DotNetBar.Design, Version=14.1.0.37, Culture=neutral,  PublicKeyToken=90f470f34c89ccaf"), ToolboxBitmap(typeof(ExpandablePanel), "ExpandablePanel.ico")]
 | 
						|
    public class ExpandablePanel : PanelEx
 | 
						|
    {
 | 
						|
        #region Private Variables, Events & Constructor
 | 
						|
        /// <summary>
 | 
						|
        /// Occurs before Expanded property is changed. You can cancel change of this property by setting Cancel=true on the event arguments.
 | 
						|
        /// </summary>
 | 
						|
        public event ExpandChangeEventHandler ExpandedChanging;
 | 
						|
        /// <summary>
 | 
						|
        /// Occurs after Expanded property has changed. You can handle ExpandedChanging event and have opportunity to cancel the change.
 | 
						|
        /// </summary>
 | 
						|
        public event ExpandChangeEventHandler ExpandedChanged;
 | 
						|
 | 
						|
        private PanelExTitle m_TitleBar = new PanelExTitle();
 | 
						|
        private bool m_Expanded = true;
 | 
						|
        private int m_AnimationTime = 100;
 | 
						|
        private Rectangle m_ExpandedBounds = Rectangle.Empty;
 | 
						|
        private Image m_ButtonImageExpand = null;
 | 
						|
        private Image m_ButtonImageCollapse = null;
 | 
						|
        private eCollapseDirection m_CollapseDirection = eCollapseDirection.BottomToTop;
 | 
						|
        private Image m_Office2007ButtonImageExpand = null;
 | 
						|
        private Image m_Office2007ButtonImageCollapse = null;
 | 
						|
        private Image m_Office2007ButtonImageExpandMouseOver = null;
 | 
						|
        private Image m_Office2007ButtonImageCollapseMouseOver = null;
 | 
						|
        private PanelEx m_VerticalExpandPane = null;
 | 
						|
        private bool m_ExpandOnTitleClick = false;
 | 
						|
 | 
						|
        public ExpandablePanel()
 | 
						|
        {
 | 
						|
            m_TitleBar.Text = "Title Bar";
 | 
						|
            m_TitleBar.Location = new Point(0, 0);
 | 
						|
            m_TitleBar.Size = new Size(24, 26);
 | 
						|
            m_TitleBar.Dock = DockStyle.Top;
 | 
						|
            this.Controls.Add(m_TitleBar);
 | 
						|
            //m_TitleBar.ApplyPanelStyle();
 | 
						|
            m_TitleBar.ColorScheme = this.ColorScheme;
 | 
						|
            m_TitleBar.ExpandedClick += new EventHandler(m_TitleBar_ExpandedClick);
 | 
						|
            m_TitleBar.Click += new EventHandler(TitleBarClick);
 | 
						|
            this.BackColor = SystemColors.Control;
 | 
						|
            UpdateExpandButtonImage();
 | 
						|
        }
 | 
						|
 | 
						|
        #endregion
 | 
						|
 | 
						|
        #region Internal Implementation
 | 
						|
 | 
						|
        private void TitleBarClick(object sender, EventArgs e)
 | 
						|
        {
 | 
						|
            Point p = m_TitleBar.PointToClient(Control.MousePosition);
 | 
						|
            if (m_ExpandOnTitleClick && (!m_TitleBar.ExpandChangeButton.DisplayRectangle.Contains(p) ))
 | 
						|
            {
 | 
						|
                SetExpanded(!this.Expanded, eEventSource.Mouse);
 | 
						|
            }
 | 
						|
        }
 | 
						|
 | 
						|
        protected override void OnControlAdded(ControlEventArgs e)
 | 
						|
        {
 | 
						|
            base.OnControlAdded(e);
 | 
						|
            m_TitleBar.SendToBack();
 | 
						|
        }
 | 
						|
 | 
						|
        void m_TitleBar_ExpandedClick(object sender, EventArgs e)
 | 
						|
        {
 | 
						|
            SetExpanded(!this.Expanded, eEventSource.Mouse);
 | 
						|
        }
 | 
						|
 | 
						|
        private void SetExpanded(bool expanded, eEventSource action)
 | 
						|
        {
 | 
						|
            ExpandedChangeEventArgs e = new ExpandedChangeEventArgs(action, expanded);
 | 
						|
            InvokeExpandedChanging(e);
 | 
						|
            if (e.Cancel)
 | 
						|
                return;
 | 
						|
            m_Expanded = expanded;
 | 
						|
            OnExpandedChanged();
 | 
						|
            InvokeExpandedChanged(e);
 | 
						|
        }
 | 
						|
 | 
						|
        private DockStyle GetControlDock(Control c)
 | 
						|
        {
 | 
						|
            if (c.Dock == DockStyle.None || c.Dock == DockStyle.Fill)
 | 
						|
            {
 | 
						|
                return DockStyle.Top;
 | 
						|
            }
 | 
						|
            return c.Dock;
 | 
						|
        }
 | 
						|
 | 
						|
        private Rectangle GetExpandedBounds()
 | 
						|
        {
 | 
						|
            Rectangle r = m_ExpandedBounds;
 | 
						|
            DockStyle dock = GetControlDock(m_TitleBar);
 | 
						|
            if (dock == DockStyle.Left)
 | 
						|
            {
 | 
						|
                r = new Rectangle(this.Bounds.Location, m_ExpandedBounds.Size);
 | 
						|
            }
 | 
						|
            else if (dock == DockStyle.Right)
 | 
						|
            {
 | 
						|
                r = new Rectangle(this.Bounds.X - (m_ExpandedBounds.Width - this.Width), this.Bounds.Y, m_ExpandedBounds.Width, m_ExpandedBounds.Height);
 | 
						|
            }
 | 
						|
            else if (dock == DockStyle.Top)
 | 
						|
            {
 | 
						|
                if (m_CollapseDirection == eCollapseDirection.LeftToRight)
 | 
						|
                    r = new Rectangle(this.Bounds.X - (m_ExpandedBounds.Width - this.Bounds.Width), this.Bounds.Y, m_ExpandedBounds.Width, m_ExpandedBounds.Height);
 | 
						|
                else if (m_CollapseDirection == eCollapseDirection.TopToBottom)
 | 
						|
                    r = new Rectangle(this.Bounds.X, m_ExpandedBounds.Y, m_ExpandedBounds.Width, m_ExpandedBounds.Height);
 | 
						|
                else
 | 
						|
                    r = new Rectangle(this.Bounds.Location, m_ExpandedBounds.Size);
 | 
						|
            }
 | 
						|
            else if (dock == DockStyle.Bottom)
 | 
						|
            {
 | 
						|
                r = new Rectangle(this.Bounds.X, this.Bounds.Y - (m_ExpandedBounds.Height - this.Height), m_ExpandedBounds.Width, m_ExpandedBounds.Height);
 | 
						|
            }
 | 
						|
 | 
						|
            return r;
 | 
						|
        }
 | 
						|
 | 
						|
        private void OnExpandedChanged()
 | 
						|
        {
 | 
						|
            if (this.Expanded)
 | 
						|
            {
 | 
						|
                m_TitleBar.RenderText = true;
 | 
						|
                this.RenderText = true;
 | 
						|
                if (!m_ExpandedBounds.IsEmpty)
 | 
						|
                {
 | 
						|
                    if (m_VerticalExpandPane != null)
 | 
						|
                        DisposeVerticalExpandPane();
 | 
						|
 | 
						|
                    if (_HideControlsWhenCollapsed)
 | 
						|
                    {
 | 
						|
                        // Show internal controls
 | 
						|
                        this.SuspendLayout();
 | 
						|
                        foreach (Control c in this.Controls)
 | 
						|
                        {
 | 
						|
                            if (c is ContextMenuBar) continue;
 | 
						|
                            if (c != this.TitlePanel)
 | 
						|
                                c.Visible = true;
 | 
						|
                        }
 | 
						|
                        this.ResumeLayout();
 | 
						|
                    }
 | 
						|
 | 
						|
                    Rectangle targetRect = GetExpandedBounds();
 | 
						|
                    if (this.AnimationTime == 0 || this.DesignMode)
 | 
						|
                    {
 | 
						|
                        TypeDescriptor.GetProperties(this)["Bounds"].SetValue(this, targetRect);
 | 
						|
                    }
 | 
						|
                    else
 | 
						|
                    {
 | 
						|
                        Rectangle controlRect = this.Bounds;
 | 
						|
                        BarFunctions.AnimateControl(this, true, m_AnimationTime, controlRect, targetRect);
 | 
						|
                    }
 | 
						|
                    TypeDescriptor.GetProperties(this)["ExpandedBounds"].SetValue(this, Rectangle.Empty);
 | 
						|
                }
 | 
						|
            }
 | 
						|
            else
 | 
						|
            {
 | 
						|
                TypeDescriptor.GetProperties(this)["ExpandedBounds"].SetValue(this, this.Bounds);
 | 
						|
                Point p = this.PointToScreen(Point.Empty);
 | 
						|
                if (this.Parent != null)
 | 
						|
                    p = this.Parent.PointToClient(p);
 | 
						|
                else
 | 
						|
                    p = Point.Empty;
 | 
						|
 | 
						|
                Rectangle targetRect = new Rectangle(p, new Size(m_TitleBar.Width + this.DockPadding.Left + this.DockPadding.Right,
 | 
						|
                    Math.Max(m_TitleBar.Height + this.DockPadding.Top + this.DockPadding.Bottom, m_TitleBar.ExpandChangeButton.HeightInternal)));
 | 
						|
                if (m_CollapseDirection == eCollapseDirection.RightToLeft)
 | 
						|
                {
 | 
						|
                    targetRect = new Rectangle(p, new Size(Math.Max(m_TitleBar.Height + this.DockPadding.Top + this.DockPadding.Bottom, m_TitleBar.ExpandChangeButton.WidthInternal + 6), this.Height));
 | 
						|
                }
 | 
						|
                else if (m_CollapseDirection == eCollapseDirection.LeftToRight)
 | 
						|
                {
 | 
						|
                    Size s = new Size(Math.Max(m_TitleBar.Height + this.DockPadding.Top + this.DockPadding.Bottom, m_TitleBar.ExpandChangeButton.WidthInternal + 6), this.Height);
 | 
						|
                    if (!p.IsEmpty) p.X += this.Width - s.Width;
 | 
						|
                    targetRect = new Rectangle(p, s);
 | 
						|
                }
 | 
						|
                else if (m_CollapseDirection == eCollapseDirection.TopToBottom)
 | 
						|
                {
 | 
						|
                    Size s = new Size(m_TitleBar.Width + this.DockPadding.Left + this.DockPadding.Right,
 | 
						|
                        Math.Max(m_TitleBar.Height + this.DockPadding.Top + this.DockPadding.Bottom, m_TitleBar.ExpandChangeButton.HeightInternal));
 | 
						|
                    if (!p.IsEmpty) p.Y += this.Height - s.Height;
 | 
						|
                    targetRect = new Rectangle(p, s);
 | 
						|
                }
 | 
						|
 | 
						|
                if (this.AnimationTime == 0 || this.DesignMode)
 | 
						|
                {
 | 
						|
                    TypeDescriptor.GetProperties(this)["Bounds"].SetValue(this, targetRect);
 | 
						|
                }
 | 
						|
                else
 | 
						|
                {
 | 
						|
                    Rectangle controlRect = this.Bounds;
 | 
						|
                    BarFunctions.AnimateControl(this, true, m_AnimationTime, controlRect, targetRect);
 | 
						|
                }
 | 
						|
                if (m_CollapseDirection == eCollapseDirection.LeftToRight || m_CollapseDirection == eCollapseDirection.RightToLeft)
 | 
						|
                {
 | 
						|
                    m_TitleBar.RenderText = false;
 | 
						|
                    this.RenderText = false;
 | 
						|
                }
 | 
						|
 | 
						|
                if (_HideControlsWhenCollapsed)
 | 
						|
                {
 | 
						|
                    // Hide internal controls
 | 
						|
                    this.SuspendLayout();
 | 
						|
                    foreach (Control c in this.Controls)
 | 
						|
                    {
 | 
						|
                        if (c is ContextMenuBar) continue;
 | 
						|
                        if (c != this.TitlePanel)
 | 
						|
                            c.Visible = false;
 | 
						|
                    }
 | 
						|
                    this.ResumeLayout();
 | 
						|
                }
 | 
						|
 | 
						|
                m_TitleBar.SendToBack();
 | 
						|
                if (m_CollapseDirection == eCollapseDirection.LeftToRight || m_CollapseDirection == eCollapseDirection.RightToLeft)
 | 
						|
                    SetupExpandVerticalPane();
 | 
						|
            }
 | 
						|
            UpdateExpandButtonImage();
 | 
						|
            this.Refresh();
 | 
						|
        }
 | 
						|
 | 
						|
        private void DisposeVerticalExpandPane()
 | 
						|
        {
 | 
						|
            if (m_VerticalExpandPane != null)
 | 
						|
            {
 | 
						|
                this.Controls.Remove(m_VerticalExpandPane);
 | 
						|
                m_VerticalExpandPane.Dispose();
 | 
						|
                m_VerticalExpandPane = null;
 | 
						|
            }
 | 
						|
        }
 | 
						|
 | 
						|
        private bool _HideControlsWhenCollapsed = false;
 | 
						|
        /// <summary>
 | 
						|
        /// Indicates whether panel will hide the controls it contains when its collapsed and show them when its expanded. Default value is false.
 | 
						|
        /// </summary>
 | 
						|
        [DefaultValue(false), Category("Behavior"), Description("Indicates whether panel will hide the controls it contains when its collapsed and show them when its expanded")]
 | 
						|
        public bool HideControlsWhenCollapsed
 | 
						|
        {
 | 
						|
            get { return _HideControlsWhenCollapsed; }
 | 
						|
            set
 | 
						|
            {
 | 
						|
                _HideControlsWhenCollapsed = value;
 | 
						|
            }
 | 
						|
        }
 | 
						|
 | 
						|
        private void UpdateExpandButtonImage()
 | 
						|
        {
 | 
						|
            Image img = null;
 | 
						|
            Image imgMouseOver = null;
 | 
						|
 | 
						|
            if (this.Expanded)
 | 
						|
            {
 | 
						|
                if (m_ButtonImageCollapse != null)
 | 
						|
                    img = m_ButtonImageCollapse;
 | 
						|
                else
 | 
						|
                {
 | 
						|
                    if (BarFunctions.IsOffice2007Style(this.ColorSchemeStyle))
 | 
						|
                    {
 | 
						|
                        if (m_CollapseDirection == eCollapseDirection.BottomToTop ||
 | 
						|
                            m_CollapseDirection == eCollapseDirection.RightToLeft)
 | 
						|
                        {
 | 
						|
                            img = m_Office2007ButtonImageCollapse;
 | 
						|
                            imgMouseOver = m_Office2007ButtonImageCollapseMouseOver;
 | 
						|
                        }
 | 
						|
                        else
 | 
						|
                        {
 | 
						|
                            img = m_Office2007ButtonImageExpand;
 | 
						|
                            imgMouseOver = m_Office2007ButtonImageExpandMouseOver;
 | 
						|
                        }
 | 
						|
                    }
 | 
						|
                    else
 | 
						|
                    {
 | 
						|
                        if (m_CollapseDirection == eCollapseDirection.BottomToTop)
 | 
						|
                            img = BarFunctions.LoadBitmap("SystemImages.ExpandTitle.png");
 | 
						|
                        else if (m_CollapseDirection == eCollapseDirection.TopToBottom)
 | 
						|
                            img = BarFunctions.LoadBitmap("SystemImages.CollapseTitle.png");
 | 
						|
                        else if (m_CollapseDirection == eCollapseDirection.LeftToRight)
 | 
						|
                        {
 | 
						|
                            Bitmap b = BarFunctions.LoadBitmap("SystemImages.ExpandTitle.png");
 | 
						|
                            b.RotateFlip(RotateFlipType.Rotate270FlipNone);
 | 
						|
                            img = b;
 | 
						|
                        }
 | 
						|
                        else if (m_CollapseDirection == eCollapseDirection.RightToLeft)
 | 
						|
                        {
 | 
						|
                            Bitmap b = BarFunctions.LoadBitmap("SystemImages.ExpandTitle.png");
 | 
						|
                            b.RotateFlip(RotateFlipType.Rotate90FlipNone);
 | 
						|
                            img = b;
 | 
						|
                        }
 | 
						|
                    }
 | 
						|
                }
 | 
						|
            }
 | 
						|
            else
 | 
						|
            {
 | 
						|
                if (m_ButtonImageExpand != null)
 | 
						|
                    img = m_ButtonImageExpand;
 | 
						|
                else
 | 
						|
                {
 | 
						|
                    if (BarFunctions.IsOffice2007Style(this.ColorSchemeStyle))
 | 
						|
                    {
 | 
						|
                        if (m_CollapseDirection == eCollapseDirection.BottomToTop ||
 | 
						|
                            m_CollapseDirection == eCollapseDirection.RightToLeft)
 | 
						|
                        {
 | 
						|
                            img = m_Office2007ButtonImageExpand;
 | 
						|
                            imgMouseOver = m_Office2007ButtonImageExpandMouseOver;
 | 
						|
                        }
 | 
						|
                        else
 | 
						|
                        {
 | 
						|
                            img = m_Office2007ButtonImageCollapse;
 | 
						|
                            imgMouseOver = m_Office2007ButtonImageCollapseMouseOver;
 | 
						|
                        }
 | 
						|
                    }
 | 
						|
                    else
 | 
						|
                    {
 | 
						|
                        if (m_CollapseDirection == eCollapseDirection.BottomToTop)
 | 
						|
                            img = BarFunctions.LoadBitmap("SystemImages.CollapseTitle.png");
 | 
						|
                        else if (m_CollapseDirection == eCollapseDirection.TopToBottom)
 | 
						|
                            img = BarFunctions.LoadBitmap("SystemImages.ExpandTitle.png");
 | 
						|
                        else if (m_CollapseDirection == eCollapseDirection.LeftToRight)
 | 
						|
                        {
 | 
						|
                            Bitmap b = BarFunctions.LoadBitmap("SystemImages.CollapseTitle.png");
 | 
						|
                            b.RotateFlip(RotateFlipType.Rotate270FlipNone);
 | 
						|
                            img = b;
 | 
						|
                        }
 | 
						|
                        else if (m_CollapseDirection == eCollapseDirection.RightToLeft)
 | 
						|
                        {
 | 
						|
                            Bitmap b = BarFunctions.LoadBitmap("SystemImages.CollapseTitle.png");
 | 
						|
                            b.RotateFlip(RotateFlipType.Rotate90FlipNone);
 | 
						|
                            img = b;
 | 
						|
                        }
 | 
						|
                    }
 | 
						|
                }
 | 
						|
            }
 | 
						|
 | 
						|
            m_TitleBar.ExpandChangeButton.Image = img;
 | 
						|
            m_TitleBar.ExpandChangeButton.HoverImage = imgMouseOver;
 | 
						|
 | 
						|
            if (BarFunctions.IsHandleValid(this))
 | 
						|
            {
 | 
						|
                m_TitleBar.UpdateButtonPosition();
 | 
						|
                m_TitleBar.Invalidate();
 | 
						|
            }
 | 
						|
 | 
						|
        }
 | 
						|
 | 
						|
        private void UpdateOffice2007Images()
 | 
						|
        {
 | 
						|
            if (m_Office2007ButtonImageCollapse != null)
 | 
						|
                m_Office2007ButtonImageCollapse.Dispose();
 | 
						|
            if (m_Office2007ButtonImageExpand != null)
 | 
						|
                m_Office2007ButtonImageExpand.Dispose();
 | 
						|
            if (m_Office2007ButtonImageCollapseMouseOver != null)
 | 
						|
                m_Office2007ButtonImageCollapseMouseOver.Dispose();
 | 
						|
            if (m_Office2007ButtonImageExpandMouseOver != null)
 | 
						|
                m_Office2007ButtonImageExpandMouseOver.Dispose();
 | 
						|
 | 
						|
            bool vertImage = (m_CollapseDirection == eCollapseDirection.TopToBottom) || (m_CollapseDirection == eCollapseDirection.BottomToTop);
 | 
						|
 | 
						|
            m_Office2007ButtonImageCollapse = UIGraphics.CreateExpandButtonImage(true, this.ColorScheme.PanelText, vertImage);
 | 
						|
            m_Office2007ButtonImageCollapseMouseOver = UIGraphics.CreateExpandButtonImage(true, this.ColorScheme.ItemHotText, vertImage);
 | 
						|
            m_Office2007ButtonImageExpand = UIGraphics.CreateExpandButtonImage(false, this.ColorScheme.PanelText, vertImage);
 | 
						|
            m_Office2007ButtonImageExpandMouseOver = UIGraphics.CreateExpandButtonImage(false, this.ColorScheme.ItemHotText, vertImage);
 | 
						|
        }
 | 
						|
 | 
						|
        private void InvokeExpandedChanging(ExpandedChangeEventArgs e)
 | 
						|
        {
 | 
						|
            if (ExpandedChanging != null)
 | 
						|
                ExpandedChanging(this, e);
 | 
						|
        }
 | 
						|
        private void InvokeExpandedChanged(ExpandedChangeEventArgs e)
 | 
						|
        {
 | 
						|
            if (ExpandedChanged != null)
 | 
						|
                ExpandedChanged(this, e);
 | 
						|
        }
 | 
						|
 | 
						|
        /// <summary>
 | 
						|
        /// Called after either ColorScheme or ColorSchemeStyle has changed. If you override make sure that you call base implementation so default
 | 
						|
        /// processing can occur.
 | 
						|
        /// </summary>
 | 
						|
        protected override void OnColorSchemeChanged()
 | 
						|
        {
 | 
						|
            base.OnColorSchemeChanged();
 | 
						|
            m_TitleBar.ColorScheme = GetColorScheme();
 | 
						|
            UpdateAutoGeneratedImages();
 | 
						|
        }
 | 
						|
 | 
						|
        private void UpdateAutoGeneratedImages()
 | 
						|
        {
 | 
						|
            DisposeAutoGeneratedImages();
 | 
						|
            if (BarFunctions.IsOffice2007Style(this.ColorSchemeStyle))
 | 
						|
                UpdateOffice2007Images();
 | 
						|
 | 
						|
            UpdateExpandButtonImage();
 | 
						|
        }
 | 
						|
 | 
						|
        private void DisposeAutoGeneratedImages()
 | 
						|
        {
 | 
						|
            if (m_Office2007ButtonImageCollapse != null)
 | 
						|
            {
 | 
						|
                m_Office2007ButtonImageCollapse.Dispose();
 | 
						|
                m_Office2007ButtonImageCollapse = null;
 | 
						|
            }
 | 
						|
            if (m_Office2007ButtonImageCollapseMouseOver != null)
 | 
						|
            {
 | 
						|
                m_Office2007ButtonImageCollapseMouseOver.Dispose();
 | 
						|
                m_Office2007ButtonImageCollapseMouseOver = null;
 | 
						|
            }
 | 
						|
            if (m_Office2007ButtonImageExpand != null)
 | 
						|
            {
 | 
						|
                m_Office2007ButtonImageExpand.Dispose();
 | 
						|
                m_Office2007ButtonImageExpand = null;
 | 
						|
            }
 | 
						|
            if (m_Office2007ButtonImageExpandMouseOver != null)
 | 
						|
            {
 | 
						|
                m_Office2007ButtonImageExpandMouseOver.Dispose();
 | 
						|
                m_Office2007ButtonImageExpandMouseOver = null;
 | 
						|
            }
 | 
						|
        }
 | 
						|
 | 
						|
        private int GetTitleHeight()
 | 
						|
        {
 | 
						|
            if (m_TitleBar.Dock == DockStyle.Left || m_TitleBar.Dock == DockStyle.Right)
 | 
						|
                return m_TitleBar.Width;
 | 
						|
            else
 | 
						|
                return m_TitleBar.Height;
 | 
						|
        }
 | 
						|
 | 
						|
        private void SetTitleHeight(int value)
 | 
						|
        {
 | 
						|
            //if(m_CollapseDirection == eCollapseDirection.LeftToRight || m_CollapseDirection == eCollapseDirection.RightToLeft)
 | 
						|
            if (m_TitleBar.Dock == DockStyle.Left || m_TitleBar.Dock == DockStyle.Right)
 | 
						|
            {
 | 
						|
                m_TitleBar.Width = value;
 | 
						|
                //if (!this.Expanded)
 | 
						|
                //    TypeDescriptor.GetProperties(this)["Width"].SetValue(this, value);
 | 
						|
            }
 | 
						|
            else
 | 
						|
            {
 | 
						|
                m_TitleBar.Height = value;
 | 
						|
                //if (!this.Expanded)
 | 
						|
                //    TypeDescriptor.GetProperties(this)["Height"].SetValue(this, value);
 | 
						|
            }
 | 
						|
        }
 | 
						|
 | 
						|
        private void OnCollapseDirectionChanged()
 | 
						|
        {
 | 
						|
            UpdateAutoGeneratedImages();
 | 
						|
        }
 | 
						|
 | 
						|
        protected override void Dispose(bool disposing)
 | 
						|
        {
 | 
						|
            DisposeAutoGeneratedImages();
 | 
						|
            if (BarUtilities.DisposeItemImages && !this.DesignMode)
 | 
						|
            {
 | 
						|
                BarUtilities.DisposeImage(ref m_ButtonImageCollapse);
 | 
						|
                BarUtilities.DisposeImage(ref m_ButtonImageExpand);
 | 
						|
            }
 | 
						|
            base.Dispose(disposing);
 | 
						|
        }
 | 
						|
 | 
						|
        private void SetupExpandVerticalPane()
 | 
						|
        {
 | 
						|
            m_VerticalExpandPane = new PanelEx();
 | 
						|
            m_VerticalExpandPane.ColorSchemeStyle = this.ColorSchemeStyle;
 | 
						|
            m_VerticalExpandPane.ColorScheme = this.ColorScheme;
 | 
						|
            m_VerticalExpandPane.ApplyButtonStyle();
 | 
						|
            m_VerticalExpandPane.Style.VerticalText = true;
 | 
						|
            m_VerticalExpandPane.Style.ForeColor.ColorSchemePart = eColorSchemePart.PanelText;
 | 
						|
            m_VerticalExpandPane.Style.BackColor1.ColorSchemePart = eColorSchemePart.PanelBackground;
 | 
						|
            m_VerticalExpandPane.Style.ResetBackColor2();
 | 
						|
            m_VerticalExpandPane.StyleMouseOver.VerticalText = true;
 | 
						|
            m_VerticalExpandPane.StyleMouseDown.VerticalText = true;
 | 
						|
            m_VerticalExpandPane.Dock = DockStyle.Fill;
 | 
						|
            m_VerticalExpandPane.Text = TitlePanel.Text;
 | 
						|
 | 
						|
            this.Controls.Add(m_VerticalExpandPane);
 | 
						|
            if (this.TitleStyle.Font != null)
 | 
						|
                m_VerticalExpandPane.Font = this.TitleStyle.Font;
 | 
						|
            else if (TitlePanel.Font != null)
 | 
						|
                m_VerticalExpandPane.Font = TitlePanel.Font;
 | 
						|
            m_VerticalExpandPane.Click += new EventHandler(VerticalExpandPaneClick);
 | 
						|
            m_VerticalExpandPane.BringToFront();
 | 
						|
        }
 | 
						|
 | 
						|
        private void VerticalExpandPaneClick(object sender, EventArgs e)
 | 
						|
        {
 | 
						|
            this.Expanded = !this.Expanded;
 | 
						|
        }
 | 
						|
        #endregion
 | 
						|
 | 
						|
        #region Properties
 | 
						|
        /// <summary>
 | 
						|
        /// Gets or sets whether the panel is collapsed/expanded when title bar is clicked. Default value is false.
 | 
						|
        /// </summary>
 | 
						|
        [DefaultValue(false), Browsable(true), Category("Expand"), Description("Indicates whether panel is collapsed/expanded when title bar is clicked.")]
 | 
						|
        public bool ExpandOnTitleClick
 | 
						|
        {
 | 
						|
            get { return m_ExpandOnTitleClick; }
 | 
						|
            set { m_ExpandOnTitleClick = value; }
 | 
						|
        }
 | 
						|
 | 
						|
        /// <summary>
 | 
						|
        /// Gets or sets the collapse/expand direction for the control. Default value causes the control to collapse from bottom to top.
 | 
						|
        /// </summary>
 | 
						|
        [Browsable(true), DefaultValue(eCollapseDirection.BottomToTop), Category("Expand"), Description("Indicates collapse/expand direction for the control.")]
 | 
						|
        public eCollapseDirection CollapseDirection
 | 
						|
        {
 | 
						|
            get { return m_CollapseDirection; }
 | 
						|
            set
 | 
						|
            {
 | 
						|
                m_CollapseDirection = value;
 | 
						|
                OnCollapseDirectionChanged();
 | 
						|
            }
 | 
						|
        }
 | 
						|
 | 
						|
        /// <summary>
 | 
						|
        /// Gets or sets whether panel is expanded or not. Default value is true.
 | 
						|
        /// </summary>
 | 
						|
        [Browsable(true), Category("Expand"), DefaultValue(true), Description("Indicates whether panel is expaned or not. Default value is true.")]
 | 
						|
        public bool Expanded
 | 
						|
        {
 | 
						|
            get { return m_Expanded; }
 | 
						|
            set
 | 
						|
            {
 | 
						|
                if (m_Expanded != value)
 | 
						|
                    SetExpanded(value, eEventSource.Code);
 | 
						|
            }
 | 
						|
        }
 | 
						|
 | 
						|
        /// <summary>
 | 
						|
        /// Gets or sets animation time in milliseconds. Default value is 100 miliseconds. You can set this to 0 (zero) to disable animation.
 | 
						|
        /// </summary>
 | 
						|
        [Browsable(true), DefaultValue(100), Category("Expand"), Description("Indicates animation time in milliseconds, set to 0 to disable animation.")]
 | 
						|
        public int AnimationTime
 | 
						|
        {
 | 
						|
            get { return m_AnimationTime; }
 | 
						|
            set
 | 
						|
            {
 | 
						|
                if (m_AnimationTime >= 0)
 | 
						|
                    m_AnimationTime = value;
 | 
						|
            }
 | 
						|
        }
 | 
						|
 | 
						|
        /// <summary>
 | 
						|
        /// Gets or sets the bounds of panel when expanded. This value is managed automatically by control based on the starting designer size and value
 | 
						|
        /// of Expanded property.
 | 
						|
        /// </summary>
 | 
						|
        [Browsable(false)]
 | 
						|
        public Rectangle ExpandedBounds
 | 
						|
        {
 | 
						|
            get { return m_ExpandedBounds; }
 | 
						|
            set { m_ExpandedBounds = value; }
 | 
						|
        }
 | 
						|
 | 
						|
        /// <summary>
 | 
						|
        /// Used for design time support.
 | 
						|
        /// </summary>
 | 
						|
        /// <returns>true if property should be serialized.</returns>
 | 
						|
        [EditorBrowsable(EditorBrowsableState.Never)]
 | 
						|
        public bool ShouldSerializeExpandedBounds()
 | 
						|
        {
 | 
						|
            return !m_ExpandedBounds.IsEmpty;
 | 
						|
        }
 | 
						|
 | 
						|
        /// <summary>
 | 
						|
        /// Gets or sets whether expand button is visible or not. Default value is true.
 | 
						|
        /// </summary>
 | 
						|
        [Browsable(true), DefaultValue(true), Category("Expand Button"), Description("Indicates whether expand button is visible or not.")]
 | 
						|
        public bool ExpandButtonVisible
 | 
						|
        {
 | 
						|
            get { return m_TitleBar.ExpandButtonVisible; }
 | 
						|
            set
 | 
						|
            {
 | 
						|
                m_TitleBar.ExpandButtonVisible = value;
 | 
						|
            }
 | 
						|
        }
 | 
						|
 | 
						|
        /// <summary>
 | 
						|
        /// Returns bounds of expand button. Bounds are relative to the TitlePanel coordinates.
 | 
						|
        /// </summary>
 | 
						|
        [Browsable(false)]
 | 
						|
        public Rectangle ExpandButtonBounds
 | 
						|
        {
 | 
						|
            get
 | 
						|
            {
 | 
						|
                return m_TitleBar.ExpandChangeButton.DisplayRectangle;
 | 
						|
            }
 | 
						|
        }
 | 
						|
 | 
						|
        /// <summary>
 | 
						|
        /// Gets or sets image that is used on title bar button to collapse panel. Default value is null which indicates
 | 
						|
        /// that system default image is used.
 | 
						|
        /// </summary>
 | 
						|
        [Browsable(true), DefaultValue(null), Category("Title"), Description("Indicates image used on title bar to collapse panel.")]
 | 
						|
        public Image ButtonImageCollapse
 | 
						|
        {
 | 
						|
            get { return m_ButtonImageCollapse; }
 | 
						|
            set
 | 
						|
            {
 | 
						|
                m_ButtonImageCollapse = value;
 | 
						|
                this.UpdateExpandButtonImage();
 | 
						|
            }
 | 
						|
        }
 | 
						|
 | 
						|
        /// <summary>
 | 
						|
        /// Gets or sets image that is used on title bar button to expand panel. Default value is null which indicates
 | 
						|
        /// that system default image is used.
 | 
						|
        /// </summary>
 | 
						|
        [Browsable(true), DefaultValue(null), Category("Title"), Description("Indicates image used on title bar to expand panel.")]
 | 
						|
        public Image ButtonImageExpand
 | 
						|
        {
 | 
						|
            get { return m_ButtonImageExpand; }
 | 
						|
            set
 | 
						|
            {
 | 
						|
                m_ButtonImageExpand = value;
 | 
						|
                this.UpdateExpandButtonImage();
 | 
						|
            }
 | 
						|
        }
 | 
						|
 | 
						|
        /// <summary>
 | 
						|
        /// Gets or sets the text for the title of the panel.
 | 
						|
        /// </summary>
 | 
						|
        [Browsable(true), DefaultValue(""), Category("Title"), Description("Indicates text for the title of the panel."), Localizable(true), Editor("DevComponents.DotNetBar.Design.TextMarkupUIEditor, DevComponents.DotNetBar.Design, Version=14.1.0.37, Culture=neutral,  PublicKeyToken=90f470f34c89ccaf", typeof(System.Drawing.Design.UITypeEditor))]
 | 
						|
        public string TitleText
 | 
						|
        {
 | 
						|
            get { return m_TitleBar.Text; }
 | 
						|
            set
 | 
						|
            {
 | 
						|
                m_TitleBar.Text = value;
 | 
						|
                if (m_VerticalExpandPane != null)
 | 
						|
                    m_VerticalExpandPane.Text = value;
 | 
						|
 | 
						|
            }
 | 
						|
        }
 | 
						|
 | 
						|
        /// <summary>
 | 
						|
        /// Gets or sets the title style.
 | 
						|
        /// </summary>
 | 
						|
        [Browsable(true), DevCoBrowsable(true), NotifyParentPropertyAttribute(true), Category("Title"), Description("Gets or sets title style."), DesignerSerializationVisibility(DesignerSerializationVisibility.Content)]
 | 
						|
        public ItemStyle TitleStyle
 | 
						|
        {
 | 
						|
            get
 | 
						|
            {
 | 
						|
                return m_TitleBar.Style;
 | 
						|
            }
 | 
						|
        }
 | 
						|
        /// <summary>
 | 
						|
        ///     Resets the style to it's default value.
 | 
						|
        /// </summary>
 | 
						|
        public void ResetTitleStyle()
 | 
						|
        {
 | 
						|
 | 
						|
            m_TitleBar.ResetStyle();
 | 
						|
        }
 | 
						|
 | 
						|
        /// <summary>
 | 
						|
        /// Gets or sets the title style when mouse hovers over the title.
 | 
						|
        /// </summary>
 | 
						|
        [Browsable(true), DevCoBrowsable(true), NotifyParentPropertyAttribute(true), Category("Title"), Description("Gets or sets the title style when mouse hovers over the title."), DesignerSerializationVisibility(DesignerSerializationVisibility.Content)]
 | 
						|
        public ItemStyle TitleStyleMouseOver
 | 
						|
        {
 | 
						|
            get
 | 
						|
            {
 | 
						|
                return m_TitleBar.StyleMouseOver;
 | 
						|
            }
 | 
						|
        }
 | 
						|
        /// <summary>
 | 
						|
        ///     Resets the style to it's default value.
 | 
						|
        /// </summary>
 | 
						|
        public void ResetTitleStyleMouseOver()
 | 
						|
        {
 | 
						|
            m_TitleBar.ResetStyleMouseOver();
 | 
						|
        }
 | 
						|
 | 
						|
        /// <summary>
 | 
						|
        /// Gets or sets the title style when mouse button is pressed on the title.
 | 
						|
        /// </summary>
 | 
						|
        [Browsable(true), DevCoBrowsable(true), NotifyParentPropertyAttribute(true), Category("Title"), Description("Gets or sets the Title style when mouse button is pressed on the title."), DesignerSerializationVisibility(DesignerSerializationVisibility.Content)]
 | 
						|
        public ItemStyle TitleStyleMouseDown
 | 
						|
        {
 | 
						|
            get
 | 
						|
            {
 | 
						|
                return m_TitleBar.StyleMouseDown;
 | 
						|
            }
 | 
						|
        }
 | 
						|
        /// <summary>
 | 
						|
        ///     Resets the style to it's default value.
 | 
						|
        /// </summary>
 | 
						|
        public void ResetTitleStyleMouseDown()
 | 
						|
        {
 | 
						|
            m_TitleBar.ResetStyleMouseDown();
 | 
						|
        }
 | 
						|
 | 
						|
        /// <summary>
 | 
						|
        /// Gets or sets the height of the title portion of the panel. Height must be greater than 0. Default is 26.
 | 
						|
        /// </summary>
 | 
						|
        [Browsable(true), DefaultValue(26), Category("Title"), Description("Indicates height of the title portion of the panel.")]
 | 
						|
        public int TitleHeight
 | 
						|
        {
 | 
						|
            get { return GetTitleHeight(); }
 | 
						|
            set { SetTitleHeight(value); }
 | 
						|
        }
 | 
						|
 | 
						|
        /// <summary>
 | 
						|
        /// Gets reference to Panel control used as title bar.
 | 
						|
        /// </summary>
 | 
						|
        [Browsable(false), DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
 | 
						|
        public PanelEx TitlePanel
 | 
						|
        {
 | 
						|
            get { return m_TitleBar; }
 | 
						|
        }
 | 
						|
 | 
						|
        /// <summary>
 | 
						|
        /// Gets reference to the title bar expand button.
 | 
						|
        /// </summary>
 | 
						|
        [Browsable(false), DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
 | 
						|
        public ButtonItem ExpandButton
 | 
						|
        {
 | 
						|
            get { return m_TitleBar.ExpandChangeButton; }
 | 
						|
        }
 | 
						|
        /// <summary>
 | 
						|
        /// Gets or sets alignment of the expand button.
 | 
						|
        /// </summary>
 | 
						|
        [DefaultValue(eTitleButtonAlignment.Right), Category("Expand Button"), Description("Indicates the alignment of expand button.")]
 | 
						|
        public eTitleButtonAlignment ExpandButtonAlignment
 | 
						|
        {
 | 
						|
            get { return m_TitleBar.ButtonAlignment; }
 | 
						|
            set
 | 
						|
            {
 | 
						|
                m_TitleBar.ButtonAlignment = value;
 | 
						|
            }
 | 
						|
        }
 | 
						|
 | 
						|
 | 
						|
        /// <summary>
 | 
						|
        /// Gets the reference to the panel used as button when control is collapsed to the left or right.
 | 
						|
        /// </summary>
 | 
						|
        [Browsable(false)]
 | 
						|
        public PanelEx VerticalExpandPanel
 | 
						|
        {
 | 
						|
            get { return m_VerticalExpandPane; }
 | 
						|
        }
 | 
						|
 | 
						|
        /// <summary>
 | 
						|
        /// Called when AntiAlias property has changed.
 | 
						|
        /// </summary>
 | 
						|
        protected override void OnAntiAliasChanged()
 | 
						|
        {
 | 
						|
            m_TitleBar.AntiAlias = this.AntiAlias;
 | 
						|
        }
 | 
						|
        #endregion
 | 
						|
    }
 | 
						|
}
 |