public ActionItemSubMenu AddSubMenu(string subMenuText, int order = 500)
        {
            var sub = new ActionItemSubMenu(this.actions, subMenuText);

            sub.Order = order;
            Add(sub);
            return(sub);
        }
 public void Merge(ActionItemCollection items)
 {
     foreach (IActionItem actionItem in items)
     {
         ActionItemSubMenu subMenu = actionItem as ActionItemSubMenu;
         if (subMenu != null)
         {
             ActionItemSubMenu currentSubMenu = FindAddSubMenu(subMenu.SubMenuText, subMenu.Order);
             currentSubMenu.Actions.Merge(subMenu.Actions);
         }
         else
         {
             Add(actionItem);
         }
     }
 }
        public ActionItemSubMenu FindAddSubMenu(string subMenuText, int order = 500)
        {
            ActionItemSubMenu subMenu = null;

            foreach (IActionItem item in this)
            {
                if (item is ActionItemSubMenu && ((ActionItemSubMenu)item).SubMenuText == subMenuText)
                {
                    subMenu = ((ActionItemSubMenu)item);
                }
            }
            if (subMenu == null)
            {
                subMenu       = new ActionItemSubMenu(this.actions, subMenuText);
                subMenu.Order = order;
                this.Add(subMenu);
            }
            return(subMenu);
        }
Exemple #4
0
        public ActionItemSubMenu GetSubmenu(string subMenuText, int order = 500, bool plaintextMatch = false, bool create = true)
        {
            // replace accelerators if plaintextMatch is true
            Func <string, string> convert = s => plaintextMatch?s.Replace("&", "") : s;

            foreach (var item in this.OfType <ActionItemSubMenu>())
            {
                if (convert(item.SubMenuText) == convert(subMenuText))
                {
                    return(item);
                }
            }
            if (create)
            {
                var subMenu = new ActionItemSubMenu(this.actions, subMenuText);
                subMenu.Order = order;
                this.Add(subMenu);
                return(subMenu);
            }
            return(null);
        }