protected virtual bool SupportsOwnedCommand([NotNull] QueryStatusArgs queryStatusArgs) { return(false); }
public virtual int QueryStatus(ref Guid pguidCmdGroup, uint cCmds, [CanBeNull] OLECMD[] prgCmds, IntPtr pCmdText) { // Validate parameters if (prgCmds == null || cCmds != 1) { return(VSConstants.E_INVALIDARG); } // Wrap parameters into argument type instance var statusArgs = new QueryStatusArgs(pguidCmdGroup); statusArgs.CommandCount = cCmds; statusArgs.Commands = prgCmds; statusArgs.PCmdText = pCmdText; // By default all commands are supported var cmdf = OLECMDF.OLECMDF_SUPPORTED; if (pguidCmdGroup == VSConstants.GUID_VSStandardCommandSet97) { // Process standard Commands switch (prgCmds[0].cmdID) { case (uint)VSConstants.VSStd97CmdID.SelectAll: // ICommonCommandSupport if (_UIControl.SupportsSelectAll) cmdf |= OLECMDF.OLECMDF_ENABLED; break; case (uint)VSConstants.VSStd97CmdID.Copy: // ICommonCommandSupport if (_UIControl.SupportsCopy) cmdf |= OLECMDF.OLECMDF_ENABLED; break; case (uint)VSConstants.VSStd97CmdID.Cut: // ICommonCommandSupport if (_UIControl.SupportsCut) cmdf |= OLECMDF.OLECMDF_ENABLED; break; case (uint)VSConstants.VSStd97CmdID.Paste: // ICommonCommandSupport if (_UIControl.SupportsPaste) cmdf |= OLECMDF.OLECMDF_ENABLED; break; case (uint)VSConstants.VSStd97CmdID.Redo: // ICommonCommandSupport if (_UIControl.SupportsRedo) cmdf |= OLECMDF.OLECMDF_ENABLED; break; case (uint)VSConstants.VSStd97CmdID.Undo: // ICommonCommandSupport if (_UIControl.SupportsUndo) cmdf |= OLECMDF.OLECMDF_ENABLED; break; default: if (!SupportsVSStd97Command(prgCmds[0].cmdID, ref cmdf)) { return((int)Microsoft.VisualStudio.OLE.Interop.Constants.OLECMDERR_E_NOTSUPPORTED); } break; } // Pass back the commmand support flag prgCmds[0].cmdf = (uint)cmdf; return(VSConstants.S_OK); } // Check for commands owned by the editor if (pguidCmdGroup == commandSetGuid) { return(SupportsOwnedCommand(statusArgs) ? VSConstants.S_OK : (int)Microsoft.VisualStudio.OLE.Interop.Constants.OLECMDERR_E_NOTSUPPORTED); } // Check for any other commands return(SupportsCommand(statusArgs) ? VSConstants.S_OK : (int)Microsoft.VisualStudio.OLE.Interop.Constants.OLECMDERR_E_NOTSUPPORTED); }