private void CreateToolbarButton(IAction action, string groupId, ListAnchor anchor, int imageIndex, string text, string toolTip, string resourceType, IActionStateFilter[] filters) { if (groupId == null) { RegisterActionGroup(_defaultGroupId, ListAnchor.First); groupId = _defaultGroupId; } ToolbarActionGroup group = FindActionGroup(groupId); if (group == null) { throw new ArgumentException("\"" + groupId + "\" is not a registered toolbar action group.", "groupId"); } ToolStripButton button = new ToolStripButton(); button.Click += OnToolbarButtonClick; // Set the tooltip if (text == null) { text = ""; } if (toolTip == null) // Use button text for a tooltip by default { toolTip = text; } string kbdShortcut = Core.ActionManager.GetKeyboardShortcut(action); if (kbdShortcut.Length > 0) { button.ToolTipText = toolTip + " (" + kbdShortcut + ")"; } else { button.ToolTipText = toolTip; } button.Tag = action; button.ImageIndex = imageIndex; if (text.Length > 0) { button.Text = text; } ToolbarAction tbAction = new ToolbarAction(action, button, text, toolTip, resourceType, filters); int index = group.Actions.Add(action.ToString(), tbAction, anchor); if (index < 0) { throw new ActionException(String.Format("Attempt to register a duplicate toolbar action \"{0}\" in group \"{1}\" as \"{2}\", which conflicts with action \"{3}\" in the same group.", text, groupId, action.ToString(), ((ToolbarAction)group.Actions.FindByKey(action.ToString()))._defaultText)); } _toolBar.Items.Insert(group.StartIndex + index, button); AdjustGroupIndices(group, 1); }
public void RegisterActionFilter(string actionId, IActionStateFilter filter) { foreach (ToolbarActionGroup group in _actionGroups) { ToolbarAction action = (ToolbarAction)group.Actions.FindByKey(actionId); if (action != null) { action.AddFilter(filter); break; } } }
public void UnregisterAction(IAction action) { foreach (ToolbarActionGroup group in _actionGroups) { ToolbarAction tbAction = group.FindActionInstance(action); if (tbAction != null) { _toolBar.Items.Remove(tbAction._toolbarButton); group.Actions.Remove(tbAction); AdjustGroupIndices(group, -1); break; } } }