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
 | |
|     }
 | |
| }
 |