250 lines
7.9 KiB
C#
250 lines
7.9 KiB
C#
using System;
|
|
using System.Collections;
|
|
using System.ComponentModel;
|
|
using System.Drawing;
|
|
|
|
namespace DevComponents.DotNetBar
|
|
{
|
|
/// <summary>
|
|
/// Represents a group RibbonTabItem objects are assigned to.
|
|
/// </summary>
|
|
[DesignTimeVisible(false), ToolboxItem(false), TypeConverterAttribute("DevComponents.DotNetBar.Design.RibbonTabItemGroupConverter, DevComponents.DotNetBar.Design, Version=14.1.0.37, Culture=neutral, PublicKeyToken=90f470f34c89ccaf")]
|
|
public class RibbonTabItemGroup:Component
|
|
{
|
|
#region Private Variables & Constructor
|
|
private ElementStyle m_Style=null;
|
|
private string m_GroupTitle="";
|
|
private RibbonStrip m_ParentRibbonStrip=null;
|
|
[EditorBrowsable(EditorBrowsableState.Never), Browsable(false), DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
|
|
public ArrayList DisplayPositions=new ArrayList();
|
|
private eRibbonTabGroupColor m_Color = eRibbonTabGroupColor.Default;
|
|
private string m_Name = "";
|
|
private string m_CustomColorName = "";
|
|
|
|
public RibbonTabItemGroup()
|
|
{
|
|
m_Style=new ElementStyle();
|
|
m_Style.StyleChanged+=new EventHandler(StyleChanged);
|
|
}
|
|
#endregion
|
|
|
|
#region Internal Implementation
|
|
/// <summary>
|
|
/// Gets or sets the predefined color of the group. Color specified here applies to groups with Office 12 style only. It does not have
|
|
/// any effect on other styles. Default value is eRibbonTabGroupColor.Default
|
|
/// </summary>
|
|
[Browsable(true), DefaultValue(eRibbonTabGroupColor.Default), Category("Appearance"), Description("Indicates predefined color of the group when Office 12 style is used.")]
|
|
public eRibbonTabGroupColor Color
|
|
{
|
|
get { return m_Color; }
|
|
set
|
|
{
|
|
if (m_Color != value)
|
|
{
|
|
m_Color = value;
|
|
if (this.ParentRibbonStrip != null)
|
|
this.ParentRibbonStrip.Invalidate();
|
|
}
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// Gets or sets the custom color name. Name specified here must be represented by the coresponding object with the same name that is part
|
|
/// of the Office2007ColorTable.RibbonTabGroupColors collection. See documentation for Office2007ColorTable.RibbonTabGroupColors for more information.
|
|
/// If color table with specified name cannot be found default color will be used. Valid settings for this property override any
|
|
/// setting to the Color property.
|
|
/// </summary>
|
|
[Browsable(true), DevCoBrowsable(false), DefaultValue(""), Category("Appearance"), Description("Indicates custom color table name for the button when Office 2007 style is used.")]
|
|
public string CustomColorName
|
|
{
|
|
get { return m_CustomColorName; }
|
|
set
|
|
{
|
|
m_CustomColorName = value;
|
|
if (this.ParentRibbonStrip != null)
|
|
this.ParentRibbonStrip.Invalidate();
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// Gets the style for tab group.
|
|
/// </summary>
|
|
[Browsable(false),Category("Background"),Description("Gets the style for tab group."),DesignerSerializationVisibility(DesignerSerializationVisibility.Content)]
|
|
public ElementStyle Style
|
|
{
|
|
get {return m_Style;}
|
|
}
|
|
|
|
/// <summary>
|
|
/// Gets or sets title of the group that will be displayed when group is visually represented.
|
|
/// </summary>
|
|
[Browsable(true), DevCoBrowsable(true), DefaultValue(""), Localizable(true)]
|
|
public string GroupTitle
|
|
{
|
|
get {return m_GroupTitle;}
|
|
set
|
|
{
|
|
m_GroupTitle=value;
|
|
if(this.DesignMode && m_ParentRibbonStrip!=null)
|
|
{
|
|
m_ParentRibbonStrip.RecalcLayout();
|
|
}
|
|
}
|
|
}
|
|
|
|
private void StyleChanged(object sender, EventArgs e)
|
|
{
|
|
if(m_ParentRibbonStrip!=null)
|
|
m_ParentRibbonStrip.Refresh();
|
|
}
|
|
|
|
/// <summary>
|
|
/// Gets or sets parent ribbon strip for this group.
|
|
/// </summary>
|
|
[DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden),Browsable(false)]
|
|
internal RibbonStrip ParentRibbonStrip
|
|
{
|
|
get {return m_ParentRibbonStrip;}
|
|
set
|
|
{
|
|
m_ParentRibbonStrip=value;
|
|
if(m_ParentRibbonStrip!=null)
|
|
m_Style.SetColorScheme(m_ParentRibbonStrip.ColorScheme);
|
|
}
|
|
}
|
|
|
|
public override string ToString()
|
|
{
|
|
if(m_GroupTitle.Length>0)
|
|
return m_GroupTitle;
|
|
return base.ToString ();
|
|
}
|
|
|
|
/// <summary>
|
|
/// Gets or sets whether RibbonTabItem objects that belong to this group are visible. Setting this property will
|
|
/// show/hide all RibbonTabItem objects that are assigned to this group through RibbonTabItem.Group property.
|
|
/// </summary>
|
|
[Browsable(false),DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
|
|
public bool Visible
|
|
{
|
|
get
|
|
{
|
|
if(m_ParentRibbonStrip==null)
|
|
return true;
|
|
bool visible=false;
|
|
foreach(BaseItem item in m_ParentRibbonStrip.Items)
|
|
{
|
|
if(item is RibbonTabItem)
|
|
{
|
|
RibbonTabItem tab=item as RibbonTabItem;
|
|
if(tab.Group == this && tab.Visible)
|
|
{
|
|
visible=true;
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
|
|
return visible;
|
|
}
|
|
set
|
|
{
|
|
if(m_ParentRibbonStrip==null)
|
|
return;
|
|
foreach(BaseItem item in m_ParentRibbonStrip.Items)
|
|
{
|
|
if(item is RibbonTabItem)
|
|
{
|
|
RibbonTabItem tab=item as RibbonTabItem;
|
|
if(tab.Group==this)
|
|
tab.Visible=value;
|
|
}
|
|
}
|
|
m_ParentRibbonStrip.RecalcLayout();
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// Gets whether any tab from this tab group is selected.
|
|
/// </summary>
|
|
[Browsable(false)]
|
|
public bool IsTabFromGroupSelected
|
|
{
|
|
get
|
|
{
|
|
if(m_ParentRibbonStrip==null)
|
|
return false;
|
|
foreach(BaseItem item in m_ParentRibbonStrip.Items)
|
|
{
|
|
if(item is RibbonTabItem)
|
|
{
|
|
RibbonTabItem tab=item as RibbonTabItem;
|
|
if (tab.Group == this && tab.Checked)
|
|
return true;
|
|
}
|
|
}
|
|
return false;
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// Selected first tab that is part of this group.
|
|
/// </summary>
|
|
public void SelectFirstTab()
|
|
{
|
|
if (m_ParentRibbonStrip == null)
|
|
return;
|
|
foreach (BaseItem item in m_ParentRibbonStrip.Items)
|
|
{
|
|
if (item is RibbonTabItem)
|
|
{
|
|
RibbonTabItem tab = item as RibbonTabItem;
|
|
if (tab.Group == this && tab.Visible)
|
|
{
|
|
tab.Checked = true;
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// Gets or sets name of the group that can be used to identify item from the code.
|
|
/// </summary>
|
|
[Browsable(false), Category("Design"), Description("Indicates the name used to identify the group.")]
|
|
public string Name
|
|
{
|
|
get
|
|
{
|
|
if (this.Site != null)
|
|
m_Name = this.Site.Name;
|
|
return m_Name;
|
|
}
|
|
set
|
|
{
|
|
if (this.Site != null)
|
|
this.Site.Name = value;
|
|
if (value == null)
|
|
m_Name = "";
|
|
else
|
|
m_Name = value;
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// Gets an array of Rectangle objects that describe the visual position on the ribbon control of the group titles displayed.
|
|
/// If tabs that belong to a tab group are not next to each other then there will be multiple rectangle returned as part of the array
|
|
/// for each tab group that is apart.
|
|
/// </summary>
|
|
[Browsable(false)]
|
|
public Rectangle[] TitleBounds
|
|
{
|
|
get
|
|
{
|
|
return (Rectangle[])DisplayPositions.ToArray(typeof(Rectangle));
|
|
}
|
|
}
|
|
#endregion
|
|
}
|
|
}
|