public MenuItemWithHandler(MenuWithHandler definition) : base() { OwnerDraw = true; Text = definition.Text; Tag = definition; if (!string.IsNullOrEmpty(definition.Shortcut)) { Shortcut = ShortcutFromString(definition.Shortcut); ShowShortcut = definition.ShowShortcut; } // no need for the following, if Update //CommandState commandState = new CommandState(); //if (definition.Target.OnUpdateCommand(definition.ID, commandState)) //{ // Enabled = commandState.Enabled; // Checked = commandState.Checked; // doubleChecked = commandState.Checked; //} if (definition.SubMenus != null) { MenuItem[] sub = new MenuItem[definition.SubMenus.Length]; for (int i = 0; i < definition.SubMenus.Length; i++) { sub[i] = new MenuItemWithHandler(definition.SubMenus[i]); } MenuItems.AddRange(sub); } }
private bool ProcessShortCut(Keys keys, MenuItem mi) { if (mi.IsParent) { foreach (MenuItem mii in mi.MenuItems) { if (ProcessShortCut(keys, mii)) { return(true); } } } else if (mi.Shortcut == (Shortcut)(int)keys) { MenuItemWithHandler miid = mi as MenuItemWithHandler; CommandState commandState = new CommandState(); commandHandler.OnUpdateCommand((miid.Tag as MenuWithHandler).ID, commandState); if (commandState.Enabled) { commandHandler.OnCommand((miid.Tag as MenuWithHandler).ID); } return(true); } return(false); }
public ContextMenuWithHandler(MenuWithHandler[] definition) : base() { this.menuID = null; commandHandler = null; MenuItem[] sub = new MenuItem[definition.Length]; for (int i = 0; i < sub.Length; i++) { sub[i] = new MenuItemWithHandler(definition[i]); } base.MenuItems.AddRange(sub); }
static internal MainMenu MakeMainMenu(MenuWithHandler[] definition) { MainMenu res = new MainMenu(); MenuItem[] items = new MenuItem[definition.Length]; for (int i = 0; i < definition.Length; i++) { items[i] = new MenuItemWithHandler(definition[i]); } res.MenuItems.AddRange(items); return(res); }
private void SetCommandHandler(MenuItemWithHandler miid, ICommandHandler hc) { foreach (MenuItem mi in miid.MenuItems) { MenuItemWithHandler submiid = mi as MenuItemWithHandler; if (submiid != null) { (submiid.Tag as MenuWithHandler).Target = hc; if (submiid.IsParent) { SetCommandHandler(submiid, hc); } } } }
public void SetCommandHandler(ICommandHandler hc) { foreach (MenuItem mi in MenuItems) { MenuItemWithHandler submiid = mi as MenuItemWithHandler; if (submiid != null) { (submiid.Tag as MenuWithHandler).Target = hc; if (submiid.IsParent) { SetCommandHandler(submiid, hc); } } } this.commandHandler = hc; }
public void UpdateCommand() { foreach (MenuItem mi in MenuItems) { MenuItemWithHandler miid = mi as MenuItemWithHandler; if (mi.Tag is MenuWithHandler menuWithHandler) { if (menuWithHandler.Target != null) { CommandState commandState = new CommandState(); menuWithHandler.Target.OnUpdateCommand(menuWithHandler.ID, commandState); miid.Enabled = commandState.Enabled; miid.Checked = commandState.Checked; if (miid.IsParent) { RecurseCommandState(miid); } } } } }
private void RecurseCommandState(MenuItemWithHandler miid) { foreach (MenuItem mi in miid.MenuItems) { MenuItemWithHandler submiid = mi as MenuItemWithHandler; if (submiid != null) { if (commandHandler != null) { CommandState commandState = new CommandState(); commandHandler.OnUpdateCommand((submiid.Tag as MenuWithHandler).ID, commandState); submiid.Enabled = commandState.Enabled; submiid.Checked = commandState.Checked; } if (submiid.IsParent) { RecurseCommandState(submiid); } } } }
private void UpdateMRUMenu(MenuItem mi, string[] mruFiles) { if (mi.IsParent) { foreach (MenuItem mmi in mi.MenuItems) { UpdateMRUMenu(mmi, mruFiles); } } else { MenuItemWithHandler mid = mi as MenuItemWithHandler; if (mid != null) { MenuWithHandler mwh = mid.Tag as MenuWithHandler; if (mwh != null) { string MenuId = mwh.ID; if (MenuId.StartsWith("MenuId.File.Mru.File")) { string filenr = MenuId.Substring("MenuId.File.Mru.File".Length); try { int n = int.Parse(filenr); if (n <= mruFiles.Length && n > 0) { string[] parts = mruFiles[mruFiles.Length - n].Split(';'); if (parts.Length > 1) { mid.Text = parts[0]; } } } catch (FormatException) { } catch (OverflowException) { } } } } } }