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); }
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); }