DotNet 4.8.1 build of DotNetBar
This commit is contained in:
466
PROMS/DotNetBar Source Code/Ribbon/QatCustomizeItem.cs
Normal file
466
PROMS/DotNetBar Source Code/Ribbon/QatCustomizeItem.cs
Normal file
@@ -0,0 +1,466 @@
|
||||
using System;
|
||||
using System.Text;
|
||||
using System.ComponentModel;
|
||||
using DevComponents.DotNetBar.Ribbon;
|
||||
using DevComponents.DotNetBar.Rendering;
|
||||
using DevComponents.DotNetBar.Metro;
|
||||
|
||||
namespace DevComponents.DotNetBar
|
||||
{
|
||||
/// <summary>
|
||||
/// Represents the item that provides Quick Access Toolbar customization.
|
||||
/// </summary>
|
||||
public class QatCustomizeItem : CustomizeItem
|
||||
{
|
||||
#region Private Variables
|
||||
//private bool m_SetupComplete = false;
|
||||
private const string DefaultTooltipText = "Customize Quick Access Toolbar";
|
||||
private const int FIXED_SIZE = 14;
|
||||
#endregion
|
||||
|
||||
#region Internal Implementation
|
||||
/// <summary>
|
||||
/// Creates new instance of CustomizeItem object.
|
||||
/// </summary>
|
||||
public QatCustomizeItem():base()
|
||||
{
|
||||
this.Tooltip = DefaultTooltipText;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Returns copy of CustomizeItem item
|
||||
/// </summary>
|
||||
public override BaseItem Copy()
|
||||
{
|
||||
QatCustomizeItem objCopy = new QatCustomizeItem();
|
||||
this.CopyToItem(objCopy);
|
||||
return objCopy;
|
||||
}
|
||||
|
||||
public override void Paint(ItemPaintArgs p)
|
||||
{
|
||||
Rendering.BaseRenderer renderer = p.Renderer;
|
||||
if (renderer != null)
|
||||
{
|
||||
renderer.DrawQatCustomizeItem(new QatCustomizeItemRendererEventArgs(this, p.Graphics));
|
||||
return;
|
||||
}
|
||||
else
|
||||
{
|
||||
Rendering.QatCustomizeItemPainter painter = PainterFactory.CreateQatCustomizeItemPainter(this);
|
||||
if (painter != null)
|
||||
{
|
||||
painter.Paint(new QatCustomizeItemRendererEventArgs(this, p.Graphics));
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
base.Paint(p);
|
||||
}
|
||||
|
||||
private bool QatContainsItem(RibbonControl rc, string itemName)
|
||||
{
|
||||
if (rc.QuickToolbarItems.Contains(itemName))
|
||||
return true;
|
||||
|
||||
if(this.Parent is QatOverflowItem && this.Parent.SubItems.Contains(itemName))
|
||||
return true;
|
||||
|
||||
return false;
|
||||
}
|
||||
private bool QatContainsItem(MetroShell tab, string itemName)
|
||||
{
|
||||
if (tab.QuickToolbarItems.Contains(itemName))
|
||||
return true;
|
||||
|
||||
if (this.Parent is QatOverflowItem && this.Parent.SubItems.Contains(itemName))
|
||||
return true;
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
protected override void SetupCustomizeItem()
|
||||
{
|
||||
if (this.GetRibbonControl() != null)
|
||||
SetupRibbonCustomizeItem();
|
||||
else if (this.GetMetroTab() != null)
|
||||
SetupMetroTabCustomizeItem();
|
||||
}
|
||||
|
||||
private void SetupMetroTabCustomizeItem()
|
||||
{
|
||||
this.SubItems.Clear();
|
||||
|
||||
// Add customize items...
|
||||
string qatCustomize = "&Customize Quick Access Toolbar...";
|
||||
|
||||
MetroShell tab = GetMetroTab();
|
||||
|
||||
if (tab != null)
|
||||
{
|
||||
qatCustomize = tab.SystemText.QatCustomizeText;
|
||||
this.PopupFont = tab.Font;
|
||||
}
|
||||
|
||||
SubItemsCollection qatFrequentCommands = tab.QatFrequentCommands;
|
||||
|
||||
string s = "<b>Customize Quick Access Toolbar</b>";
|
||||
if (tab != null)
|
||||
s = tab.SystemText.QatCustomizeMenuLabel;
|
||||
LabelItem label = new LabelItem(RibbonControl.SysQatCustomizeLabelName, s);
|
||||
label.PaddingBottom = 2;
|
||||
label.PaddingTop = 2;
|
||||
label.PaddingLeft = 12;
|
||||
label.BorderSide = eBorderSide.Bottom;
|
||||
label.BorderType = eBorderType.SingleLine;
|
||||
label.CanCustomize = false;
|
||||
if (GlobalManager.Renderer is Office2007Renderer)
|
||||
{
|
||||
label.BackColor = ((Office2007Renderer)GlobalManager.Renderer).ColorTable.QuickAccessToolbar.QatCustomizeMenuLabelBackground;
|
||||
label.ForeColor = ((Office2007Renderer)GlobalManager.Renderer).ColorTable.QuickAccessToolbar.QatCustomizeMenuLabelText;
|
||||
}
|
||||
this.SubItems.Add(label);
|
||||
|
||||
bool beginGroup = false;
|
||||
|
||||
if (qatFrequentCommands.Count > 0)
|
||||
{
|
||||
beginGroup = true;
|
||||
foreach (BaseItem qatFC in qatFrequentCommands)
|
||||
{
|
||||
if (qatFC.Text.Length > 0)
|
||||
{
|
||||
ButtonItem bf = new ButtonItem(RibbonControl.SysFrequentlyQatNamePart + qatFC.Name, qatFC.Text);
|
||||
if (QatContainsItem(tab, qatFC.Name))
|
||||
bf.Checked = true;
|
||||
bf.CanCustomize = false;
|
||||
this.SubItems.Add(bf);
|
||||
bf.Click += new EventHandler(AddFrequentCommandToQat);
|
||||
bf.Tag = qatFC.Name;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
ButtonItem item = new ButtonItem(RibbonControl.SysQatCustomizeItemName, qatCustomize);
|
||||
item.BeginGroup = beginGroup;
|
||||
item.CanCustomize = false;
|
||||
this.SubItems.Add(item);
|
||||
item.Click += new EventHandler(QatCustomizeItemClick);
|
||||
|
||||
//if (tab != null && tab.EnableQatPlacement)
|
||||
//{
|
||||
// ButtonItem b = new ButtonItem(RibbonControl.SysQatPlaceItemName);
|
||||
// b.CanCustomize = false;
|
||||
// //if (tab.QatPositionedBelowRibbon)
|
||||
// // b.Text = tab.SystemText.QatPlaceAboveRibbonText;
|
||||
// //else
|
||||
// b.Text = tab.SystemText.QatPlaceBelowRibbonText;
|
||||
// b.Click += new EventHandler(QuickAccessToolbarChangePlacement);
|
||||
// this.SubItems.Add(b);
|
||||
//}
|
||||
|
||||
//if (tab != null)
|
||||
//{
|
||||
// ButtonItem b = null;
|
||||
// if (tab.Expanded)
|
||||
// b = new ButtonItem(RibbonControl.SysMinimizeRibbon, tab.SystemText.MinimizeRibbonText);
|
||||
// else
|
||||
// b = new ButtonItem(RibbonControl.SysMaximizeRibbon, tab.SystemText.MaximizeRibbonText);
|
||||
// b.CanCustomize = false;
|
||||
// b.BeginGroup = true;
|
||||
// b.Click += new EventHandler(ToggleRibbonExpand);
|
||||
// this.SubItems.Add(b);
|
||||
//}
|
||||
}
|
||||
private MetroShell GetMetroTab()
|
||||
{
|
||||
MetroTabStrip strip = this.ContainerControl as MetroTabStrip;
|
||||
if (strip == null)
|
||||
{
|
||||
BaseItem parent = this;
|
||||
while (parent != null && strip == null)
|
||||
{
|
||||
parent = parent.Parent;
|
||||
if (parent != null)
|
||||
{
|
||||
strip = parent.ContainerControl as MetroTabStrip;
|
||||
}
|
||||
}
|
||||
}
|
||||
MetroShell tab = null;
|
||||
if (strip != null) tab = strip.Parent as MetroShell;
|
||||
return tab;
|
||||
}
|
||||
private void SetupRibbonCustomizeItem()
|
||||
{
|
||||
this.SubItems.Clear();
|
||||
|
||||
// Add customize items...
|
||||
string qatCustomize = "&Customize Quick Access Toolbar...";
|
||||
|
||||
RibbonControl rc = GetRibbonControl();
|
||||
|
||||
if (rc != null)
|
||||
qatCustomize = rc.SystemText.QatCustomizeText;
|
||||
|
||||
SubItemsCollection qatFrequentCommands = rc.QatFrequentCommands;
|
||||
|
||||
string s = "<b>Customize Quick Access Toolbar</b>";
|
||||
if (rc != null)
|
||||
s = rc.SystemText.QatCustomizeMenuLabel;
|
||||
LabelItem label = new LabelItem(RibbonControl.SysQatCustomizeLabelName, s);
|
||||
label.PaddingBottom = 2;
|
||||
label.PaddingTop = 2;
|
||||
label.PaddingLeft = 12;
|
||||
label.BorderSide = eBorderSide.Bottom;
|
||||
label.BorderType = eBorderType.SingleLine;
|
||||
label.CanCustomize = false;
|
||||
if (GlobalManager.Renderer is Office2007Renderer)
|
||||
{
|
||||
label.BackColor = ((Office2007Renderer)GlobalManager.Renderer).ColorTable.QuickAccessToolbar.QatCustomizeMenuLabelBackground;
|
||||
label.ForeColor = ((Office2007Renderer)GlobalManager.Renderer).ColorTable.QuickAccessToolbar.QatCustomizeMenuLabelText;
|
||||
}
|
||||
this.SubItems.Add(label);
|
||||
|
||||
bool beginGroup = false;
|
||||
|
||||
if (qatFrequentCommands.Count > 0)
|
||||
{
|
||||
beginGroup = true;
|
||||
foreach (BaseItem qatFC in qatFrequentCommands)
|
||||
{
|
||||
if (qatFC.Text.Length > 0)
|
||||
{
|
||||
ButtonItem bf = new ButtonItem(RibbonControl.SysFrequentlyQatNamePart + qatFC.Name, qatFC.Text);
|
||||
if (QatContainsItem(rc, qatFC.Name))
|
||||
bf.Checked = true;
|
||||
bf.CanCustomize = false;
|
||||
this.SubItems.Add(bf);
|
||||
bf.Click += new EventHandler(AddFrequentCommandToQat);
|
||||
bf.Tag = qatFC.Name;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
ButtonItem item = new ButtonItem(RibbonControl.SysQatCustomizeItemName, qatCustomize);
|
||||
item.BeginGroup = beginGroup;
|
||||
item.CanCustomize = false;
|
||||
this.SubItems.Add(item);
|
||||
item.Click += new EventHandler(QatCustomizeItemClick);
|
||||
|
||||
if (rc != null && rc.EnableQatPlacement)
|
||||
{
|
||||
ButtonItem b = new ButtonItem(RibbonControl.SysQatPlaceItemName);
|
||||
b.CanCustomize = false;
|
||||
if (rc.QatPositionedBelowRibbon)
|
||||
b.Text = rc.SystemText.QatPlaceAboveRibbonText;
|
||||
else
|
||||
b.Text = rc.SystemText.QatPlaceBelowRibbonText;
|
||||
b.Click += new EventHandler(QuickAccessToolbarChangePlacement);
|
||||
this.SubItems.Add(b);
|
||||
}
|
||||
|
||||
if (rc != null)
|
||||
{
|
||||
ButtonItem b = null;
|
||||
if (rc.Expanded)
|
||||
b = new ButtonItem(RibbonControl.SysMinimizeRibbon, rc.SystemText.MinimizeRibbonText);
|
||||
else
|
||||
b = new ButtonItem(RibbonControl.SysMaximizeRibbon, rc.SystemText.MaximizeRibbonText);
|
||||
b.CanCustomize = false;
|
||||
b.BeginGroup = true;
|
||||
b.Click += new EventHandler(ToggleRibbonExpand);
|
||||
this.SubItems.Add(b);
|
||||
}
|
||||
}
|
||||
private void AddFrequentCommandToQat(object sender, EventArgs e)
|
||||
{
|
||||
RibbonControl rc = GetRibbonControl();
|
||||
if (rc==null) return;
|
||||
CollapseAll(this);
|
||||
rc.RibbonStrip.ClosePopups();
|
||||
ButtonItem b = sender as ButtonItem;
|
||||
if (b != null && b.Tag is string && b.Tag.ToString().Length > 0)
|
||||
{
|
||||
if (b.Checked)
|
||||
{
|
||||
// Remove from QAT
|
||||
rc.RemoveItemFromQuickAccessToolbar(rc.QuickToolbarItems[b.Tag.ToString()]);
|
||||
}
|
||||
else
|
||||
{
|
||||
// Add to QAT
|
||||
rc.AddItemToQuickAccessToolbar(rc.QatFrequentCommands[b.Tag.ToString()]);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void ToggleRibbonExpand(object sender, EventArgs e)
|
||||
{
|
||||
CollapseAll(this);
|
||||
ButtonItem b = sender as ButtonItem;
|
||||
if(b==null) return;
|
||||
RibbonControl rc = GetRibbonControl();
|
||||
if (rc == null) return;
|
||||
rc.RibbonStrip.ClosePopups();
|
||||
if (b.Name == RibbonControl.SysMinimizeRibbon)
|
||||
rc.Expanded = false;
|
||||
else if (b.Name == RibbonControl.SysMaximizeRibbon)
|
||||
rc.Expanded = true;
|
||||
}
|
||||
|
||||
private void QuickAccessToolbarChangePlacement(object sender, EventArgs e)
|
||||
{
|
||||
CollapseAll(this);
|
||||
RibbonControl rc = GetRibbonControl();
|
||||
if (rc != null)
|
||||
{
|
||||
rc.RibbonStrip.ClosePopups();
|
||||
rc.QuickAccessToolbarChangePlacement();
|
||||
}
|
||||
}
|
||||
|
||||
private void QatCustomizeItemClick(object sender, EventArgs e)
|
||||
{
|
||||
if (GetRibbonControl() != null)
|
||||
QatCustomizeItemClickRibbon();
|
||||
else if (GetMetroTab() != null)
|
||||
QatCustomizeItemClickMetroTab();
|
||||
}
|
||||
|
||||
private void QatCustomizeItemClickMetroTab()
|
||||
{
|
||||
MetroShell tab = GetMetroTab();
|
||||
CollapseAll(this);
|
||||
if (tab != null)
|
||||
{
|
||||
tab.MetroTabStrip.ClosePopups();
|
||||
tab.ShowQatCustomizeDialog();
|
||||
}
|
||||
}
|
||||
private void QatCustomizeItemClickRibbon()
|
||||
{
|
||||
RibbonControl rc = GetRibbonControl();
|
||||
CollapseAll(this);
|
||||
if (rc != null)
|
||||
{
|
||||
rc.RibbonStrip.ClosePopups();
|
||||
rc.ShowQatCustomizeDialog();
|
||||
}
|
||||
}
|
||||
private RibbonControl GetRibbonControl()
|
||||
{
|
||||
RibbonStrip strip = this.ContainerControl as RibbonStrip;
|
||||
if (strip == null)
|
||||
{
|
||||
BaseItem parent = this;
|
||||
while (parent != null && strip == null)
|
||||
{
|
||||
parent = parent.Parent;
|
||||
if (parent != null)
|
||||
{
|
||||
if (parent.ContainerControl is QatToolbar)
|
||||
{
|
||||
QatToolbar qat = parent.ContainerControl as QatToolbar;
|
||||
if (qat.Parent is RibbonControl)
|
||||
{
|
||||
strip = ((RibbonControl)qat.Parent).RibbonStrip;
|
||||
break;
|
||||
}
|
||||
}
|
||||
else
|
||||
strip = parent.ContainerControl as RibbonStrip;
|
||||
}
|
||||
}
|
||||
}
|
||||
RibbonControl rc = null;
|
||||
if (strip != null) rc = strip.Parent as RibbonControl;
|
||||
|
||||
Ribbon.QatToolbar qatToolbar = this.ContainerControl as Ribbon.QatToolbar;
|
||||
if (qatToolbar != null && qatToolbar.Parent is RibbonControl)
|
||||
return qatToolbar.Parent as RibbonControl;
|
||||
|
||||
return rc;
|
||||
}
|
||||
|
||||
protected override void ClearCustomizeItem()
|
||||
{
|
||||
// Nothing to do leave all items as they are
|
||||
}
|
||||
|
||||
protected override void LoadResources() {}
|
||||
|
||||
//protected override void SetCustomTooltip(string text) {}
|
||||
|
||||
/// <summary>
|
||||
/// Gets or sets whether Customize menu item is visible.
|
||||
/// </summary>
|
||||
[Browsable(false), DevCoBrowsable(false), Category("Behavior"), Description("Indicates whether Customize menu item is visible."), DefaultValue(true), EditorBrowsable(EditorBrowsableState.Never)]
|
||||
public override bool CustomizeItemVisible
|
||||
{
|
||||
get { return base.CustomizeItemVisible; }
|
||||
set { base.CustomizeItemVisible = value; }
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Gets/Sets informational text (tooltip) for the item.
|
||||
/// </summary>
|
||||
[Browsable(true), DevCoBrowsable(true), DefaultValue(QatCustomizeItem.DefaultTooltipText), System.ComponentModel.Category("Appearance"), System.ComponentModel.Description("Indicates the text that is displayed when mouse hovers over the item."), Localizable(true)]
|
||||
public override string Tooltip
|
||||
{
|
||||
get { return base.Tooltip; }
|
||||
set { base.Tooltip = value; }
|
||||
}
|
||||
|
||||
protected internal override void OnExpandChange()
|
||||
{
|
||||
this.PopupSide = ePopupSide.Bottom;
|
||||
base.OnExpandChange();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Overridden. Recalculates the size of the item.
|
||||
/// </summary>
|
||||
public override void RecalcSize()
|
||||
{
|
||||
if (this.SuspendLayout)
|
||||
return;
|
||||
|
||||
if (m_Orientation == eOrientation.Vertical)
|
||||
{
|
||||
// Take suggested width
|
||||
m_Rect.Height = Dpi.Height(FIXED_SIZE);
|
||||
m_Rect.Width = Dpi.Width22;
|
||||
}
|
||||
else
|
||||
{
|
||||
// Take suggested height
|
||||
m_Rect.Width = Dpi.Width(FIXED_SIZE);
|
||||
m_Rect.Height = Dpi.Height22;
|
||||
}
|
||||
|
||||
SetCustomTooltip(GetTooltipText());
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Gets localized tooltip text for this instance of the item.
|
||||
/// </summary>
|
||||
/// <returns>Tooltip text.</returns>
|
||||
protected override string GetTooltipText()
|
||||
{
|
||||
string s = "";
|
||||
using (LocalizationManager lm = new LocalizationManager(this.GetOwner() as IOwnerLocalize))
|
||||
s = lm.GetLocalizedString(LocalizationKeys.QatCustomizeTooltip);
|
||||
if (s == "") s = this.Tooltip;
|
||||
return s;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Called when mouse hovers over the customize item.
|
||||
/// </summary>
|
||||
protected override void MouseHoverCustomize()
|
||||
{
|
||||
}
|
||||
#endregion
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user