725 lines
28 KiB
C#
725 lines
28 KiB
C#
using System;
|
|
using System.ComponentModel;
|
|
using System.Drawing;
|
|
using System.Data;
|
|
using System.Text;
|
|
using System.Windows.Forms;
|
|
using System.Collections;
|
|
using DevComponents.DotNetBar.Controls;
|
|
using DevComponents.DotNetBar.Metro;
|
|
using System.Collections.Generic;
|
|
|
|
namespace DevComponents.DotNetBar.Ribbon
|
|
{
|
|
/// <summary>
|
|
/// Represents the Quick Access Toolbar customization panel which can be used on the custom QAT customization dialogs
|
|
/// so customization of Quick Access Toolbar can be reused.
|
|
/// </summary>
|
|
public class QatCustomizePanel : UserControl
|
|
{
|
|
#region Private/Public variables
|
|
/// <summary>
|
|
/// Gets reference to the internal ItemPanel control that displays the commands for selected category.
|
|
/// </summary>
|
|
public ItemPanel itemPanelCommands;
|
|
/// <summary>
|
|
/// Gets reference to the ItemPanel control that displays the Quick Access Toolbar Items.
|
|
/// </summary>
|
|
public ItemPanel itemPanelQat;
|
|
/// <summary>
|
|
/// Gets reference to the button that perform addition of commands to the Quick Access Toolbar.
|
|
/// </summary>
|
|
public ButtonX buttonAddToQat;
|
|
/// <summary>
|
|
/// Gets reference to the button that perform removal of commands from the Quick Access Toolbar.
|
|
/// </summary>
|
|
public ButtonX buttonRemoveFromQat;
|
|
/// <summary>
|
|
/// Gets reference to the combo box control that holds all categories.
|
|
/// </summary>
|
|
public ComboBoxEx comboCategories;
|
|
/// <summary>
|
|
/// Gets reference to the combo box categories label control.
|
|
/// </summary>
|
|
public Label labelCategories;
|
|
/// <summary>
|
|
/// Gets reference to the check box that changes the placement of the Quick Access Toolbar.
|
|
/// </summary>
|
|
public Controls.CheckBoxX checkQatBelowRibbon;
|
|
|
|
private Hashtable m_Categories = new Hashtable();
|
|
private bool m_DataChanged = false;
|
|
/// <summary>
|
|
/// Required designer variable.
|
|
/// </summary>
|
|
private System.ComponentModel.IContainer components = null;
|
|
#endregion
|
|
|
|
#region Constructor
|
|
|
|
public QatCustomizePanel()
|
|
{
|
|
this.SetStyle(ControlStyles.UserPaint, true);
|
|
this.SetStyle(ControlStyles.AllPaintingInWmPaint, true);
|
|
this.SetStyle(ControlStyles.Opaque, true);
|
|
this.SetStyle(ControlStyles.ResizeRedraw, true);
|
|
this.SetStyle(DisplayHelp.DoubleBufferFlag, true);
|
|
this.SetStyle(ControlStyles.SupportsTransparentBackColor, true);
|
|
|
|
InitializeComponent();
|
|
}
|
|
#endregion
|
|
|
|
#region Component Designer generated code
|
|
|
|
/// <summary>
|
|
/// Required method for Designer support - do not modify
|
|
/// the contents of this method with the code editor.
|
|
/// </summary>
|
|
private void InitializeComponent()
|
|
{
|
|
this.itemPanelCommands = new DevComponents.DotNetBar.ItemPanel();
|
|
this.itemPanelQat = new DevComponents.DotNetBar.ItemPanel();
|
|
this.buttonAddToQat = new DevComponents.DotNetBar.ButtonX();
|
|
this.buttonRemoveFromQat = new DevComponents.DotNetBar.ButtonX();
|
|
this.comboCategories = new Controls.ComboBoxEx();
|
|
this.labelCategories = new System.Windows.Forms.Label();
|
|
this.checkQatBelowRibbon = new Controls.CheckBoxX();
|
|
this.SuspendLayout();
|
|
//
|
|
// itemPanelCommands
|
|
//
|
|
this.itemPanelCommands.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
|
|
| System.Windows.Forms.AnchorStyles.Left)
|
|
| System.Windows.Forms.AnchorStyles.Right)));
|
|
//
|
|
//
|
|
//
|
|
this.itemPanelCommands.AutoScroll = true;
|
|
this.itemPanelCommands.BackgroundStyle.Class = DevComponents.DotNetBar.Rendering.ElementStyleClassKeys.ItemPanelKey;
|
|
this.itemPanelCommands.Style = eDotNetBarStyle.StyleManagerControlled;
|
|
this.itemPanelCommands.FadeEffect = false;
|
|
this.itemPanelCommands.LayoutOrientation = DevComponents.DotNetBar.eOrientation.Vertical;
|
|
#if!TRIAL
|
|
this.itemPanelCommands.LicenseKey = "F962CEC7-CD8F-4911-A9E9-CAB39962FC1F";
|
|
#endif
|
|
this.itemPanelCommands.Location = new System.Drawing.Point(9, 46);
|
|
this.itemPanelCommands.Name = "itemPanelCommands";
|
|
this.itemPanelCommands.Size = new System.Drawing.Size(173, 257);
|
|
this.itemPanelCommands.TabIndex = 2;
|
|
this.itemPanelCommands.Text = "itemPanelCommands";
|
|
this.itemPanelCommands.KeyUp += new KeyEventHandler(ItemPanelKeyUp);
|
|
this.itemPanelCommands.ItemDoubleClick += new MouseEventHandler(ItemPanelCommandsDoubleClick);
|
|
//
|
|
// itemPanelQat
|
|
//
|
|
this.itemPanelQat.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
|
|
| System.Windows.Forms.AnchorStyles.Right)));
|
|
//
|
|
//
|
|
//
|
|
this.itemPanelQat.AutoScroll = true;
|
|
this.itemPanelQat.BackgroundStyle.Class = DevComponents.DotNetBar.Rendering.ElementStyleClassKeys.ItemPanelKey;
|
|
this.itemPanelQat.Style = eDotNetBarStyle.StyleManagerControlled;
|
|
this.itemPanelQat.EnableDragDrop = true;
|
|
this.itemPanelQat.FadeEffect = false;
|
|
this.itemPanelQat.LayoutOrientation = DevComponents.DotNetBar.eOrientation.Vertical;
|
|
#if!TRIAL
|
|
this.itemPanelQat.LicenseKey = "F962CEC7-CD8F-4911-A9E9-CAB39962FC1F";
|
|
#endif
|
|
this.itemPanelQat.Location = new System.Drawing.Point(266, 46);
|
|
this.itemPanelQat.Name = "itemPanelQat";
|
|
this.itemPanelQat.Size = new System.Drawing.Size(173, 257);
|
|
this.itemPanelQat.TabIndex = 5;
|
|
this.itemPanelQat.Text = "itemPanelCommands";
|
|
this.itemPanelQat.DragDrop += new System.Windows.Forms.DragEventHandler(this.itemPanelQat_DragDrop);
|
|
this.itemPanelQat.UserCustomize += new EventHandler(this.itemPanelQat_UserCustomize);
|
|
this.itemPanelQat.KeyUp += new KeyEventHandler(ItemPanelKeyUp);
|
|
this.itemPanelQat.ItemDoubleClick += new MouseEventHandler(ItemPanelQatDoubleClick);
|
|
//
|
|
// buttonAddToQat
|
|
//
|
|
this.buttonAddToQat.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
|
|
this.buttonAddToQat.ColorTable = DevComponents.DotNetBar.eButtonColor.OrangeWithBackground;
|
|
this.buttonAddToQat.Location = new System.Drawing.Point(188, 126);
|
|
this.buttonAddToQat.Name = "buttonAddToQat";
|
|
this.buttonAddToQat.Size = new System.Drawing.Size(73, 21);
|
|
this.buttonAddToQat.TabIndex = 3;
|
|
this.buttonAddToQat.Text = "&Add >>";
|
|
this.buttonAddToQat.Click += new System.EventHandler(this.buttonAddToQat_Click);
|
|
//
|
|
// buttonRemoveFromQat
|
|
//
|
|
this.buttonRemoveFromQat.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
|
|
this.buttonRemoveFromQat.ColorTable = DevComponents.DotNetBar.eButtonColor.OrangeWithBackground;
|
|
this.buttonRemoveFromQat.Location = new System.Drawing.Point(188, 153);
|
|
this.buttonRemoveFromQat.Name = "buttonRemoveFromQat";
|
|
this.buttonRemoveFromQat.Size = new System.Drawing.Size(73, 21);
|
|
this.buttonRemoveFromQat.TabIndex = 4;
|
|
this.buttonRemoveFromQat.Text = "&Remove";
|
|
this.buttonRemoveFromQat.Click += new System.EventHandler(this.buttonRemoveFromQat_Click);
|
|
//
|
|
// comboCategories
|
|
//
|
|
this.comboCategories.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
|
|
| System.Windows.Forms.AnchorStyles.Right)));
|
|
this.comboCategories.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
|
|
this.comboCategories.Location = new System.Drawing.Point(9, 19);
|
|
this.comboCategories.Name = "comboCategories";
|
|
this.comboCategories.Size = new System.Drawing.Size(173, 21);
|
|
this.comboCategories.Sorted = true;
|
|
this.comboCategories.TabIndex = 1;
|
|
this.comboCategories.SelectedIndexChanged += new System.EventHandler(this.comboCategories_SelectedIndexChanged);
|
|
this.comboCategories.Style = eDotNetBarStyle.Office2007;
|
|
this.comboCategories.DrawMode = DrawMode.OwnerDrawFixed;
|
|
this.comboCategories.ThemeAware = false;
|
|
//
|
|
// labelCategories
|
|
//
|
|
this.labelCategories.AutoSize = true;
|
|
this.labelCategories.BackColor = System.Drawing.Color.Transparent;
|
|
this.labelCategories.Location = new System.Drawing.Point(6, 3);
|
|
this.labelCategories.Name = "labelCategories";
|
|
this.labelCategories.Size = new System.Drawing.Size(123, 13);
|
|
this.labelCategories.TabIndex = 0;
|
|
this.labelCategories.Text = "&Choose commands from:";
|
|
//
|
|
// checkQatBelowRibbon
|
|
//
|
|
this.checkQatBelowRibbon.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
|
|
this.checkQatBelowRibbon.BackColor = System.Drawing.Color.Transparent;
|
|
this.checkQatBelowRibbon.Location = new System.Drawing.Point(9, 311);
|
|
this.checkQatBelowRibbon.Name = "checkQatBelowRibbon";
|
|
this.checkQatBelowRibbon.Size = new System.Drawing.Size(420, 17);
|
|
this.checkQatBelowRibbon.TabIndex = 6;
|
|
this.checkQatBelowRibbon.Text = "&Place Quick Access Toolbar below the Ribbon";
|
|
this.checkQatBelowRibbon.CheckedChangedEx += new Controls.CheckBoxXChangeEventHandler(this.checkQatBelowRibbon_CheckedChanged);
|
|
//
|
|
// QatCustomizePanel
|
|
//
|
|
this.BackColor = System.Drawing.Color.Transparent;
|
|
this.Controls.Add(this.comboCategories);
|
|
this.Controls.Add(this.checkQatBelowRibbon);
|
|
this.Controls.Add(this.labelCategories);
|
|
this.Controls.Add(this.buttonRemoveFromQat);
|
|
this.Controls.Add(this.buttonAddToQat);
|
|
this.Controls.Add(this.itemPanelQat);
|
|
this.Controls.Add(this.itemPanelCommands);
|
|
this.Name = "QatCustomizePanel";
|
|
this.Size = new System.Drawing.Size(444, 334);
|
|
this.ResumeLayout(false);
|
|
this.PerformLayout();
|
|
|
|
}
|
|
|
|
private void ItemPanelKeyUp(object sender, KeyEventArgs e)
|
|
{
|
|
if (e.KeyCode == Keys.Up || e.KeyCode == Keys.Down || e.KeyCode == Keys.Left || e.KeyCode == Keys.Right)
|
|
{
|
|
ItemPanel panel = sender as ItemPanel;
|
|
foreach (BaseItem item in panel.Items)
|
|
{
|
|
ButtonItem button = item as ButtonItem;
|
|
if (button != null && button.IsMouseOver && !button.Checked)
|
|
{
|
|
button.Checked = true;
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
#endregion
|
|
|
|
#region Internal Implementation
|
|
protected override void OnPaint(PaintEventArgs e)
|
|
{
|
|
if (this.BackColor== Color.Transparent || this.BackColor.A<255)
|
|
{
|
|
base.OnPaintBackground(e);
|
|
}
|
|
|
|
if (this.BackColor == Color.Transparent)
|
|
return;
|
|
|
|
DisplayHelp.FillRectangle(e.Graphics, this.ClientRectangle, this.BackColor);
|
|
}
|
|
|
|
/// <summary>
|
|
/// Loads the items for the customization into the ribbon control. All Ribbon Bars on the ribbon are enumerated and items
|
|
/// are added if they have CanCustomize=true.
|
|
/// </summary>
|
|
/// <param name="rc">Ribbon control to enumerate.</param>
|
|
public void LoadItems(RibbonControl rc)
|
|
{
|
|
m_Categories.Clear();
|
|
itemPanelCommands.Items.Clear();
|
|
itemPanelQat.Items.Clear();
|
|
|
|
LoadQatItems(rc);
|
|
|
|
if (rc.CategorizeMode == eCategorizeMode.Categories)
|
|
LoadByCategory(rc);
|
|
else
|
|
LoadByRibbonBar(rc);
|
|
|
|
LoadCategories();
|
|
|
|
checkQatBelowRibbon.Checked = rc.QatPositionedBelowRibbon;
|
|
checkQatBelowRibbon.Visible = rc.EnableQatPlacement;
|
|
m_DataChanged = false;
|
|
}
|
|
|
|
/// <summary>
|
|
/// Loads the items for the customization from MetroTab registered toolbars. All registered Toolbars are enumerated and items
|
|
/// are added if they have CanCustomize=true.
|
|
/// </summary>
|
|
/// <param name="tab">MetroTab control to enumerate.</param>
|
|
public void LoadItems(MetroShell tab)
|
|
{
|
|
m_Categories.Clear();
|
|
itemPanelCommands.Items.Clear();
|
|
itemPanelQat.Items.Clear();
|
|
|
|
LoadQatItems(tab);
|
|
|
|
if (tab.CategorizeMode == eMetroCategorizeMode.Categories)
|
|
LoadByCategory(tab);
|
|
else
|
|
LoadByMetroToolbar(tab);
|
|
|
|
LoadCategories();
|
|
|
|
checkQatBelowRibbon.Visible = false;
|
|
m_DataChanged = false;
|
|
}
|
|
|
|
#region By Category Loading
|
|
private void LoadByCategory(RibbonControl rc)
|
|
{
|
|
// Loop through all RibbonBars and add the items
|
|
foreach (Control panel in rc.Controls)
|
|
{
|
|
LoadByCategory(panel);
|
|
}
|
|
|
|
BaseItem startButton = rc.GetApplicationButton();
|
|
if (startButton!=null)
|
|
{
|
|
LoadByCategory(startButton);
|
|
}
|
|
}
|
|
|
|
private void LoadByCategory(MetroShell tab)
|
|
{
|
|
// Loop through all RibbonBars and add the items
|
|
List<IOwner> toolbars = tab.RegisteredToolbars;
|
|
foreach (IOwner toolbar in toolbars)
|
|
{
|
|
if (toolbar is MetroToolbar)
|
|
LoadByCategory((MetroToolbar)toolbar);
|
|
}
|
|
|
|
BaseItem startButton = tab.GetApplicationButton();
|
|
if (startButton != null)
|
|
{
|
|
LoadByCategory(startButton);
|
|
}
|
|
}
|
|
private void LoadByCategory(MetroToolbar toolbar)
|
|
{
|
|
foreach (BaseItem item in toolbar.Items)
|
|
LoadByCategory(item);
|
|
foreach (BaseItem item in toolbar.ExtraItems)
|
|
LoadByCategory(item);
|
|
}
|
|
|
|
private void LoadByCategory(Control panel)
|
|
{
|
|
if (panel is RibbonBar)
|
|
LoadByCategory(panel as RibbonBar);
|
|
foreach (Control c in panel.Controls)
|
|
LoadByCategory(c);
|
|
}
|
|
|
|
private void LoadByCategory(RibbonBar bar)
|
|
{
|
|
foreach (BaseItem item in bar.Items)
|
|
LoadByCategory(item);
|
|
}
|
|
|
|
private void LoadByCategory(BaseItem item)
|
|
{
|
|
if (CanCustomizeItem(item))
|
|
{
|
|
string cat = GetCategory(item);
|
|
ArrayList items = m_Categories[cat] as ArrayList;
|
|
if (items == null)
|
|
{
|
|
items = new ArrayList();
|
|
m_Categories.Add(cat, items);
|
|
}
|
|
items.Add(GetCustomizeRepresentation(item));
|
|
}
|
|
|
|
foreach (BaseItem child in item.SubItems)
|
|
LoadByCategory(child);
|
|
|
|
if (item is GalleryContainer)
|
|
{
|
|
GalleryContainer gallery = item as GalleryContainer;
|
|
foreach (BaseItem child in gallery.PopupGalleryItems)
|
|
LoadByCategory(child);
|
|
}
|
|
}
|
|
|
|
private string GetCategory(BaseItem item)
|
|
{
|
|
if (item.Category != "")
|
|
return item.Category;
|
|
return "Unassigned";
|
|
}
|
|
#endregion
|
|
|
|
#region Load by Ribbon or Toolbar
|
|
private void LoadByRibbonBar(RibbonControl rc)
|
|
{
|
|
// Loop through all RibbonBars and add the items
|
|
foreach (Control panel in rc.Controls)
|
|
{
|
|
LoadByRibbonBar(panel);
|
|
}
|
|
|
|
BaseItem startButton = rc.GetApplicationButton();
|
|
if (startButton!=null)
|
|
{
|
|
LoadByRibbonBar(startButton, GetRibbonBarCategory(startButton.Text));
|
|
}
|
|
}
|
|
private void LoadByMetroToolbar(MetroShell rc)
|
|
{
|
|
// Loop through all RibbonBars and add the items
|
|
List<IOwner> toolbars = rc.RegisteredToolbars;
|
|
foreach (IOwner owner in toolbars)
|
|
{
|
|
if (owner is MetroToolbar)
|
|
{
|
|
LoadByMetroToolbar((MetroToolbar)owner);
|
|
}
|
|
}
|
|
|
|
BaseItem startButton = rc.GetApplicationButton();
|
|
if (startButton != null)
|
|
{
|
|
LoadByRibbonBar(startButton, GetMetroToolbarCategory(startButton.Text));
|
|
}
|
|
}
|
|
private void LoadByMetroToolbar(MetroToolbar bar)
|
|
{
|
|
foreach (BaseItem item in bar.Items)
|
|
LoadByRibbonBar(item, GetMetroToolbarCategory(bar.Text));
|
|
foreach (BaseItem item in bar.ExtraItems)
|
|
LoadByRibbonBar(item, GetMetroToolbarCategory(bar.Text));
|
|
}
|
|
|
|
private void LoadByRibbonBar(Control panel)
|
|
{
|
|
if (panel is RibbonBar)
|
|
LoadByRibbonBar(panel as RibbonBar);
|
|
foreach (Control c in panel.Controls)
|
|
LoadByRibbonBar(c);
|
|
}
|
|
|
|
private void LoadByRibbonBar(RibbonBar bar)
|
|
{
|
|
foreach (BaseItem item in bar.Items)
|
|
LoadByRibbonBar(item, GetRibbonBarCategory(bar.Text));
|
|
}
|
|
|
|
private string GetRibbonBarCategory(string barText)
|
|
{
|
|
StringBuilder ret = new StringBuilder(barText.Length);
|
|
for (int i = 0; i < barText.Length; i++)
|
|
{
|
|
if (barText[i] == '&')
|
|
{
|
|
if (i + 1 < barText.Length && barText[i + 1] == '&')
|
|
ret.Append(barText[i]);
|
|
else
|
|
continue;
|
|
}
|
|
else
|
|
ret.Append(barText[i]);
|
|
}
|
|
|
|
return ret.ToString();
|
|
}
|
|
private string GetMetroToolbarCategory(string barText)
|
|
{
|
|
StringBuilder ret = new StringBuilder(barText.Length);
|
|
for (int i = 0; i < barText.Length; i++)
|
|
{
|
|
if (barText[i] == '&')
|
|
{
|
|
if (i + 1 < barText.Length && barText[i + 1] == '&')
|
|
ret.Append(barText[i]);
|
|
else
|
|
continue;
|
|
}
|
|
else
|
|
ret.Append(barText[i]);
|
|
}
|
|
|
|
return ret.ToString();
|
|
}
|
|
|
|
private void LoadByRibbonBar(BaseItem item, string category)
|
|
{
|
|
if (CanCustomizeItem(item))
|
|
{
|
|
ArrayList items = m_Categories[category] as ArrayList;
|
|
if (items == null)
|
|
{
|
|
items = new ArrayList();
|
|
m_Categories.Add(category, items);
|
|
}
|
|
items.Add(GetCustomizeRepresentation(item));
|
|
}
|
|
|
|
foreach (BaseItem child in item.SubItems)
|
|
LoadByRibbonBar(child, category);
|
|
|
|
if (item is GalleryContainer)
|
|
{
|
|
GalleryContainer gallery = item as GalleryContainer;
|
|
foreach (BaseItem child in gallery.PopupGalleryItems)
|
|
LoadByRibbonBar(child, category);
|
|
}
|
|
}
|
|
#endregion
|
|
|
|
private void LoadQatItems(RibbonControl rc)
|
|
{
|
|
int count = rc.QuickToolbarItems.Count;
|
|
int start = 0;
|
|
|
|
BaseItem startButton = rc.GetApplicationButton();
|
|
if (startButton != null)
|
|
start = rc.QuickToolbarItems.IndexOf(startButton) + 1;
|
|
|
|
for (int i = start; i < count; i++)
|
|
{
|
|
BaseItem item = rc.QuickToolbarItems[i];
|
|
if (IsSystemItem(item))
|
|
continue;
|
|
BaseItem custItem = GetCustomizeRepresentation(item);
|
|
custItem.Tag = null;
|
|
if (!item.CanCustomize) custItem.Visible = false;
|
|
itemPanelQat.Items.Add(custItem);
|
|
}
|
|
}
|
|
private void LoadQatItems(MetroShell tab)
|
|
{
|
|
int count = tab.QuickToolbarItems.Count;
|
|
int start = 0;
|
|
|
|
BaseItem startButton = tab.GetApplicationButton();
|
|
if (startButton != null)
|
|
start = tab.QuickToolbarItems.IndexOf(startButton) + 1;
|
|
|
|
for (int i = start; i < count; i++)
|
|
{
|
|
BaseItem item = tab.QuickToolbarItems[i];
|
|
if (IsSystemItem(item))
|
|
continue;
|
|
BaseItem custItem = GetCustomizeRepresentation(item);
|
|
custItem.Tag = null;
|
|
if (!item.CanCustomize) custItem.Visible = false;
|
|
itemPanelQat.Items.Add(custItem);
|
|
}
|
|
}
|
|
|
|
private bool IsSystemItem(BaseItem item)
|
|
{
|
|
if (item.SystemItem || item is ItemContainer || item is CustomizeItem || item is SystemCaptionItem)
|
|
return true;
|
|
return false;
|
|
}
|
|
|
|
private ButtonItem GetCustomizeRepresentation(BaseItem item)
|
|
{
|
|
ButtonItem ret = new ButtonItem(item.Name);
|
|
ret.Text = item.Text;
|
|
ret.ButtonStyle = eButtonStyle.ImageAndText;
|
|
ret.ImagePaddingVertical = 4;
|
|
ret.OptionGroup = "sys";
|
|
ret.GlobalItem = false;
|
|
if (ret.Text == "")
|
|
ret.Text = "Unassigned";
|
|
ret.Tag = item;
|
|
|
|
if (item is ButtonItem)
|
|
{
|
|
ButtonItem b = item as ButtonItem;
|
|
if (b.ImageSmall != null)
|
|
{
|
|
ret.Image = b.ImageSmall;
|
|
if (b.ImageSmall.Width != 16 || b.ImageSmall.Height != 16)
|
|
ret.ImageFixedSize = new Size(16, 16);
|
|
}
|
|
else
|
|
{
|
|
CompositeImage image = b.GetImage(ImageState.Default, Color.Black);
|
|
if (image != null)
|
|
{
|
|
if (image.IsIcon)
|
|
ret.Icon = (Icon)image.Icon.Clone();
|
|
else
|
|
ret.Image = image.Image;
|
|
ret.ImageFixedSize = new Size(16, 16);
|
|
}
|
|
}
|
|
}
|
|
else if (item is ComboBoxItem || item is TextBoxItem || item is ControlContainerItem)
|
|
{
|
|
ret.ImagePosition = eImagePosition.Right;
|
|
ret.Image = BarFunctions.LoadBitmap("SystemImages.QatCustomizeItemCombo.png");
|
|
}
|
|
|
|
return ret;
|
|
}
|
|
|
|
private bool CanCustomizeItem(BaseItem item)
|
|
{
|
|
if (item == null)
|
|
return false;
|
|
|
|
if (!item.CanCustomize || item.SystemItem || item.Name=="tempColorPickerItem")
|
|
return false;
|
|
|
|
if (item is ItemContainer || item is GenericItemContainer)
|
|
return false;
|
|
|
|
return true;
|
|
}
|
|
|
|
private void LoadCategories()
|
|
{
|
|
comboCategories.Items.Clear();
|
|
foreach (string key in m_Categories.Keys)
|
|
comboCategories.Items.Add(key);
|
|
if (comboCategories.Items.Count > 0)
|
|
comboCategories.SelectedIndex = 0;
|
|
}
|
|
|
|
private void comboCategories_SelectedIndexChanged(object sender, EventArgs e)
|
|
{
|
|
if (comboCategories.SelectedIndex < 0)
|
|
{
|
|
itemPanelCommands.Items.Clear();
|
|
itemPanelCommands.RecalcLayout();
|
|
return;
|
|
}
|
|
|
|
string key = comboCategories.Items[comboCategories.SelectedIndex].ToString();
|
|
ArrayList items = m_Categories[key] as ArrayList;
|
|
|
|
itemPanelCommands.Items.Clear();
|
|
foreach (BaseItem item in items)
|
|
itemPanelCommands.Items.Add(item);
|
|
itemPanelCommands.RecalcLayout();
|
|
}
|
|
|
|
private void ItemPanelCommandsDoubleClick(object sender, MouseEventArgs e)
|
|
{
|
|
AddCheckedButtonToQat();
|
|
}
|
|
|
|
private void AddCheckedButtonToQat()
|
|
{
|
|
ButtonItem buttonChecked = itemPanelCommands.GetChecked();
|
|
if (buttonChecked == null)
|
|
return;
|
|
if (itemPanelQat.Items.Contains(buttonChecked.Name))
|
|
return;
|
|
|
|
ButtonItem copy = buttonChecked.Copy() as ButtonItem;
|
|
copy.Checked = false;
|
|
itemPanelQat.Items.Add(copy);
|
|
copy.Checked = true;
|
|
itemPanelQat.RecalcLayout();
|
|
m_DataChanged = true;
|
|
|
|
int index = itemPanelCommands.Items.IndexOf(buttonChecked) + 1;
|
|
if (index == itemPanelCommands.Items.Count)
|
|
return;
|
|
buttonChecked = itemPanelCommands.Items[index] as ButtonItem;
|
|
if (buttonChecked != null)
|
|
{
|
|
buttonChecked.Checked = true;
|
|
itemPanelCommands.EnsureVisible(buttonChecked);
|
|
}
|
|
}
|
|
private void buttonAddToQat_Click(object sender, EventArgs e)
|
|
{
|
|
AddCheckedButtonToQat();
|
|
}
|
|
|
|
private void RemoveCheckedButtonFromQat()
|
|
{
|
|
ButtonItem buttonChecked = itemPanelQat.GetChecked();
|
|
if (buttonChecked == null)
|
|
return;
|
|
int index = itemPanelQat.Items.IndexOf(buttonChecked);
|
|
itemPanelQat.Items.Remove(buttonChecked);
|
|
if (index >= 0 && itemPanelQat.Items.Count > 0)
|
|
{
|
|
if (index + 1 >= itemPanelQat.Items.Count)
|
|
index = itemPanelQat.Items.Count - 1;
|
|
buttonChecked = itemPanelQat.Items[index] as ButtonItem;
|
|
if (buttonChecked != null)
|
|
{
|
|
buttonChecked.Checked = true;
|
|
itemPanelQat.EnsureVisible(buttonChecked);
|
|
}
|
|
}
|
|
itemPanelQat.RecalcLayout();
|
|
m_DataChanged = true;
|
|
}
|
|
private void buttonRemoveFromQat_Click(object sender, EventArgs e)
|
|
{
|
|
RemoveCheckedButtonFromQat();
|
|
}
|
|
void ItemPanelQatDoubleClick(object sender, MouseEventArgs e)
|
|
{
|
|
RemoveCheckedButtonFromQat();
|
|
}
|
|
|
|
/// <summary>
|
|
/// Gets or sets the value of data changed flag.
|
|
/// </summary>
|
|
[DefaultValue(false), Browsable(false)]
|
|
public bool DataChanged
|
|
{
|
|
get { return m_DataChanged; }
|
|
set { m_DataChanged = value; }
|
|
}
|
|
|
|
private void itemPanelQat_DragDrop(object sender, DragEventArgs e)
|
|
{
|
|
m_DataChanged = true;
|
|
}
|
|
|
|
private void itemPanelQat_UserCustomize(object sender, EventArgs e)
|
|
{
|
|
m_DataChanged = true;
|
|
}
|
|
|
|
private void checkQatBelowRibbon_CheckedChanged(object sender, Controls.CheckBoxXChangeEventArgs e)
|
|
{
|
|
m_DataChanged = true;
|
|
}
|
|
#endregion
|
|
}
|
|
}
|