/// <summary> /// Execute command. /// </summary> int IOleCommandTarget.Exec(ref Guid pguidCmdGroup, uint cmdId, uint nCmdexecopt, IntPtr pvaIn, IntPtr pvaOut) { if (pguidCmdGroup != GuidList.guidWorkItemViewExtCmdSet) { return(OlecmderrEUnknowngroup); } IWorkItemViewExtCommand command; if (!_commands.TryGetValue(cmdId, out command)) { return(OlecmderrEUnknowngroup); } var dte = (EnvDTE.DTE)GetService(typeof(EnvDTE.DTE)); var selectedWorkItems = WorkItemHelper.GetSelectedWorkItems(dte); if (selectedWorkItems == null) { return(VSConstants.S_OK); } command.Execute(this, selectedWorkItems); return(VSConstants.S_OK); }
/// <summary> /// Query command status. /// </summary> int IOleCommandTarget.QueryStatus(ref Guid pguidCmdGroup, uint cCmds, OLECMD[] prgCmds, IntPtr pCmdText) { if (pguidCmdGroup != GuidList.guidWorkItemViewExtCmdSet) { return(OlecmderrEUnknowngroup); } if (!_commands.ContainsKey(prgCmds[0].cmdID)) { return(OlecmderrEUnknowngroup); } prgCmds[0].cmdf = (uint)OLECMDF.OLECMDF_SUPPORTED; var dte = (EnvDTE.DTE)GetService(typeof(EnvDTE.DTE)); var selectedWorkItems = WorkItemHelper.GetSelectedWorkItems(dte); if (selectedWorkItems != null && selectedWorkItems.Length > 0) { prgCmds[0].cmdf = prgCmds[0].cmdf | (uint)OLECMDF.OLECMDF_ENABLED; } return(VSConstants.S_OK); }