/// <summary> /// The shell call this function to know if a menu item should be visible and /// if it should be enabled/disabled. /// Note that this function will only be called when an instance of this editor /// is open. /// </summary> /// <param name="guidCmdGroup">Guid describing which set of command the current command(s) belong to</param> /// <param name="cCmds">Number of command which status are being asked for</param> /// <param name="prgCmds">Information for each command</param> /// <param name="pCmdText">Used to dynamically change the command text</param> /// <returns>HRESULT</returns> public int QueryStatus(ref Guid guidCmdGroup, uint cCmds, OLECMD[] prgCmds, System.IntPtr pCmdText) { Trace.WriteLineIf(_commandTraceSwitch.TraceVerbose, "VS2P4Package.QueryStatus(guid) entered"); //Stopwatch stopwatch = new Stopwatch(); //stopwatch.Start(); Debug.Assert(cCmds == 1, "Multiple commands"); Debug.Assert(prgCmds != null, "NULL argument"); // Filter out commands that are not defined by this package if (guidCmdGroup != GuidList.guidVS2P4CmdSet) { return((int)(Microsoft.VisualStudio.OLE.Interop.Constants.OLECMDERR_E_NOTSUPPORTED));; } OLECMDF cmdf = OLECMDF.OLECMDF_SUPPORTED; // All source control commands needs to be hidden and disabled when the provider is not active Trace.WriteLineIf(_commandTraceSwitch.TraceVerbose, "VS2P4Package.QueryStatus(guid) checking for provider active"); if (!_sccService.IsActive) { cmdf = cmdf | OLECMDF.OLECMDF_INVISIBLE; cmdf = cmdf & ~(OLECMDF.OLECMDF_ENABLED); prgCmds[0].cmdf = (uint)cmdf; Trace.WriteLineIf(_commandTraceSwitch.TraceVerbose, "VS2P4Package.QueryStatus(guid): provider not active"); return(VSConstants.S_OK); } Trace.WriteLineIf(_commandTraceSwitch.TraceVerbose, String.Format("VS2P4Package.QueryStatus(guid) prgCmds[0].cmdID = {0}", prgCmds[0].cmdID.ToString())); // Process our Commands switch (prgCmds[0].cmdID) { case CommandId.icmdCheckout: cmdf |= QueryStatus_icmdCheckout(); break; case CommandId.icmdMarkForAdd: cmdf |= QueryStatus_icmdMarkForAdd(); break; case CommandId.icmdRevertIfUnchanged: cmdf |= QueryStatus_icmdRevertIfUnchanged(); break; case CommandId.icmdRevert: cmdf |= QueryStatus_icmdRevert(); break; case CommandId.icmdGetLatestRevison: cmdf |= QueryStatus_icmdGetLatestRevison(); break; case CommandId.icmdRevisionHistory: cmdf |= QueryStatus_icmdRevisionHistory(); break; case CommandId.icmdDiff: cmdf |= QueryStatus_icmdDiff(); break; case CommandId.icmdTimeLapse: cmdf |= QueryStatus_icmdTimeLapse(); break; case CommandId.icmdRefresh: cmdf |= QueryStatus_icmdRefresh(); break; default: return((int)(Microsoft.VisualStudio.OLE.Interop.Constants.OLECMDERR_E_NOTSUPPORTED)); } Trace.WriteLineIf(_commandTraceSwitch.TraceVerbose, String.Format("VS2P4Package.QueryStatus(guid) cmdF = {0}", cmdf.ToString())); prgCmds[0].cmdf = (uint)cmdf; //stopwatch.Stop(); //if (stopwatch.ElapsedTicks > 10) //{ // Log.Debug(String.Format("QueryStatus() took {0} msec", stopwatch.ElapsedMilliseconds)); //} Trace.WriteLineIf(_commandTraceSwitch.TraceVerbose, "VS2P4Package.QueryStatus(guid) completed"); return(VSConstants.S_OK); }