protected Guid cmdGroup; // the OLE command group #endregion #region Construction public SubMenu(ITaskMenuItem item, List <int> indices) : base(item) { this.indices = indices; // menuItems = null; // subMenuCount = 0; // root menu has a single 0 index if (this.indices == null) { this.indices = new List <int>(1); this.indices.Add(0); } // create a command group guid based on the submenu path // for example, a submenu of a second submenu in the root menu // gets a path: 0,1,0. The guid will end with this path. // The CTC file hard-codes these guids Byte[] cmdGroupBytes = taskManagerCmdGroup.ToByteArray(); if (cmdGroupBytes != null) { for (int i = 0; i < this.indices.Count; i++) { cmdGroupBytes[16 - this.indices.Count + i] = (Byte)(this.indices[i]); } } cmdGroup = new Guid(cmdGroupBytes); }
// Get a submenu item. internal SubMenu GetSubMenu(int index) { Refresh(); if (menuItems != null) { for (int i = 0; i < menuItems.Count && index >= 0; i++) { MenuItem menuItem = menuItems[i]; if (menuItem != null) { ITaskMenuItem taskItem = menuItem.TaskMenuItem; if (taskItem != null && taskItem.Kind == TaskMenuKind.Submenu) { if (index == 0) { return(menuItem as SubMenu); } else { index--; } } } } } return(null); }
public int GetMarkerCommandInfo(IVsTextMarker pMarker, int iItem, string[] pbstrText, uint[] pcmdf) { if (commands != null) { try { const OLECMDF OLECMDF_ENABLE = (OLECMDF.OLECMDF_SUPPORTED | OLECMDF.OLECMDF_ENABLED); if (iItem == (int)MarkerCommandValues.mcvBodyDoubleClickCommand && pcmdf != null) { pcmdf[0] = (uint)OLECMDF_ENABLE; } else if (iItem >= (int)MarkerCommandValues.mcvFirstContextMenuCommand && iItem <= (int)MarkerCommandValues.mcvLastContextMenuCommand && pbstrText != null && pcmdf != null) { int item = iItem - (int)MarkerCommandValues.mcvFirstContextMenuCommand; ITaskMenuItem[] menuItems = commands.GetMenuItems(null); if (menuItems != null && item < menuItems.Length) { ITaskMenuItem menuItem = menuItems[item]; if (menuItem != null && menuItem.Kind != TaskMenuKind.Submenu) { pbstrText[0] = menuItem.Caption; if (commands.IsEnabled(menuItems[item])) { pcmdf[0] = (uint)OLECMDF_ENABLE; if (menuItem.Kind == TaskMenuKind.Checkable) { if (commands.IsChecked(menuItems[item])) { pcmdf[0] |= (uint)(OLECMDF_ENABLE | OLECMDF.OLECMDF_LATCHED); } else { pcmdf[0] |= (uint)(OLECMDF_ENABLE | OLECMDF.OLECMDF_NINCHED); } } } else { pcmdf[0] = (uint)OLECMDF.OLECMDF_SUPPORTED; } } } } return(0); } catch { // communication to msbuild task may be broken, need to catch all errors return(VSConstants.E_NOTIMPL); } } else { return(VSConstants.E_NOTIMPL); } }
internal ITaskMenuItem[] GetMenuItems(ITaskMenuItem parent) { return(WithCommands(null, delegate() { return commands.GetMenuItems(parent); })); }
// Get a menu item at a specified index. internal MenuItem GetMenuItem(int index, bool refresh) { if (refresh) { Refresh(); } if (menuItems != null) { for (int i = 0; i < menuItems.Count && index >= 0; i++) { MenuItem menuItem = menuItems[i]; if (menuItem != null) { ITaskMenuItem taskItem = menuItem.TaskMenuItem; if (taskItem != null && taskItem.Kind != TaskMenuKind.Submenu) { if (index == 0) { return(menuItem); } else { index--; } } } } } return(null); }
internal void ExecCommand(ITaskMenuItem menuItem) { if (commands != null && menuItem != null && location != null) { WithCommands(delegate() { commands.OnContextMenu(this, menuItem); }); } }
internal ITaskMenuItem[] GetMenuItems(ITaskMenuItem parent) { if (commands != null) { return(commands.GetMenuItems(parent)); } else { return(null); } }
internal bool IsEnabled(ITaskMenuItem menuItem) { if (commands != null && menuItem != null) { return(WithCommands(false, delegate() { return commands.IsEnabled(menuItem); })); } else { return(false); } }
internal bool IsEnabled(ITaskMenuItem menuItem) { if (commands != null && menuItem != null) { return(commands.IsEnabled(menuItem)); } else { return(false); } }
internal MenuItem(ITaskMenuItem menuItem) { this.taskMenuItem = menuItem; tasks = new List <Task>(1); status = MenuStatus.Disabled; }
internal ITaskMenuItem[] GetMenuItems(ITaskMenuItem parent) { if (commands != null) return commands.GetMenuItems(parent); else return null; }
internal bool IsEnabled(ITaskMenuItem menuItem) { if (commands != null && menuItem != null) return commands.IsEnabled(menuItem); else return false; }
public void OnContextMenu(Microsoft.VisualStudio.CodeTools.ITask task, ITaskMenuItem menuItem) { if (menuItem == menuJumpToRelated) { OnDoubleClick(task); } }
public bool IsEnabled(ITaskMenuItem menuItem) { if (menuItem == menuJumpToRelated) return (location != null && location.projectName != null); else return true; }
public bool IsChecked(ITaskMenuItem menuItem) { Contract.Assume(menuItem.Kind == TaskMenuKind.Checkable); return false; }
protected Guid cmdGroup; // the OLE command group #endregion #region Construction public SubMenu(ITaskMenuItem item, List<int> indices ) : base(item) { this.indices = indices; // menuItems = null; // subMenuCount = 0; // root menu has a single 0 index if (this.indices == null) { this.indices = new List<int>(1); this.indices.Add(0); } // create a command group guid based on the submenu path // for example, a submenu of a second submenu in the root menu // gets a path: 0,1,0. The guid will end with this path. // The CTC file hard-codes these guids Byte[] cmdGroupBytes = taskManagerCmdGroup.ToByteArray(); if (cmdGroupBytes != null) { for (int i = 0; i < this.indices.Count; i++) { cmdGroupBytes[16 - this.indices.Count + i] = (Byte)(this.indices[i]); } } cmdGroup = new Guid(cmdGroupBytes); }
internal void ExecCommand(ITaskMenuItem menuItem) { if (commands != null && menuItem != null && location != null) { commands.OnContextMenu(this, menuItem); } }
protected void Reload() { // Common.Trace("Reload menu info: " + Caption); // Build a new menu menuItems = new List <MenuItem>(1); subMenuCount = 0; foreach (Task task in tasks) { ITaskMenuItem[] taskMenuItems = (task == null ? null : task.GetMenuItems(this.taskMenuItem)); // add to the context menu item list if (taskMenuItems != null) { for (int i = 0; i < taskMenuItems.Length; i++) { ITaskMenuItem taskMenuItem = taskMenuItems[i]; if (taskMenuItem != null) { // update an existing menu or add a new one int index = menuItems.FindIndex(delegate(MenuItem inf) { return(inf == null ? false : inf.TaskMenuItem == taskMenuItem); }); MenuItem item; if (index >= 0) { item = menuItems[index]; } else { if (taskMenuItem.Kind == TaskMenuKind.Submenu) { List <int> path = new List <int>(indices); path.Add(subMenuCount); subMenuCount++; item = new SubMenu(taskMenuItem, path); } else { item = new MenuItem(taskMenuItem); } menuItems.Add(item); } item.AddTask(task); } } } } // finally, set the status of each command: // - disable those menus that are not supported by all selected tasks // - set checkable menus // - disable those checkable menus that disagree on the checked state for (int item = 0; item < menuItems.Count; item++) { MenuItem menuItem = menuItems[item]; if (menuItem != null) { menuItem.SetStatus(tasks.Count); } } }
internal MenuItem(ITaskMenuItem menuItem) { this.taskMenuItem = menuItem; tasks = new List<Task>(1); status = MenuStatus.Disabled; }
public ITaskMenuItem[] GetMenuItems(ITaskMenuItem parent) { if (parent == null) return groupMain; else return null; }