1539 lines
55 KiB
C#
1539 lines
55 KiB
C#
using System;
|
||
using System.Drawing;
|
||
using System.ComponentModel;
|
||
using System.Windows.Forms;
|
||
using DevComponents.DotNetBar.Controls;
|
||
using DevComponents.DotNetBar.Rendering;
|
||
|
||
namespace DevComponents.DotNetBar
|
||
{
|
||
/// <summary>
|
||
/// Summary description for ComboBoxItem.
|
||
/// </summary>
|
||
[System.ComponentModel.ToolboxItem(false), DefaultEvent("Click"), System.ComponentModel.DesignTimeVisible(false), Designer("DevComponents.DotNetBar.Design.ComboBoxItemDesigner, DevComponents.DotNetBar.Design, Version=14.1.0.37, Culture=neutral, PublicKeyToken=90f470f34c89ccaf")]
|
||
public class ComboBoxItem:ImageItem,IPersonalizedMenuItem
|
||
{
|
||
private Controls.ComboBoxEx m_ComboBox=null;
|
||
private int m_ComboWidth=64;
|
||
private bool m_MouseOver=false;
|
||
//private string m_ControlText="";
|
||
private bool m_AlwaysShowCaption;
|
||
private bool m_FontCombo=false;
|
||
|
||
// IPersonalizedMenuItem Implementation
|
||
private eMenuVisibility m_MenuVisibility=eMenuVisibility.VisibleAlways;
|
||
private bool m_RecentlyUsed=false;
|
||
internal bool _CopyInProgress=false;
|
||
|
||
private bool m_PreventEnterBeep=false;
|
||
|
||
/// <summary>
|
||
/// Occurs when underlining control ComboBox.Text property has changed.
|
||
/// </summary>
|
||
public event EventHandler ComboBoxTextChanged;
|
||
|
||
/// <summary>
|
||
/// Occurs when selected item on combo box has changed.
|
||
/// </summary>
|
||
public event EventHandler SelectedIndexChanged;
|
||
|
||
/// <summary>
|
||
/// Creates new instance of ComboBoxItem.
|
||
/// </summary>
|
||
public ComboBoxItem():this("","") {}
|
||
/// <summary>
|
||
/// Creates new instance of ComboBoxItem and assigns item name.
|
||
/// </summary>
|
||
/// <param name="sName">Item Name.</param>
|
||
public ComboBoxItem(string sName):this(sName,""){}
|
||
/// <summary>
|
||
/// Creates new instance of ComboBoxItem and assigns item name and item text.
|
||
/// </summary>
|
||
/// <param name="sName">Item Name</param>
|
||
/// <param name="ItemText">Item Text.</param>
|
||
public ComboBoxItem(string sName, string ItemText):base(sName,ItemText)
|
||
{
|
||
CreateComboBox();
|
||
m_ComboWidth=64;
|
||
m_SupportedOrientation=eSupportedOrientation.Horizontal;
|
||
this.IsAccessible=true;
|
||
this.AccessibleRole = AccessibleRole.ComboBox;
|
||
}
|
||
private void CreateComboBox()
|
||
{
|
||
if(m_ComboBox!=null)
|
||
{
|
||
m_ComboBox.Dispose();
|
||
m_ComboBox=null;
|
||
}
|
||
m_ComboBox = new Controls.ComboBoxEx();
|
||
m_ComboBox.IsStandalone = false;
|
||
m_ComboBox.TabStop = false;
|
||
m_ComboBox.TabIndex = 9999;
|
||
m_ComboBox.Style = this.Style;
|
||
m_ComboBox.DrawMode = System.Windows.Forms.DrawMode.OwnerDrawFixed;
|
||
m_ComboBox.IntegralHeight = false;
|
||
//m_ComboBox.ItemHeight = 13;
|
||
m_ComboBox.ThemeAware = false;
|
||
m_ComboBox.Visible = false;
|
||
m_ComboBox.Text = this.Text;
|
||
m_ComboBox.SelectionStart = 0;
|
||
m_ComboBox.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
|
||
|
||
m_ComboBox.LostFocus += new EventHandler(this.ComboLostFocus);
|
||
m_ComboBox.GotFocus += new EventHandler(this.ComboGotFocus);
|
||
m_ComboBox.MouseHover += new EventHandler(this.ComboMouseHover);
|
||
m_ComboBox.MouseEnter += new EventHandler(this.ComboMouseEnter);
|
||
m_ComboBox.MouseLeave += new EventHandler(this.ComboMouseLeave);
|
||
m_ComboBox.VisibleChanged += new EventHandler(ComboBoxVisibleChanged);
|
||
m_ComboBox.DropDownChange += new Controls.ComboBoxEx.OnDropDownChangeEventHandler(this.ComboDropDownChange);
|
||
m_ComboBox.TextChanged += new EventHandler(this.InternalComboTextChanged);
|
||
m_ComboBox.KeyDown += new System.Windows.Forms.KeyEventHandler(this.ComboKeyDown);
|
||
m_ComboBox.SelectedIndexChanged += new System.EventHandler(this.ComboSelChanged);
|
||
m_ComboBox.PreventEnterBeep = m_PreventEnterBeep;
|
||
m_ComboBox.ParentItem = this;
|
||
if(m_FontCombo)
|
||
m_ComboBox.LoadFonts();
|
||
|
||
if(this.ContainerControl!=null)
|
||
{
|
||
System.Windows.Forms.Control objCtrl=this.ContainerControl as System.Windows.Forms.Control;
|
||
if(objCtrl!=null)
|
||
{
|
||
objCtrl.Controls.Add(m_ComboBox);
|
||
m_ComboBox.Refresh();
|
||
}
|
||
}
|
||
|
||
if(this.Displayed)
|
||
{
|
||
m_ComboBox.Visible=true;
|
||
}
|
||
}
|
||
|
||
public override BaseItem Copy()
|
||
{
|
||
ComboBoxItem objCopy=new ComboBoxItem(this.Name);
|
||
this.CopyToItem(objCopy);
|
||
objCopy.DropDownStyle=this.DropDownStyle;
|
||
objCopy.AlwaysShowCaption=this.AlwaysShowCaption;
|
||
objCopy.FontCombo=this.FontCombo;
|
||
objCopy.ItemHeight=this.ItemHeight;
|
||
objCopy.Caption = this.Caption;
|
||
|
||
return objCopy;
|
||
}
|
||
protected override void CopyToItem(BaseItem copy)
|
||
{
|
||
((ComboBoxItem)copy)._CopyInProgress=true;
|
||
try
|
||
{
|
||
ComboBoxItem objCopy=copy as ComboBoxItem;
|
||
base.CopyToItem(objCopy);
|
||
|
||
|
||
objCopy.ComboWidth=m_ComboWidth;
|
||
objCopy.FontCombo=m_FontCombo;
|
||
objCopy.PreventEnterBeep=m_PreventEnterBeep;
|
||
if (m_ComboBox != null)
|
||
{
|
||
objCopy.DisplayMember = m_ComboBox.DisplayMember;
|
||
|
||
Controls.ComboBoxEx cb = objCopy.ComboBoxEx;
|
||
if (!m_FontCombo)
|
||
{
|
||
foreach (object o in m_ComboBox.Items)
|
||
cb.Items.Add(o);
|
||
}
|
||
cb.SelectedIndex = m_ComboBox.SelectedIndex;
|
||
}
|
||
}
|
||
finally
|
||
{
|
||
((ComboBoxItem)copy)._CopyInProgress=false;
|
||
}
|
||
}
|
||
protected override void Dispose(bool disposing)
|
||
{
|
||
base.Dispose(disposing);
|
||
// Control gets disposed by the parent control it is added to
|
||
//if (m_ComboBox != null)
|
||
//{
|
||
// if (m_ComboBox.Parent == null && !m_ComboBox.IsDisposed)
|
||
// m_ComboBox.Dispose();
|
||
//}
|
||
}
|
||
protected override System.Windows.Forms.AccessibleObject CreateAccessibilityInstance()
|
||
{
|
||
return m_ComboBox.AccessibilityObject;
|
||
}
|
||
/// <summary>
|
||
/// Gets or sets the accessible role of the item.
|
||
/// </summary>
|
||
[Browsable(true), Category("Accessibility"), Description("Gets or sets the accessible role of the item."), DefaultValue(System.Windows.Forms.AccessibleRole.ComboBox)]
|
||
public override System.Windows.Forms.AccessibleRole AccessibleRole
|
||
{
|
||
get { return base.AccessibleRole; }
|
||
set { base.AccessibleRole = value; }
|
||
}
|
||
protected internal override void Serialize(ItemSerializationContext context)
|
||
{
|
||
base.Serialize(context);
|
||
System.Xml.XmlElement ThisItem = context.ItemXmlElement;
|
||
ThisItem.SetAttribute("ComboWidth",System.Xml.XmlConvert.ToString(m_ComboWidth));
|
||
ThisItem.SetAttribute("FontCombo",System.Xml.XmlConvert.ToString(m_FontCombo));
|
||
|
||
ThisItem.SetAttribute("MenuVisibility",System.Xml.XmlConvert.ToString((int)m_MenuVisibility));
|
||
ThisItem.SetAttribute("RecentlyUsed",System.Xml.XmlConvert.ToString(m_RecentlyUsed));
|
||
ThisItem.SetAttribute("DropDownStyle",System.Xml.XmlConvert.ToString((int)m_ComboBox.DropDownStyle));
|
||
//ThisItem.SetAttribute("CText",m_ControlText);
|
||
ThisItem.SetAttribute("ThemeAware",System.Xml.XmlConvert.ToString(m_ComboBox.ThemeAware));
|
||
|
||
ThisItem.SetAttribute("AlwaysShowCaption",System.Xml.XmlConvert.ToString(m_AlwaysShowCaption));
|
||
ThisItem.SetAttribute("ItemHeight",System.Xml.XmlConvert.ToString(m_ComboBox.ItemHeight));
|
||
|
||
if(m_ComboBox.DisplayMember!="")
|
||
ThisItem.SetAttribute("DisplayMembers", m_ComboBox.DisplayMember);
|
||
|
||
if(m_PreventEnterBeep)
|
||
ThisItem.SetAttribute("nobeep",System.Xml.XmlConvert.ToString(m_PreventEnterBeep));
|
||
|
||
if(!m_FontCombo && m_ComboBox.Items.Count>0)
|
||
{
|
||
System.Xml.XmlElement xmlItems=ThisItem.OwnerDocument.CreateElement("cbitems");
|
||
ThisItem.AppendChild(xmlItems);
|
||
foreach(object item in m_ComboBox.Items)
|
||
{
|
||
DevComponents.Editors.ComboItem ci=item as DevComponents.Editors.ComboItem;
|
||
if(ci!=null)
|
||
{
|
||
System.Xml.XmlElement xmlChild=ThisItem.OwnerDocument.CreateElement("ci");
|
||
|
||
if(!ci.BackColor.IsEmpty)
|
||
xmlChild.SetAttribute("bc",BarFunctions.ColorToString(ci.BackColor));
|
||
if(ci.FontName!="")
|
||
xmlChild.SetAttribute("fn",ci.FontName);
|
||
if(ci.FontSize!=8)
|
||
xmlChild.SetAttribute("fs",System.Xml.XmlConvert.ToString(ci.FontSize));
|
||
|
||
xmlChild.SetAttribute("fy",System.Xml.XmlConvert.ToString((int)ci.FontStyle));
|
||
|
||
if(!ci.ForeColor.IsEmpty)
|
||
xmlChild.SetAttribute("fc",BarFunctions.ColorToString(ci.ForeColor));
|
||
|
||
BarFunctions.SerializeImage(ci.Image,xmlChild);
|
||
|
||
if(ci.ImageIndex>=0)
|
||
xmlChild.SetAttribute("img",System.Xml.XmlConvert.ToString(ci.ImageIndex));
|
||
|
||
if(ci.ImagePosition!=System.Windows.Forms.HorizontalAlignment.Left)
|
||
xmlChild.SetAttribute("ip",System.Xml.XmlConvert.ToString((int)ci.ImagePosition));
|
||
|
||
xmlChild.SetAttribute("text",ci.Text);
|
||
|
||
xmlChild.SetAttribute("ta",System.Xml.XmlConvert.ToString((int)ci.TextAlignment));
|
||
xmlChild.SetAttribute("tla",System.Xml.XmlConvert.ToString((int)ci.TextLineAlignment));
|
||
|
||
if(m_ComboBox.SelectedItem==item)
|
||
xmlChild.SetAttribute("selected","1");
|
||
|
||
xmlItems.AppendChild(xmlChild);
|
||
}
|
||
else
|
||
{
|
||
System.Xml.XmlElement xmlChild=ThisItem.OwnerDocument.CreateElement("co");
|
||
xmlChild.InnerText=item.ToString();
|
||
xmlItems.AppendChild(xmlChild);
|
||
|
||
if(m_ComboBox.SelectedItem==item)
|
||
xmlChild.SetAttribute("selected","1");
|
||
}
|
||
}
|
||
}
|
||
}
|
||
|
||
public override void Deserialize(ItemSerializationContext context)
|
||
{
|
||
base.Deserialize(context);
|
||
System.Xml.XmlElement ItemXmlSource = context.ItemXmlElement;
|
||
m_ComboWidth=System.Xml.XmlConvert.ToInt32(ItemXmlSource.GetAttribute("ComboWidth"));
|
||
m_FontCombo=System.Xml.XmlConvert.ToBoolean(ItemXmlSource.GetAttribute("FontCombo"));
|
||
|
||
m_MenuVisibility=(eMenuVisibility)System.Xml.XmlConvert.ToInt32(ItemXmlSource.GetAttribute("MenuVisibility"));
|
||
m_RecentlyUsed=System.Xml.XmlConvert.ToBoolean(ItemXmlSource.GetAttribute("RecentlyUsed"));
|
||
if(ItemXmlSource.HasAttribute("DropDownStyle"))
|
||
m_ComboBox.DropDownStyle=(System.Windows.Forms.ComboBoxStyle)System.Xml.XmlConvert.ToInt32(ItemXmlSource.GetAttribute("DropDownStyle"));
|
||
|
||
if(ItemXmlSource.HasAttribute("CText"))
|
||
this.Text=ItemXmlSource.GetAttribute("CText");
|
||
|
||
if(ItemXmlSource.HasAttribute("ThemeAware"))
|
||
m_ComboBox.ThemeAware=System.Xml.XmlConvert.ToBoolean(ItemXmlSource.GetAttribute("ThemeAware"));
|
||
else
|
||
m_ComboBox.ThemeAware=true;
|
||
|
||
if(ItemXmlSource.HasAttribute("AlwaysShowCaption"))
|
||
m_AlwaysShowCaption=System.Xml.XmlConvert.ToBoolean(ItemXmlSource.GetAttribute("AlwaysShowCaption"));
|
||
|
||
if(ItemXmlSource.HasAttribute("nobeep"))
|
||
this.PreventEnterBeep=System.Xml.XmlConvert.ToBoolean(ItemXmlSource.GetAttribute("nobeep"));
|
||
|
||
System.Xml.XmlNodeList list=ItemXmlSource.GetElementsByTagName("cbitems");
|
||
if(!m_FontCombo && list.Count>0)
|
||
{
|
||
foreach(System.Xml.XmlElement xmlChild in list[0].ChildNodes)
|
||
{
|
||
if(xmlChild.Name=="ci")
|
||
{
|
||
DevComponents.Editors.ComboItem ci=new DevComponents.Editors.ComboItem();
|
||
if(xmlChild.HasAttribute("bc"))
|
||
ci.BackColor=BarFunctions.ColorFromString(xmlChild.GetAttribute("bk"));
|
||
if(xmlChild.HasAttribute("fn"))
|
||
ci.FontName=xmlChild.GetAttribute("fn");
|
||
if(xmlChild.HasAttribute("fs"))
|
||
ci.FontSize=System.Xml.XmlConvert.ToSingle(xmlChild.GetAttribute("fs"));
|
||
if(xmlChild.HasAttribute("fy"))
|
||
ci.FontStyle=(FontStyle)System.Xml.XmlConvert.ToInt32(xmlChild.GetAttribute("fy"));
|
||
if(xmlChild.HasAttribute("fc"))
|
||
ci.ForeColor=BarFunctions.ColorFromString(xmlChild.GetAttribute("fc"));
|
||
|
||
ci.Image=BarFunctions.DeserializeImage(xmlChild);
|
||
|
||
if(xmlChild.HasAttribute("img"))
|
||
ci.ImageIndex=System.Xml.XmlConvert.ToInt32(xmlChild.GetAttribute("img"));
|
||
|
||
if(xmlChild.HasAttribute("ip"))
|
||
ci.ImagePosition=(System.Windows.Forms.HorizontalAlignment)System.Xml.XmlConvert.ToInt32(xmlChild.GetAttribute("ip"));
|
||
|
||
if(xmlChild.HasAttribute("ItemHeight"))
|
||
m_ComboBox.ItemHeight=System.Xml.XmlConvert.ToInt32(xmlChild.GetAttribute("ItemHeight"));
|
||
|
||
ci.Text=xmlChild.GetAttribute("text");
|
||
|
||
ci.TextAlignment=(StringAlignment)System.Xml.XmlConvert.ToInt32(xmlChild.GetAttribute("ta"));
|
||
ci.TextLineAlignment=(StringAlignment)System.Xml.XmlConvert.ToInt32(xmlChild.GetAttribute("tla"));
|
||
|
||
m_ComboBox.Items.Add(ci);
|
||
|
||
if(xmlChild.HasAttribute("selected") && xmlChild.GetAttribute("selected")=="1")
|
||
m_ComboBox.SelectedItem=ci;
|
||
}
|
||
else if(xmlChild.Name=="co")
|
||
{
|
||
m_ComboBox.Items.Add(xmlChild.InnerText);
|
||
if(xmlChild.HasAttribute("selected") && xmlChild.GetAttribute("selected")=="1")
|
||
m_ComboBox.SelectedItem=m_ComboBox.Items[m_ComboBox.Items.Count-1];
|
||
}
|
||
}
|
||
}
|
||
if(m_FontCombo)
|
||
m_ComboBox.LoadFonts();
|
||
|
||
if(m_ComboBox!=null)
|
||
m_ComboBox.Enabled=this.Enabled;
|
||
|
||
if (ItemXmlSource.HasAttribute("DisplayMembers") && m_ComboBox!=null)
|
||
m_ComboBox.DisplayMember = ItemXmlSource.GetAttribute("DisplayMembers");
|
||
}
|
||
|
||
/// <summary>
|
||
/// Gets or sets whether combo box generates the audible alert when Enter key is pressed.
|
||
/// </summary>
|
||
[System.ComponentModel.Browsable(true),DevCoBrowsable(true),System.ComponentModel.Category("Behavior"),System.ComponentModel.Description("Indicates whether combo box generates the audible alert when Enter key is pressed."),System.ComponentModel.DefaultValue(false)]
|
||
public bool PreventEnterBeep
|
||
{
|
||
get
|
||
{
|
||
return m_PreventEnterBeep;
|
||
}
|
||
set
|
||
{
|
||
m_PreventEnterBeep=value;
|
||
if(m_ComboBox!=null)
|
||
m_ComboBox.PreventEnterBeep=value;
|
||
}
|
||
}
|
||
|
||
private Color _LabelForeColor = Color.Empty;
|
||
/// <summary>
|
||
/// Gets or sets the text color of the combo box label.
|
||
/// </summary>
|
||
[Category("Columns"), Description("Indicates color of combo box label.")]
|
||
public Color LabelForeColor
|
||
{
|
||
get { return _LabelForeColor; }
|
||
set { _LabelForeColor = value; this.Refresh(); }
|
||
}
|
||
/// <summary>
|
||
/// Gets whether property should be serialized.
|
||
/// </summary>
|
||
[EditorBrowsable(EditorBrowsableState.Never)]
|
||
public bool ShouldSerializeLabelForeColor()
|
||
{
|
||
return !_LabelForeColor.IsEmpty;
|
||
}
|
||
/// <summary>
|
||
/// Resets property to its default value.
|
||
/// </summary>
|
||
[EditorBrowsable(EditorBrowsableState.Never)]
|
||
public void ResetLabelForeColor()
|
||
{
|
||
this.LabelForeColor = Color.Empty;
|
||
}
|
||
|
||
public override void Paint(ItemPaintArgs pa)
|
||
{
|
||
if(this.SuspendLayout)
|
||
return;
|
||
System.Drawing.Graphics g=pa.Graphics;
|
||
Rectangle r=this.DisplayRectangle;
|
||
Size objImageSize=GetMaxImageSize();
|
||
bool bOnMenu = this.IsOnMenu && !(this.Parent is ItemContainer);
|
||
bool enabled = GetEnabled(pa.ContainerControl);
|
||
Color textColor = enabled ? SystemColors.ControlText : SystemColors.ControlDark;
|
||
if (BarFunctions.IsOffice2007Style(this.EffectiveStyle) && pa.Renderer is Rendering.Office2007Renderer &&
|
||
((Rendering.Office2007Renderer)pa.Renderer).ColorTable.ButtonItemColors.Count > 0)
|
||
{
|
||
textColor = enabled ? ((Rendering.Office2007Renderer)pa.Renderer).ColorTable.ButtonItemColors[0].Default.Text : pa.Colors.ItemDisabledText;
|
||
}
|
||
if (!_LabelForeColor.IsEmpty)
|
||
textColor = _LabelForeColor;
|
||
|
||
if(this.Orientation==eOrientation.Horizontal)
|
||
{
|
||
if (bOnMenu && (EffectiveStyle == eDotNetBarStyle.OfficeXP || EffectiveStyle == eDotNetBarStyle.Office2003 || EffectiveStyle == eDotNetBarStyle.VS2005 || BarFunctions.IsOffice2007Style(EffectiveStyle)))
|
||
{
|
||
objImageSize.Width+=7;
|
||
r.Width-=objImageSize.Width;
|
||
r.X+=objImageSize.Width;
|
||
if(this.IsOnCustomizeMenu)
|
||
objImageSize.Width+=objImageSize.Height+8;
|
||
// Draw side bar
|
||
Rectangle sideRect = new Rectangle(m_Rect.Left, m_Rect.Top, objImageSize.Width, m_Rect.Height);
|
||
if(this.MenuVisibility==eMenuVisibility.VisibleIfRecentlyUsed && !this.RecentlyUsed)
|
||
{
|
||
if(!pa.Colors.MenuUnusedSide2.IsEmpty)
|
||
{
|
||
System.Drawing.Drawing2D.LinearGradientBrush gradient=BarFunctions.CreateLinearGradientBrush(sideRect,pa.Colors.MenuUnusedSide,pa.Colors.MenuUnusedSide2,pa.Colors.MenuUnusedSideGradientAngle);
|
||
g.FillRectangle(gradient,sideRect);
|
||
gradient.Dispose();
|
||
}
|
||
else
|
||
g.FillRectangle(new SolidBrush(pa.Colors.MenuUnusedSide), sideRect);
|
||
}
|
||
else
|
||
{
|
||
if(!pa.Colors.MenuSide2.IsEmpty)
|
||
{
|
||
System.Drawing.Drawing2D.LinearGradientBrush gradient = BarFunctions.CreateLinearGradientBrush(sideRect, pa.Colors.MenuSide, pa.Colors.MenuSide2, pa.Colors.MenuSideGradientAngle);
|
||
g.FillRectangle(gradient, sideRect);
|
||
gradient.Dispose();
|
||
}
|
||
else
|
||
g.FillRectangle(new SolidBrush(pa.Colors.MenuSide), sideRect);
|
||
}
|
||
if (BarFunctions.IsOffice2007Style(EffectiveStyle) && GlobalManager.Renderer is Office2007Renderer)
|
||
{
|
||
Office2007MenuColorTable mt = ((Office2007Renderer)GlobalManager.Renderer).ColorTable.Menu;
|
||
if (mt != null && !mt.SideBorder.IsEmpty)
|
||
{
|
||
if (pa.RightToLeft)
|
||
DisplayHelp.DrawGradientLine(g, sideRect.X + 1, sideRect.Y, sideRect.X + 1, sideRect.Bottom - 1, mt.SideBorder, 1);
|
||
else
|
||
DisplayHelp.DrawGradientLine(g, sideRect.Right - 2, sideRect.Y, sideRect.Right - 2, sideRect.Bottom - 1, mt.SideBorder, 1);
|
||
}
|
||
if (mt != null && !mt.SideBorderLight.IsEmpty)
|
||
{
|
||
if (pa.RightToLeft)
|
||
DisplayHelp.DrawGradientLine(g, sideRect.X, sideRect.Y, sideRect.X, sideRect.Bottom - 1, mt.SideBorder, 1);
|
||
else
|
||
DisplayHelp.DrawGradientLine(g, sideRect.Right - 1, sideRect.Y, sideRect.Right - 1, sideRect.Bottom - 1, mt.SideBorderLight, 1);
|
||
}
|
||
}
|
||
}
|
||
|
||
if(this.IsOnCustomizeMenu)
|
||
{
|
||
if (this.EffectiveStyle == eDotNetBarStyle.OfficeXP || this.EffectiveStyle == eDotNetBarStyle.Office2003 || EffectiveStyle == eDotNetBarStyle.VS2005 || BarFunctions.IsOffice2007Style(EffectiveStyle))
|
||
{
|
||
r.X+=(objImageSize.Height+8);
|
||
r.Width-=(objImageSize.Height+8);
|
||
}
|
||
else
|
||
{
|
||
r.X+=(objImageSize.Height+4);
|
||
r.Width-=(objImageSize.Height+4);
|
||
}
|
||
}
|
||
|
||
if (bOnMenu && (this.EffectiveStyle == eDotNetBarStyle.OfficeXP || this.EffectiveStyle == eDotNetBarStyle.Office2003 || EffectiveStyle == eDotNetBarStyle.VS2005 || BarFunctions.IsOffice2007Style(EffectiveStyle)))
|
||
{
|
||
if(m_MouseOver)
|
||
{
|
||
Rectangle rHover=this.DisplayRectangle;
|
||
rHover.Inflate(-1,0);
|
||
if (BarFunctions.IsOffice2007Style(EffectiveStyle) && !(pa.Owner is DotNetBarManager) && GlobalManager.Renderer is Office2007Renderer)
|
||
{
|
||
Office2007ButtonItemStateColorTable bt = ((Office2007Renderer)GlobalManager.Renderer).ColorTable.ButtonItemColors[0].MouseOver;
|
||
Office2007ButtonItemPainter.PaintBackground(g, bt, rHover, RoundRectangleShapeDescriptor.RoundCorner3);
|
||
}
|
||
else
|
||
{
|
||
if (!pa.Colors.ItemHotBackground2.IsEmpty)
|
||
{
|
||
System.Drawing.Drawing2D.LinearGradientBrush gradient = BarFunctions.CreateLinearGradientBrush(rHover, pa.Colors.ItemHotBackground, pa.Colors.ItemHotBackground2, pa.Colors.ItemHotBackgroundGradientAngle);
|
||
g.FillRectangle(gradient, rHover);
|
||
gradient.Dispose();
|
||
}
|
||
else
|
||
g.FillRectangle(new SolidBrush(pa.Colors.ItemHotBackground), rHover);
|
||
NativeFunctions.DrawRectangle(g, new Pen(pa.Colors.ItemHotBorder), rHover);
|
||
}
|
||
}
|
||
}
|
||
|
||
// Draw text if needed
|
||
if (Caption != "" && (m_AlwaysShowCaption || bOnMenu))
|
||
{
|
||
eTextFormat objStringFormat=GetStringFormat();
|
||
Font objFont=this.GetFont();
|
||
Rectangle rText=new Rectangle(r.X+8,r.Y,r.Width,r.Height);
|
||
|
||
if (pa.GlassEnabled && this.Parent is CaptionItemContainer && !(this.ContainerControl is Ribbon.QatToolbar))
|
||
{
|
||
if (!pa.CachedPaint)
|
||
Office2007RibbonControlPainter.PaintTextOnGlass(g, Caption, objFont,
|
||
rText, TextDrawing.GetTextFormat(objStringFormat), textColor, true, true, 7);
|
||
}
|
||
else
|
||
{
|
||
TextDrawing.DrawString(g, Caption, objFont, textColor, rText, objStringFormat);
|
||
}
|
||
|
||
Size textSize = TextDrawing.MeasureString(g, Caption, objFont, 0, objStringFormat);
|
||
r.X+=(int)textSize.Width+8;
|
||
r.Width-=((int)textSize.Width+8);
|
||
}
|
||
|
||
if(m_ComboBox==null || this.IsOnCustomizeMenu || this.IsOnCustomizeDialog || this.DesignMode)
|
||
{
|
||
r.Inflate(-3,-2);
|
||
g.FillRectangle(SystemBrushes.Window,r);
|
||
NativeFunctions.DrawRectangle(g,SystemPens.ControlDark,r);
|
||
r.X=r.Right-(System.Windows.Forms.SystemInformation.HorizontalScrollBarThumbWidth-2);
|
||
r.Width=System.Windows.Forms.SystemInformation.HorizontalScrollBarThumbWidth-2;
|
||
System.Windows.Forms.ControlPaint.DrawComboButton(g,r,System.Windows.Forms.ButtonState.Flat);
|
||
}
|
||
else
|
||
{
|
||
int selLength = m_ComboBox.SelectionLength;
|
||
r.Inflate(-2,-2);
|
||
if(m_ComboBox.Width!=r.Width)
|
||
m_ComboBox.Width=r.Width;
|
||
Point loc=r.Location;
|
||
loc.Offset((r.Width-m_ComboBox.Width)/2,(r.Height-m_ComboBox.Height)/2);
|
||
|
||
ScrollableControl scc = pa.ContainerControl as ScrollableControl;
|
||
if (scc != null && scc.AutoScroll)
|
||
loc.Offset(scc.AutoScrollPosition.X, scc.AutoScrollPosition.Y);
|
||
if (m_ComboBox.Location != loc)
|
||
m_ComboBox.Location = loc;
|
||
|
||
if (selLength > 0 && selLength < 1000 && m_ComboBox.SelectionLength != selLength && m_ComboBox.Text.Length > selLength && m_ComboBox.DropDownStyle == ComboBoxStyle.DropDown)
|
||
{
|
||
m_ComboBox.SelectionLength = selLength;
|
||
}
|
||
}
|
||
|
||
if(this.IsOnCustomizeMenu && this.Visible)
|
||
{
|
||
// Draw check box if this item is visible
|
||
Rectangle rBox=new Rectangle(m_Rect.Left,m_Rect.Top,m_Rect.Height,m_Rect.Height);
|
||
if (EffectiveStyle == eDotNetBarStyle.OfficeXP || EffectiveStyle == eDotNetBarStyle.Office2003 || EffectiveStyle == eDotNetBarStyle.VS2005 || BarFunctions.IsOffice2007Style(EffectiveStyle))
|
||
rBox.Inflate(-1,-1);
|
||
BarFunctions.DrawMenuCheckBox(pa, rBox, EffectiveStyle, m_MouseOver);
|
||
}
|
||
}
|
||
else
|
||
{
|
||
string Caption=this.Text;
|
||
if(Caption=="")
|
||
Caption="...";
|
||
else
|
||
Caption+=" <20>";
|
||
|
||
if (EffectiveStyle == eDotNetBarStyle.OfficeXP || EffectiveStyle == eDotNetBarStyle.Office2003 || EffectiveStyle == eDotNetBarStyle.VS2005 || BarFunctions.IsOffice2007Style(EffectiveStyle))
|
||
g.FillRectangle(new SolidBrush(ColorFunctions.ToolMenuFocusBackColor(g)),this.DisplayRectangle);
|
||
else
|
||
g.FillRectangle(SystemBrushes.Control,this.DisplayRectangle);
|
||
|
||
if(m_MouseOver && !this.DesignMode)
|
||
{
|
||
if (EffectiveStyle == eDotNetBarStyle.Office2000)
|
||
{
|
||
//r.Inflate(-1,-1);
|
||
System.Windows.Forms.ControlPaint.DrawBorder3D(g,r,System.Windows.Forms.Border3DStyle.RaisedInner,System.Windows.Forms.Border3DSide.All);
|
||
}
|
||
else if (EffectiveStyle == eDotNetBarStyle.OfficeXP || EffectiveStyle == eDotNetBarStyle.Office2003 || EffectiveStyle == eDotNetBarStyle.VS2005 || BarFunctions.IsOffice2007Style(EffectiveStyle))
|
||
{
|
||
r.Inflate(-1,-1);
|
||
g.FillRectangle(new SolidBrush(ColorFunctions.HoverBackColor(g)),r);
|
||
NativeFunctions.DrawRectangle(g,SystemPens.Highlight,r);
|
||
}
|
||
}
|
||
|
||
r=new Rectangle(m_Rect.Top,-m_Rect.Right,m_Rect.Height,m_Rect.Width);
|
||
g.RotateTransform(90);
|
||
eTextFormat sf=GetStringFormat();
|
||
sf |= eTextFormat.HorizontalCenter;
|
||
TextDrawing.DrawStringLegacy(g, Caption, GetFont(), textColor, r, sf);
|
||
g.ResetTransform();
|
||
}
|
||
|
||
if(this.Focused && this.DesignMode)
|
||
{
|
||
r=this.DisplayRectangle;
|
||
r.Inflate(-1,-1);
|
||
DesignTime.DrawDesignTimeSelection(g,r,pa.Colors.ItemDesignTimeBorder);
|
||
}
|
||
|
||
//if(this.DesignMode)
|
||
this.DrawInsertMarker(g);
|
||
}
|
||
|
||
/// <summary>
|
||
/// IBlock member implementation
|
||
/// </summary>
|
||
[Browsable(false), DevCoBrowsable(false), DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden), EditorBrowsable(EditorBrowsableState.Never)]
|
||
public override System.Drawing.Rectangle Bounds
|
||
{
|
||
get { return base.Bounds; }
|
||
set
|
||
{
|
||
if (base.Bounds != value)
|
||
{
|
||
bool topLocationChanged = base.Bounds.Top != value.Top;
|
||
bool leftLocationChanged = base.Bounds.Left != value.Left;
|
||
base.Bounds = value;
|
||
if ((topLocationChanged || leftLocationChanged) && (this.ContainerControl is ItemPanel || this.ContainerControl is ExplorerBar))
|
||
UpdateControlLocation();
|
||
}
|
||
}
|
||
}
|
||
|
||
private void UpdateControlLocation()
|
||
{
|
||
if (m_ComboBox == null) return;
|
||
Rectangle r = this.DisplayRectangle;
|
||
r.Inflate(-2, -2);
|
||
m_ComboBox.Location = r.Location;
|
||
}
|
||
|
||
public override void RecalcSize()
|
||
{
|
||
if (this.SuspendLayout)
|
||
return;
|
||
|
||
bool bOnMenu = this.IsOnMenu;
|
||
|
||
if (this.Orientation == eOrientation.Horizontal)
|
||
{
|
||
// Default Height
|
||
if (this.Parent != null && this.Parent is ImageItem)
|
||
m_Rect.Height = ((ImageItem)this.Parent).SubItemsImageSize.Height + Dpi.Height(4);
|
||
else
|
||
m_Rect.Height = this.SubItemsImageSize.Height + Dpi.Height(4);
|
||
|
||
eDotNetBarStyle effectiveStyle = EffectiveStyle;
|
||
if (effectiveStyle == eDotNetBarStyle.OfficeXP || effectiveStyle == eDotNetBarStyle.Office2003 || effectiveStyle == eDotNetBarStyle.VS2005 || BarFunctions.IsOffice2007Style(effectiveStyle))
|
||
{
|
||
if (m_ComboBox != null && m_Rect.Height < (m_ComboBox.Height + 2))
|
||
m_Rect.Height = m_ComboBox.Height + 2;
|
||
}
|
||
else
|
||
{
|
||
if (m_ComboBox != null && m_Rect.Height < (m_ComboBox.Height + 2))
|
||
m_Rect.Height = m_ComboBox.Height + 2;
|
||
}
|
||
|
||
// Default width
|
||
m_Rect.Width = Dpi.Width(m_ComboWidth + 4);
|
||
|
||
// Calculate Item Height
|
||
if (Caption != "" && (m_AlwaysShowCaption || bOnMenu))
|
||
{
|
||
System.Windows.Forms.Control objCtrl = this.ContainerControl as System.Windows.Forms.Control;
|
||
if (objCtrl != null && IsHandleValid(objCtrl))
|
||
{
|
||
Graphics g = BarFunctions.CreateGraphics(objCtrl);
|
||
try
|
||
{
|
||
Size textSize = Size.Empty;
|
||
if (m_Orientation == eOrientation.Vertical && !bOnMenu)
|
||
textSize = TextDrawing.MeasureStringLegacy(g, Caption, GetFont(), Size.Empty, GetStringFormat());
|
||
else
|
||
textSize = TextDrawing.MeasureString(g, Caption, GetFont(), 0, GetStringFormat());
|
||
if (textSize.Height > this.SubItemsImageSize.Height && textSize.Height > m_Rect.Height)
|
||
m_Rect.Height = (int)textSize.Height + 4;
|
||
m_Rect.Width = Dpi.Width(m_ComboWidth + 4) + (int)textSize.Width + 8;
|
||
}
|
||
finally
|
||
{
|
||
g.Dispose();
|
||
}
|
||
}
|
||
}
|
||
|
||
Size objImageSize = GetMaxImageSize();
|
||
if (this.IsOnMenu && (effectiveStyle == eDotNetBarStyle.OfficeXP || effectiveStyle == eDotNetBarStyle.Office2003 || effectiveStyle == eDotNetBarStyle.VS2005 || BarFunctions.IsOffice2007Style(effectiveStyle)))
|
||
{
|
||
// THis is side bar that will need to be drawn for DotNet style
|
||
m_Rect.Width += (objImageSize.Width + 7);
|
||
}
|
||
|
||
if (this.IsOnCustomizeMenu)
|
||
m_Rect.Width += (objImageSize.Height + 2);
|
||
}
|
||
else
|
||
{
|
||
// Default width
|
||
m_Rect.Width = Dpi.Width(this.SubItemsImageSize.Width + 4);
|
||
string caption = this.Caption;
|
||
if (caption == "")
|
||
caption = "...";
|
||
else
|
||
caption += " <20>";
|
||
System.Windows.Forms.Control objCtrl = this.ContainerControl as System.Windows.Forms.Control;
|
||
if (objCtrl != null && IsHandleValid(objCtrl))
|
||
{
|
||
Graphics g = BarFunctions.CreateGraphics(objCtrl);
|
||
try
|
||
{
|
||
SizeF textSize = TextDrawing.MeasureString(g, caption, GetFont(), 0, GetStringFormat());
|
||
if (textSize.Height > this.SubItemsImageSize.Height)
|
||
m_Rect.Width = (int)textSize.Height + 4;
|
||
m_Rect.Height = (int)textSize.Width + 8;
|
||
}
|
||
finally
|
||
{
|
||
g.Dispose();
|
||
}
|
||
}
|
||
|
||
}
|
||
|
||
// Always call base implementation to reset resize flag
|
||
base.RecalcSize();
|
||
}
|
||
protected internal override void OnContainerChanged(object objOldContainer)
|
||
{
|
||
base.OnContainerChanged(objOldContainer);
|
||
if(m_ComboBox!=null)
|
||
{
|
||
if(m_ComboBox.Parent!=null)
|
||
{
|
||
//bool bVisible=false;
|
||
if(m_ComboBox.Visible)
|
||
{
|
||
m_ComboBox.Visible=false;
|
||
//bVisible=true;
|
||
}
|
||
System.Windows.Forms.Control parent=m_ComboBox.Parent;
|
||
parent.Controls.Remove(m_ComboBox);
|
||
//if(bVisible)
|
||
//m_ComboBox.Visible=true;
|
||
}
|
||
|
||
System.Windows.Forms.Control objCtrl=null;
|
||
if(this.ContainerControl!=null)
|
||
{
|
||
objCtrl=this.ContainerControl as System.Windows.Forms.Control;
|
||
if(objCtrl!=null)
|
||
{
|
||
objCtrl.Controls.Add(m_ComboBox);
|
||
OnDisplayedChanged();
|
||
m_ComboBox.Refresh();
|
||
}
|
||
}
|
||
}
|
||
}
|
||
protected internal override void OnAfterItemRemoved(BaseItem item, int itemIndex)
|
||
{
|
||
base.OnAfterItemRemoved(item, itemIndex);
|
||
this.ContainerControl=null;
|
||
}
|
||
protected internal override void OnVisibleChanged(bool newValue)
|
||
{
|
||
if(m_ComboBox!=null && !newValue)
|
||
m_ComboBox.Visible=newValue;
|
||
base.OnVisibleChanged(newValue);
|
||
}
|
||
protected override void OnDisplayedChanged()
|
||
{
|
||
if(m_ComboBox!=null && !(this.IsOnCustomizeMenu || this.IsOnCustomizeDialog || this.DesignMode))
|
||
{
|
||
m_ComboBox.Visible=this.Displayed;
|
||
}
|
||
}
|
||
[EditorBrowsable(EditorBrowsableState.Never)]
|
||
public override void OnGotFocus()
|
||
{
|
||
base.OnGotFocus();
|
||
if(m_ComboBox==null)
|
||
return;
|
||
if(m_ComboBox.Focused || this.IsOnCustomizeMenu || this.IsOnCustomizeDialog || this.DesignMode)
|
||
return;
|
||
m_ComboBox.Focus();
|
||
}
|
||
|
||
private void ComboLostFocus(object sender, EventArgs e)
|
||
{
|
||
this.HideToolTip();
|
||
this.Text=m_ComboBox.Text;
|
||
this.ReleaseFocus();
|
||
if(!m_MouseOver)
|
||
return;
|
||
m_MouseOver=false;
|
||
this.Refresh();
|
||
}
|
||
|
||
private void ComboMouseHover(object sender, EventArgs e)
|
||
{
|
||
if(this.DesignMode)
|
||
return;
|
||
if(System.Windows.Forms.Control.MouseButtons==System.Windows.Forms.MouseButtons.None)
|
||
ShowToolTip();
|
||
}
|
||
|
||
private void ComboMouseEnter(object sender, EventArgs e)
|
||
{
|
||
if(!m_MouseOver)
|
||
{
|
||
m_MouseOver=true;
|
||
this.Refresh();
|
||
}
|
||
}
|
||
|
||
private void ComboMouseLeave(object sender, EventArgs e)
|
||
{
|
||
this.HideToolTip();
|
||
if(m_ComboBox.Focused)
|
||
return;
|
||
if(m_MouseOver)
|
||
{
|
||
m_MouseOver=false;
|
||
this.Refresh();
|
||
}
|
||
}
|
||
private void ComboBoxVisibleChanged(object sender, EventArgs e)
|
||
{
|
||
this.HideToolTip();
|
||
}
|
||
|
||
private void ComboGotFocus(object sender, EventArgs e)
|
||
{
|
||
this.HideToolTip();
|
||
this.Focus();
|
||
|
||
if (GetEnabled() && !this.DesignMode)
|
||
{
|
||
if(m_MenuVisibility==eMenuVisibility.VisibleIfRecentlyUsed && !m_RecentlyUsed && this.IsOnMenu)
|
||
{
|
||
// Propagate to the top
|
||
m_RecentlyUsed=true;
|
||
BaseItem objItem=this.Parent;
|
||
while(objItem!=null)
|
||
{
|
||
IPersonalizedMenuItem ipm=objItem as IPersonalizedMenuItem;
|
||
if(ipm!=null)
|
||
ipm.RecentlyUsed=true;
|
||
objItem=objItem.Parent;
|
||
}
|
||
}
|
||
}
|
||
}
|
||
|
||
private void ComboSelChanged(object sender, EventArgs e)
|
||
{
|
||
if (!_CopyInProgress)
|
||
{
|
||
this.RaiseClick();
|
||
if (SelectedIndexChanged != null)
|
||
SelectedIndexChanged(this, e);
|
||
if (ShouldSyncProperties)
|
||
BarFunctions.SyncProperty(this, "SelectedIndex");
|
||
ExecuteCommand();
|
||
}
|
||
|
||
}
|
||
|
||
private void ComboKeyDown(object sender,System.Windows.Forms.KeyEventArgs e)
|
||
{
|
||
this.HideToolTip();
|
||
if(e.KeyCode==System.Windows.Forms.Keys.Enter && this.Parent is PopupItem)
|
||
{
|
||
((PopupItem)this.Parent).ClosePopup();
|
||
}
|
||
}
|
||
private void ComboDropDownChange(object sender,bool bExpanded)
|
||
{
|
||
this.Expanded=bExpanded;
|
||
if(!bExpanded)
|
||
this.ReleaseFocus();
|
||
}
|
||
protected override void OnIsOnCustomizeDialogChanged()
|
||
{
|
||
base.OnIsOnCustomizeDialogChanged();
|
||
CustomizeChanged();
|
||
}
|
||
|
||
protected override void OnDesignModeChanged()
|
||
{
|
||
base.OnDesignModeChanged();
|
||
CustomizeChanged();
|
||
}
|
||
|
||
protected override void OnIsOnCustomizeMenuChanged()
|
||
{
|
||
base.OnIsOnCustomizeMenuChanged();
|
||
CustomizeChanged();
|
||
}
|
||
|
||
private void CustomizeChanged()
|
||
{
|
||
if(this.IsOnCustomizeMenu || this.IsOnCustomizeDialog || this.DesignMode)
|
||
{
|
||
m_ComboBox.Visible=false;
|
||
}
|
||
else
|
||
{
|
||
m_ComboBox.Visible=this.Displayed;
|
||
}
|
||
}
|
||
|
||
/// <summary>
|
||
/// Gets or sets the width of the of the drop-down portion of a combo box.
|
||
/// </summary>
|
||
[Category("Layout"), Browsable(true), Description("Indicates width of the of the drop-down portion of a combo box.")]
|
||
public int DropDownWidth
|
||
{
|
||
get { return m_ComboBox.DropDownWidth; }
|
||
set { m_ComboBox.DropDownWidth = value; }
|
||
}
|
||
|
||
/// <summary>
|
||
/// Returns whether property should be serialized.
|
||
/// </summary>
|
||
[EditorBrowsable(EditorBrowsableState.Never)]
|
||
public bool ShouldSerializeDropDownWidth()
|
||
{
|
||
return m_ComboBox.Width != m_ComboBox.DropDownWidth;
|
||
}
|
||
|
||
/// <summary>
|
||
/// Gets or sets the height of the of the drop-down portion of a combo box.
|
||
/// </summary>
|
||
[Category("Layout"), Browsable(true), DefaultValue(0), Description("Indicates height of the of the drop-down portion of a combo box.")]
|
||
public int DropDownHeight
|
||
{
|
||
get { return m_ComboBox.DropDownHeight; }
|
||
set { m_ComboBox.DropDownHeight = value; }
|
||
}
|
||
|
||
/// <summary>
|
||
/// Indicates the Width of the combo box part of the item.
|
||
/// </summary>
|
||
[System.ComponentModel.Browsable(true),DevCoBrowsable(true),System.ComponentModel.Category("Layout"),System.ComponentModel.Description("Indicates the Width of the combo box part of the item."),System.ComponentModel.DefaultValue(64)]
|
||
public int ComboWidth
|
||
{
|
||
get
|
||
{
|
||
return m_ComboWidth;
|
||
}
|
||
set
|
||
{
|
||
if(m_ComboWidth!=value)
|
||
{
|
||
m_ComboWidth=value;
|
||
if(this.Name!="" && this.GlobalItem)
|
||
{
|
||
BarFunctions.SetProperty(this.GetOwner(),this.GetType(),m_Name,System.ComponentModel.TypeDescriptor.GetProperties(this)["ComboWidth"],m_ComboWidth);
|
||
}
|
||
NeedRecalcSize=true;
|
||
this.Refresh();
|
||
}
|
||
OnAppearanceChanged();
|
||
}
|
||
}
|
||
|
||
/// <summary>
|
||
/// Overridden. Releases the input focus.
|
||
/// </summary>
|
||
public override void ReleaseFocus()
|
||
{
|
||
if(m_ComboBox!=null && m_ComboBox.Focused)
|
||
m_ComboBox.ReleaseFocus();
|
||
base.ReleaseFocus();
|
||
}
|
||
|
||
/// <summary>
|
||
/// Indicates whether control automatically releases its input focus when selection is made using keyboard.
|
||
/// </summary>
|
||
[DefaultValue(true), Browsable(true), Category("Behavior"), Description("Indicates whether control automatically releases its input focus when selection is made using keyboard.")]
|
||
public bool AutoReleaseFocus
|
||
{
|
||
get
|
||
{
|
||
return m_ComboBox.AutoReleaseFocus;
|
||
}
|
||
set
|
||
{
|
||
m_ComboBox.AutoReleaseFocus = value;
|
||
}
|
||
}
|
||
|
||
/// <summary>
|
||
/// Returns the reference to the inner combo box control.
|
||
/// </summary>
|
||
[Browsable(false)]
|
||
public ComboBoxEx ComboBoxEx
|
||
{
|
||
get
|
||
{
|
||
return m_ComboBox;
|
||
}
|
||
}
|
||
|
||
// [System.ComponentModel.Browsable(true),System.ComponentModel.Category("Appearance"),System.ComponentModel.Description("The caption of the item.")]
|
||
// public string Caption
|
||
// {
|
||
// get
|
||
// {
|
||
// return m_Caption;
|
||
// }
|
||
// set
|
||
// {
|
||
// if(m_Caption!=value)
|
||
// {
|
||
// m_Caption=value;
|
||
// if(this.Name!="" && this.GlobalItem)
|
||
// {
|
||
// BarFunctions.SetProperty(this.GetOwner(),this.GetType(),m_Name,System.ComponentModel.TypeDescriptor.GetProperties(this)["Caption"],m_Caption);
|
||
// }
|
||
// m_NeedRecalcSize=true;
|
||
// this.Refresh();
|
||
// }
|
||
// }
|
||
// }
|
||
|
||
/// <summary>
|
||
/// Indicates whether item caption is always shown.
|
||
/// </summary>
|
||
[System.ComponentModel.Browsable(true),DevCoBrowsable(true),System.ComponentModel.Category("Behavior"),System.ComponentModel.Description("Indicates whether item caption is always shown."), System.ComponentModel.DefaultValue(false)]
|
||
public bool AlwaysShowCaption
|
||
{
|
||
get
|
||
{
|
||
return m_AlwaysShowCaption;
|
||
}
|
||
set
|
||
{
|
||
if(m_AlwaysShowCaption!=value)
|
||
{
|
||
m_AlwaysShowCaption=value;
|
||
}
|
||
NeedRecalcSize=true;
|
||
}
|
||
}
|
||
private Size GetMaxImageSize()
|
||
{
|
||
if(m_Parent!=null)
|
||
{
|
||
ImageItem objParentImageItem=m_Parent as ImageItem;
|
||
if(objParentImageItem!=null)
|
||
return objParentImageItem.SubItemsImageSize;
|
||
else
|
||
return this.ImageSize;
|
||
}
|
||
else
|
||
return this.ImageSize;
|
||
}
|
||
private eTextFormat GetStringFormat()
|
||
{
|
||
eTextFormat format = eTextFormat.Default;
|
||
format |= eTextFormat.SingleLine;
|
||
format |= eTextFormat.EndEllipsis;
|
||
format |= eTextFormat.VerticalCenter;
|
||
return format;
|
||
//sfmt.HotkeyPrefix=System.Drawing.Text.HotkeyPrefix.Show;
|
||
//sfmt.FormatFlags=sfmt.FormatFlags | StringFormatFlags.NoWrap;
|
||
//sfmt.Trimming=StringTrimming.EllipsisCharacter;
|
||
//sfmt.Alignment=System.Drawing.StringAlignment.Near;
|
||
//sfmt.LineAlignment=System.Drawing.StringAlignment.Center;
|
||
|
||
//return sfmt;
|
||
}
|
||
protected virtual Font GetFont()
|
||
{
|
||
System.Windows.Forms.Control objCtrl=this.ContainerControl as System.Windows.Forms.Control;
|
||
if(objCtrl!=null)
|
||
return (Font)objCtrl.Font;
|
||
return SystemFonts.DefaultFont;
|
||
}
|
||
[System.ComponentModel.Browsable(false),System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)]
|
||
public override void InternalMouseEnter()
|
||
{
|
||
base.InternalMouseEnter();
|
||
//if(this.DesignMode || this.IsOnCustomizeMenu || this.IsOnCustomizeDialog || this.Orientation==eOrientation.Vertical)
|
||
if(!m_MouseOver)
|
||
{
|
||
m_MouseOver=true;
|
||
this.Refresh();
|
||
}
|
||
}
|
||
[System.ComponentModel.Browsable(false),System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)]
|
||
public override void InternalMouseLeave()
|
||
{
|
||
base.InternalMouseLeave();
|
||
if(m_MouseOver)
|
||
{
|
||
m_MouseOver=false;
|
||
this.Refresh();
|
||
}
|
||
}
|
||
protected internal override bool IsAnyOnHandle(IntPtr iHandle)
|
||
{
|
||
bool bRet=base.IsAnyOnHandle(iHandle);
|
||
if(!bRet && m_ComboBox!=null && m_ComboBox.DroppedDown && m_ComboBox.DropDownHandle!=IntPtr.Zero && m_ComboBox.DropDownHandle==iHandle)
|
||
bRet=true;
|
||
return bRet;
|
||
}
|
||
protected override void OnStyleChanged()
|
||
{
|
||
base.OnStyleChanged();
|
||
m_ComboBox.Style=this.Style;
|
||
}
|
||
|
||
/// <summary>
|
||
/// Gets an object representing the collection of the items contained in inner ComboBoxEx.
|
||
/// </summary>
|
||
[System.ComponentModel.Editor("DevComponents.DotNetBar.Design.ComboItemsEditor, DevComponents.DotNetBar.Design, Version=14.1.0.37, Culture=neutral, PublicKeyToken=90f470f34c89ccaf", typeof(System.Drawing.Design.UITypeEditor)), System.ComponentModel.Category("Data"), DevCoBrowsable(true), Browsable(true), DesignerSerializationVisibility(DesignerSerializationVisibility.Content)]
|
||
public System.Windows.Forms.ComboBox.ObjectCollection Items
|
||
{
|
||
get
|
||
{
|
||
return m_ComboBox.Items;
|
||
|
||
}
|
||
}
|
||
|
||
/// <summary>
|
||
/// Gets or sets a value specifying the style of the combo box.
|
||
/// </summary>
|
||
[System.ComponentModel.Browsable(true),DevCoBrowsable(true),System.ComponentModel.Category("Appearance"),DefaultValue(System.Windows.Forms.ComboBoxStyle.DropDownList),System.ComponentModel.Description("Gets or sets a value specifying the style of the combo box.")]
|
||
public System.Windows.Forms.ComboBoxStyle DropDownStyle
|
||
{
|
||
get
|
||
{
|
||
return m_ComboBox.DropDownStyle;
|
||
}
|
||
set
|
||
{
|
||
m_ComboBox.DropDownStyle=value;
|
||
}
|
||
}
|
||
|
||
/// <summary>
|
||
/// Gets or sets the starting index of text selected in the combo box.
|
||
/// </summary>
|
||
[Browsable(false),System.ComponentModel.DesignerSerializationVisibility(System.ComponentModel.DesignerSerializationVisibility.Hidden),System.ComponentModel.DefaultValue(0)]
|
||
public int SelectionStart
|
||
{
|
||
get
|
||
{
|
||
return m_ComboBox.SelectionStart;
|
||
}
|
||
set
|
||
{
|
||
m_ComboBox.SelectionStart=value;
|
||
}
|
||
}
|
||
|
||
/// <summary>
|
||
/// Gets or sets the number of characters selected in the editable portion of the combo box.
|
||
/// </summary>
|
||
[Browsable(false),System.ComponentModel.DesignerSerializationVisibility(System.ComponentModel.DesignerSerializationVisibility.Hidden),System.ComponentModel.DefaultValue(0)]
|
||
public int SelectionLength
|
||
{
|
||
get
|
||
{
|
||
return m_ComboBox.SelectionLength;
|
||
}
|
||
set
|
||
{
|
||
m_ComboBox.SelectionLength=value;
|
||
}
|
||
}
|
||
|
||
/// <summary>
|
||
/// Gets or sets the text that is selected in the editable portion of a combo box.
|
||
/// </summary>
|
||
[Browsable(false),System.ComponentModel.DefaultValue(""),System.ComponentModel.DesignerSerializationVisibility(System.ComponentModel.DesignerSerializationVisibility.Hidden)]
|
||
public string SelectedText
|
||
{
|
||
get
|
||
{
|
||
return m_ComboBox.SelectedText;
|
||
}
|
||
set
|
||
{
|
||
m_ComboBox.SelectedText=value;
|
||
}
|
||
}
|
||
|
||
/// <summary>
|
||
/// Gets or sets currently selected item in the combo box.
|
||
/// </summary>
|
||
[Browsable(false),System.ComponentModel.DefaultValue(null),System.ComponentModel.DesignerSerializationVisibility(System.ComponentModel.DesignerSerializationVisibility.Hidden)]
|
||
public object SelectedItem
|
||
{
|
||
get
|
||
{
|
||
return m_ComboBox.SelectedItem;
|
||
}
|
||
set
|
||
{
|
||
m_ComboBox.SelectedItem=value;
|
||
}
|
||
}
|
||
|
||
/// <summary>
|
||
/// Gets or sets the index specifying the currently selected item.
|
||
/// </summary>
|
||
[Browsable(false),System.ComponentModel.DefaultValue(-1),System.ComponentModel.DesignerSerializationVisibility(System.ComponentModel.DesignerSerializationVisibility.Hidden)]
|
||
public int SelectedIndex
|
||
{
|
||
get
|
||
{
|
||
return m_ComboBox.SelectedIndex;
|
||
}
|
||
set
|
||
{
|
||
m_ComboBox.SelectedIndex=value;
|
||
}
|
||
}
|
||
|
||
/// <summary>
|
||
/// Gets or sets the value indicating whether the item automatically loads all the fonts available into the combo box.
|
||
/// </summary>
|
||
[System.ComponentModel.Browsable(true),DevCoBrowsable(true),System.ComponentModel.Category("Behavior"),System.ComponentModel.Description("Automatically loads all the fonts available into the combo box."),System.ComponentModel.DefaultValue(false)]
|
||
public bool FontCombo
|
||
{
|
||
get
|
||
{
|
||
return m_FontCombo;
|
||
}
|
||
set
|
||
{
|
||
if(m_FontCombo!=value)
|
||
{
|
||
m_FontCombo=value;
|
||
if(m_FontCombo)
|
||
{
|
||
m_ComboBox.LoadFonts();
|
||
m_ComboBox.DropDownStyle=System.Windows.Forms.ComboBoxStyle.DropDownList;
|
||
//m_ComboBox.DrawMode=System.Windows.Forms.DrawMode.OwnerDrawVariable;
|
||
}
|
||
}
|
||
}
|
||
}
|
||
|
||
/// <summary>
|
||
/// Gets or sets the height of an item in the combo box.
|
||
/// </summary>
|
||
[DefaultValue(15), System.ComponentModel.Browsable(true),DevCoBrowsable(true),System.ComponentModel.Category("Behavior"),System.ComponentModel.Description("Indicates the height of an item in the combo box.")]
|
||
public int ItemHeight
|
||
{
|
||
get
|
||
{
|
||
return m_ComboBox.ItemHeight;
|
||
}
|
||
set
|
||
{
|
||
m_ComboBox.ItemHeight=value;
|
||
}
|
||
}
|
||
|
||
// IPersonalizedMenuItem Implementation
|
||
/// <summary>
|
||
/// Indicates item's visibility when on pop-up menu.
|
||
/// </summary>
|
||
[System.ComponentModel.Browsable(true),DevCoBrowsable(true),System.ComponentModel.Category("Appearance"),System.ComponentModel.Description("Indicates item's visiblity when on pop-up menu."),System.ComponentModel.DefaultValue(eMenuVisibility.VisibleAlways)]
|
||
public eMenuVisibility MenuVisibility
|
||
{
|
||
get
|
||
{
|
||
return m_MenuVisibility;
|
||
}
|
||
set
|
||
{
|
||
if(m_MenuVisibility!=value)
|
||
{
|
||
m_MenuVisibility=value;
|
||
if(m_Name!="" && this.GlobalItem)
|
||
{
|
||
BarFunctions.SetProperty(this.GetOwner(),this.GetType(),m_Name,System.ComponentModel.TypeDescriptor.GetProperties(this)["MenuVisibility"],m_MenuVisibility);
|
||
}
|
||
}
|
||
}
|
||
}
|
||
/// <summary>
|
||
/// Gets or sets the value that indicates whether the item was recently used.
|
||
/// </summary>
|
||
[System.ComponentModel.Browsable(false),System.ComponentModel.DefaultValue(false)]
|
||
public bool RecentlyUsed
|
||
{
|
||
get
|
||
{
|
||
return m_RecentlyUsed;
|
||
}
|
||
set
|
||
{
|
||
if(m_RecentlyUsed!=value)
|
||
{
|
||
m_RecentlyUsed=value;
|
||
if(m_Name!="" && this.GlobalItem)
|
||
{
|
||
BarFunctions.SetProperty(this.GetOwner(),this.GetType(),m_Name,System.ComponentModel.TypeDescriptor.GetProperties(this)["RecentlyUsed"],m_RecentlyUsed);
|
||
}
|
||
}
|
||
}
|
||
}
|
||
|
||
protected override void OnEnabledChanged()
|
||
{
|
||
base.OnEnabledChanged();
|
||
if(m_ComboBox!=null)
|
||
m_ComboBox.Enabled=this.Enabled;
|
||
}
|
||
|
||
private void InternalComboTextChanged(object sender, EventArgs e)
|
||
{
|
||
if(!_SettingText)
|
||
this.Text = m_ComboBox.Text;
|
||
OnComboBoxTextChanged(e);
|
||
}
|
||
|
||
/// <summary>
|
||
/// Raises the ComboBoxTextChanged event.
|
||
/// </summary>
|
||
/// <param name="e">Provides event arguments.</param>
|
||
protected virtual void OnComboBoxTextChanged(EventArgs e)
|
||
{
|
||
if (ComboBoxTextChanged != null)
|
||
ComboBoxTextChanged(this, e);
|
||
}
|
||
|
||
/// <summary>
|
||
/// Overridden. Gets or sets the text associated with this item.
|
||
/// </summary>
|
||
[DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden), Browsable(false), Obsolete("Please use Text property instead to access ComboBox text.")]
|
||
public virtual string ControlText
|
||
{
|
||
get
|
||
{
|
||
return this.Text;
|
||
}
|
||
set
|
||
{
|
||
this.Text = value;
|
||
}
|
||
}
|
||
|
||
/// <summary>
|
||
/// Gets or sets the text associated with this item.
|
||
/// </summary>
|
||
[Browsable(true), Category("Appearance"), Description("The text contained in the underlining Control portion of the item."), DefaultValue("")]
|
||
public override string Text
|
||
{
|
||
get
|
||
{
|
||
return base.Text;
|
||
}
|
||
set
|
||
{
|
||
base.Text = value;
|
||
}
|
||
}
|
||
private bool _SettingText = false;
|
||
protected override void OnTextChanged()
|
||
{
|
||
if (m_ComboBox != null && m_ComboBox.Text != this.Text)
|
||
{
|
||
try
|
||
{
|
||
_SettingText = true;
|
||
m_ComboBox.Text = this.Text;
|
||
}
|
||
finally
|
||
{
|
||
_SettingText = false;
|
||
}
|
||
}
|
||
base.OnTextChanged();
|
||
}
|
||
|
||
private string _Caption = "";
|
||
/// <summary>
|
||
/// Gets or sets the item caption text displayed next to the combo box.
|
||
/// </summary>
|
||
[DefaultValue(""), System.ComponentModel.Category("Appearance"), Description("Indicates the item Caption displayed next to the combo box."), Localizable(true)]
|
||
public string Caption
|
||
{
|
||
get { return _Caption; }
|
||
set
|
||
{
|
||
if (value == null) value = "";
|
||
_Caption = value;
|
||
}
|
||
}
|
||
|
||
/// <summary>
|
||
/// Gets or sets a string that specifies the property of the data source whose contents you want to display. When ComboBoxItem is used in DropDown mode
|
||
/// and objects like ComboItem are added to ComboBoxItems.Items collection DisplayMembers should be set to the name of the property you would
|
||
/// like to use as text representation in editable portion of ComboBox. For example in case of ComboItem objects property should be set to Text.
|
||
/// </summary>
|
||
[System.ComponentModel.Browsable(true), DevCoBrowsable(true), System.ComponentModel.Category("Data"), System.ComponentModel.Description("Indicates string that specifies the property of the data source whose contents you want to display."), System.ComponentModel.DefaultValue("")]
|
||
public virtual string DisplayMember
|
||
{
|
||
get
|
||
{
|
||
if(m_ComboBox!=null)
|
||
return m_ComboBox.DisplayMember;
|
||
return "";
|
||
}
|
||
set
|
||
{
|
||
if (m_ComboBox != null)
|
||
m_ComboBox.DisplayMember = value;
|
||
}
|
||
}
|
||
|
||
/// <summary>
|
||
/// Specifies whether combo box is drawn using themes when running on OS that supports themes like Windows XP
|
||
/// </summary>
|
||
[System.ComponentModel.Browsable(true),DevCoBrowsable(true),System.ComponentModel.Category("Appearance"),System.ComponentModel.Description("Specifies whether combo box is drawn using themes when running on OS that supports themes like Windows XP.")]
|
||
public override bool ThemeAware
|
||
{
|
||
get
|
||
{
|
||
return m_ComboBox.ThemeAware;
|
||
}
|
||
set
|
||
{
|
||
m_ComboBox.ThemeAware=value;
|
||
}
|
||
}
|
||
|
||
[System.ComponentModel.Browsable(false),System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)]
|
||
public override bool IsWindowed
|
||
{
|
||
get {return true;}
|
||
}
|
||
|
||
/// <summary>
|
||
/// Gets or sets the watermark font.
|
||
/// </summary>
|
||
[Browsable(true), Category("Appearance"), Description("Indicates watermark font."), DefaultValue(null)]
|
||
public Font WatermarkFont
|
||
{
|
||
get { return m_ComboBox.WatermarkFont; }
|
||
set { m_ComboBox.WatermarkFont = value; }
|
||
}
|
||
|
||
/// <summary>
|
||
/// Gets or sets the watermark text color.
|
||
/// </summary>
|
||
[Browsable(true), Category("Appearance"), Description("Indicates watermark text color.")]
|
||
public Color WatermarkColor
|
||
{
|
||
get { return m_ComboBox.WatermarkColor; }
|
||
set { m_ComboBox.WatermarkColor = value; }
|
||
}
|
||
/// <summary>
|
||
/// Indicates whether property should be serialized by Windows Forms designer.
|
||
/// </summary>
|
||
[EditorBrowsable(EditorBrowsableState.Never)]
|
||
public bool ShouldSerializeWatermarkColor()
|
||
{
|
||
return m_ComboBox.WatermarkColor != SystemColors.GrayText;
|
||
}
|
||
/// <summary>
|
||
/// Resets the property to default value.
|
||
/// </summary>
|
||
[EditorBrowsable(EditorBrowsableState.Never)]
|
||
public void ResetWatermarkColor()
|
||
{
|
||
this.WatermarkColor = SystemColors.GrayText;
|
||
}
|
||
|
||
/// <summary>
|
||
/// Gets or sets whether watermark text is displayed when control is empty. Default value is true.
|
||
/// </summary>
|
||
[DefaultValue(true), Description("Indicates whether watermark text is displayed when control is empty.")]
|
||
public virtual bool WatermarkEnabled
|
||
{
|
||
get { return m_ComboBox.WatermarkEnabled; }
|
||
set { m_ComboBox.WatermarkEnabled = value; }
|
||
}
|
||
|
||
/// <summary>
|
||
/// Gets or sets the watermark (tip) text displayed inside of the control when Text is not set and control does not have input focus. This property supports text-markup.
|
||
/// Note that WatermarkText is not compatible with the auto-complete feature of .NET Framework 2.0.
|
||
/// </summary>
|
||
[Browsable(true), DefaultValue(""), Localizable(true), Category("Appearance"), Description("Indicates watermark text displayed inside of the control when Text is not set and control does not have input focus."), Editor("DevComponents.DotNetBar.Design.TextMarkupUIEditor, DevComponents.DotNetBar.Design, Version=14.1.0.37, Culture=neutral, PublicKeyToken=90f470f34c89ccaf", typeof(System.Drawing.Design.UITypeEditor))]
|
||
public string WatermarkText
|
||
{
|
||
get { return m_ComboBox.WatermarkText; }
|
||
set
|
||
{
|
||
m_ComboBox.WatermarkText = value;
|
||
}
|
||
}
|
||
|
||
/// <summary>
|
||
/// Gets or sets the watermark hiding behaviour. Default value indicates that watermark is hidden when control receives input focus.
|
||
/// </summary>
|
||
[DefaultValue(eWatermarkBehavior.HideOnFocus), Category("Behavior"), Description("Indicates watermark hiding behaviour.")]
|
||
public eWatermarkBehavior WatermarkBehavior
|
||
{
|
||
get { return m_ComboBox.WatermarkBehavior; }
|
||
set { m_ComboBox.WatermarkBehavior = value; }
|
||
}
|
||
|
||
[DesignerSerializationVisibility(DesignerSerializationVisibility.Content), RefreshProperties(RefreshProperties.All), ParenthesizePropertyName(true)]
|
||
public ControlBindingsCollection DataBindings
|
||
{
|
||
get { return m_ComboBox.DataBindings; }
|
||
}
|
||
|
||
/// <summary>
|
||
/// Gets or sets whether control is stand-alone control. Stand-alone flag affects the appearance of the control in Office 2007 style.
|
||
/// </summary>
|
||
[Browsable(true), DefaultValue(false), Category("Appearance"), Description("Indicates the appearance of the control.")]
|
||
public bool IsStandalone
|
||
{
|
||
get { return m_ComboBox.IsStandalone; }
|
||
set
|
||
{
|
||
m_ComboBox.IsStandalone = value;
|
||
}
|
||
}
|
||
|
||
public override string ToString()
|
||
{
|
||
return m_Text;
|
||
}
|
||
}
|
||
}
|