Пример #1
0
        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);
        }
Пример #2
0
 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;
         }
     }
 }
Пример #3
0
 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;
         }
     }
 }