public static bool AddOpenFloderFoVS() { CommandBars cmdBars = (CommandBars)(Common.chDTE.DTE.CommandBars); CommandBar vsBarProjectItem = cmdBars["Item"]; menuItemPI = vsBarProjectItem.Controls.Add(MsoControlType.msoControlButton, 1, "", 2, true); menuItemPI.Caption = "在 Windows 资源管理器中打开文件夹(&X)"; if (chDTE.Version != "10.0") { menuItemPI.TooltipText = menuItemPI.Caption; } menuItemHandlerPI = (CommandBarEvents)Common.chDTE.DTE.Events.get_CommandBarEvents(menuItemPI); menuItemHandlerPI.Click += new _dispCommandBarControlEvents_ClickEventHandler(menuItemHandler_Click); if (chDTE.Version != "8.0") { return(true); } CommandBar vsBarProject = cmdBars["Project"]; menuItem = vsBarProject.Controls.Add(MsoControlType.msoControlButton, 1, "", 2, true); menuItem.Caption = "在 Windows 资源管理器中打开文件夹(&X)"; if (chDTE.Version != "10.0") { menuItem.TooltipText = menuItem.Caption; } menuItemHandler = (CommandBarEvents)Common.chDTE.DTE.Events.get_CommandBarEvents(menuItem); menuItemHandler.Click += new _dispCommandBarControlEvents_ClickEventHandler(menuItemHandler_Click); return(true); }
/// <summary>Implements the OnConnection method of the IDTExtensibility2 interface. Receives notification that the Add-in is being loaded.</summary> /// <param term='application'>Root object of the host application.</param> /// <param term='connectMode'>Describes how the Add-in is being loaded.</param> /// <param term='addInInst'>Object representing this Add-in.</param> /// <seealso class='IDTExtensibility2' /> public void OnConnection(object application, ext_ConnectMode connectMode, object addInInst, ref Array custom) { _applicationObject = (DTE2)application; _addInInstance = (AddIn)addInInst; _dbgWatchConfig = new QuickWatchConfig(); try { CommandBar commandBar = ((CommandBars)_applicationObject.CommandBars)["Code Window"]; // Create Quick watch menu _controlQuickWatch = commandBar.Controls.Add(MsoControlType.msoControlButton, System.Reflection.Missing.Value, System.Reflection.Missing.Value, 1, true); _controlQuickWatch.Caption = "QuickWatchEx..."; _controlQuickWatch.Enabled = IsInDebugMode(_applicationObject); _menuItemHandlerQuickWatch = (CommandBarEvents)_applicationObject.Events.CommandBarEvents[_controlQuickWatch]; _menuItemHandlerQuickWatch.Click += MenuItemHandlerQuickWatch_Click; _debuggerEvents = _applicationObject.Events.DebuggerEvents; _debuggerEvents.OnEnterDesignMode += DebuggerEvents_OnEnterDesignMode; _debuggerEvents.OnEnterBreakMode += DebuggerEvents_OnEnterBreakMode; _debuggerEvents.OnEnterRunMode += DebuggerEvents_OnEnterRunMode; } catch (Exception e) { MessageBox.Show(e.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); } }
/// <summary> /// Adds handler to the menu item click event. /// </summary> /// <param name="menuItem">The menu item.</param> private void AddClickEventHandler(CommandBarControl menuItem) { CommandBarEvents menuItemHandler = (EnvDTE.CommandBarEvents)application.DTE.Events.get_CommandBarEvents(menuItem); menuItemHandler.Click += new _dispCommandBarControlEvents_ClickEventHandler(MenuItem_Click); menuItemHandlerList.Add(menuItemHandler); }
/// <summary> /// This event handler gets the Activated event of tool window. /// When db4o Browser opens for first time, it creates menu option under ObjectManager Enterprise menu. /// Using this menu option, user can get back to db4o Browser if he has closed it before. /// </summary> /// <param name="gotFocus"></param> /// <param name="lostFocus"></param> void OnWindowActivated(Window gotFocus, Window lostFocus) { try { if (oPopup != null) { if (gotFocus.Caption.Equals(Constants.DB4OBROWSER) && omObjectBrowserControl == null) { omObjectBrowserControlHandler = AddControlToToolbar(ref omObjectBrowserControl, Constants.DB4O_BROWSER_CAPTION); omObjectBrowserControlHandler.Click += omObjectBrowserControlHandler_Click; } else if (gotFocus.Caption.Equals(Constants.QUERYBUILDER) && omQueryBuilderControl == null) { omQueryBuilderControlHandler = AddControlToToolbar(ref omQueryBuilderControl, Constants.QUERY_BUILDER_CAPTION); omQueryBuilderControlHandler.Click += omQueryBuilderControlHandler_Click; } else if (gotFocus.Caption.Equals(Constants.DB4OPROPERTIES) && omPropertiesControl == null) { omPropertiesControlHandler = AddControlToToolbar(ref omPropertiesControl, Constants.PROPERTIES_TAB_CAPTION); omPropertiesControlHandler.Click += omPropertiesControlHandler_Click; } } } catch (Exception oEx) { LoggingHelper.HandleException(oEx); } }
public override CommandBarEvents get_CommandBarEvents(CommandBarControl menuItem) { CommandBarButtonImpl btn = (CommandBarButtonImpl)menuItem; CommandBarEvents ev = new CommandBarEvents(); btn.mItem.Click += (sender, e) => { bool f = false; btn.OnClick(btn, ref f); ev.OnClick(btn, ref f, ref f); }; return(ev); }
/// <summary>Implements the OnConnection method of the IDTExtensibility2 interface. Receives notification that the Add-in is being loaded.</summary> /// <param term='application'>Root object of the host application.</param> /// <param term='connectMode'>Describes how the Add-in is being loaded.</param> /// <param term='addInInst'>Object representing this Add-in.</param> /// <seealso class='IDTExtensibility2' /> public void OnConnection(object application, ext_ConnectMode connectMode, object addInInst, ref Array custom) { _application = (DTE2)application; _addInInstance = (AddIn)addInInst; _contextMenu = ((CommandBars)_application.CommandBars)["Code Window"]; _encoderizer = (CommandBarPopup)_contextMenu.Controls.Add(MsoControlType.msoControlPopup, Missing.Value, Missing.Value, 1, true); _encoderizer.Caption = "VS Encoderizer"; _javascriptStringEncode = _encoderizer.Controls.Add(MsoControlType.msoControlButton, Missing.Value, Missing.Value, 1, true); _javascriptStringEncode.Caption = "Javascript String Encode"; _javascriptStringEncodeEvents = (CommandBarEvents)_application.Events.CommandBarEvents[_javascriptStringEncode]; _javascriptStringEncodeEvents.Click += JavaScriptStringEncode; _urlPathEncode = _encoderizer.Controls.Add(MsoControlType.msoControlButton, Missing.Value, Missing.Value, 1, true); _urlPathEncode.Caption = "Url Path Encode"; _urlPathEncodeEvents = (CommandBarEvents)_application.Events.CommandBarEvents[_urlPathEncode]; _urlPathEncodeEvents.Click += UrlPathEncode; _urlDecode = _encoderizer.Controls.Add(MsoControlType.msoControlButton, Missing.Value, Missing.Value, 1, true); _urlDecode.Caption = "Url Decode"; _urlDecodeEvents = (CommandBarEvents)_application.Events.CommandBarEvents[_urlDecode]; _urlDecodeEvents.Click += UrlDecode; _urlEncode = _encoderizer.Controls.Add(MsoControlType.msoControlButton, Missing.Value, Missing.Value, 1, true); _urlEncode.Caption = "Url Encode"; _urlEncodeEvents = (CommandBarEvents)_application.Events.CommandBarEvents[_urlEncode]; _urlEncodeEvents.Click += UrlEncode; _htmlAttributeEncode = _encoderizer.Controls.Add(MsoControlType.msoControlButton, Missing.Value, Missing.Value, 1, true); _htmlAttributeEncode.Caption = "Html Attribute Encode"; _htmlAttributeEncodeEvents = (CommandBarEvents)_application.Events.CommandBarEvents[_htmlAttributeEncode]; _htmlAttributeEncodeEvents.Click += HtmlAttributeEncode; _htmlDecode = _encoderizer.Controls.Add(MsoControlType.msoControlButton, Missing.Value, Missing.Value, 1, true); _htmlDecode.Caption = "Html Decode"; _htmlDecodeEvents = (CommandBarEvents)_application.Events.CommandBarEvents[_htmlDecode]; _htmlDecodeEvents.Click += HtmlDecode; _htmlEncode = _encoderizer.Controls.Add(MsoControlType.msoControlButton, Missing.Value, Missing.Value, 1, true); _htmlEncode.Caption = "Html Encode"; _htmlEncodeEvents = (CommandBarEvents)_application.Events.CommandBarEvents[_htmlEncode]; _htmlEncodeEvents.Click += HtmlEncode; }
public static bool AddCopyToHtmlForVS() { // CommandBars cmdBars = (CommandBars)(Common.chDTE.DTE.CommandBars); CommandBar vsBarProjectItem = cmdBars["Item"]; menuItemCopyPath = vsBarProjectItem.Controls.Add(MsoControlType.msoControlButton, 1, "", 1, true); menuItemCopyPath.Caption = "复制完整路径"; if (chDTE.Version != "10.0") { menuItemCopyPath.TooltipText = menuItemCopyPath.Caption; } menuItemHandlerCopyPath = (CommandBarEvents)Common.chDTE.DTE.Events.get_CommandBarEvents(menuItemCopyPath); menuItemHandlerCopyPath.Click += new _dispCommandBarControlEvents_ClickEventHandler(menuItemHandlerCopyPath_Click); menuItemCTH = vsBarProjectItem.Controls.Add(MsoControlType.msoControlButton, 1, "", 1, true); menuItemCTH.Caption = "HTML格式保存并打开"; if (chDTE.Version != "10.0") { menuItemCTH.TooltipText = menuItemCTH.Caption; } menuItemHandlerCTH = (CommandBarEvents)Common.chDTE.DTE.Events.get_CommandBarEvents(menuItemCTH); menuItemHandlerCTH.Click += new _dispCommandBarControlEvents_ClickEventHandler(menuItemHandlerCTH_Click); menuItemCTH_C = vsBarProjectItem.Controls.Add(MsoControlType.msoControlButton, 1, "", 1, true); menuItemCTH_C.Caption = "HTML格式复制"; if (chDTE.Version != "10.0") { menuItemCTH_C.TooltipText = menuItemCTH_C.Caption; } menuItemHandlerCTH_C = (CommandBarEvents)Common.chDTE.DTE.Events.get_CommandBarEvents(menuItemCTH_C); menuItemHandlerCTH_C.Click += new _dispCommandBarControlEvents_ClickEventHandler(menuItemHandlerCTH_C_Click); return(true); }
private int AddSubMenu(out CommandBarControl menuItem, CommandBarPopup parent, out CommandBarEvents eventHandler, int position, string caption, string imagePath, string maskedImagePath) { menuItem = parent.Controls.Add(MsoControlType.msoControlButton, Missing.Value, Missing.Value, position, true); menuItem.Caption = caption; eventHandler = (CommandBarEvents)_applicationObject.Events.get_CommandBarEvents(menuItem); if (!string.IsNullOrEmpty(imagePath)) { Helper.SetPicture(Assembly.GetExecutingAssembly(), (CommandBarButton) menuItem.Control, imagePath, maskedImagePath); } else if (string.Equals(caption, DB4O_HOMEPAGE)) { menuItem.BeginGroup = true; } return position + 1; }
private int AddSubMenu(out CommandBarControl menuItem, CommandBarPopup parent, out CommandBarEvents eventHandler, int position, string caption) { return AddSubMenu(out menuItem, parent, out eventHandler, position, caption, string.Empty, string.Empty); }
/// <summary> /// This event handler gets the Activated event of tool window. /// When db4o Browser opens for first time, it creates menu option under ObjectManager Enterprise menu. /// Using this menu option, user can get back to db4o Browser if he has closed it before. /// </summary> /// <param name="gotFocus"></param> /// <param name="lostFocus"></param> void OnWindowActivated(Window gotFocus, Window lostFocus) { try { //TODO: Move this code closer to window instantiation. if (oPopup != null) { if (gotFocus.Caption.Equals(Constants.DB4OBROWSER) && omObjectBrowserControl == null) { omObjectBrowserControlHandler = AddControlToToolbar(ref omObjectBrowserControl, Constants.DB4O_BROWSER_CAPTION); omObjectBrowserControlHandler.Click += omObjectBrowserControlHandler_Click; } else if (gotFocus.Caption.Equals(Constants.QUERYBUILDER) && omQueryBuilderControl == null) { omQueryBuilderControlHandler = AddControlToToolbar(ref omQueryBuilderControl, Constants.QUERY_BUILDER_CAPTION); omQueryBuilderControlHandler.Click += omQueryBuilderControlHandler_Click; } else if (gotFocus.Caption.Equals(Constants.DB4OPROPERTIES) && omPropertiesControl == null) { omPropertiesControlHandler = AddControlToToolbar(ref omPropertiesControl ,Constants.PROPERTIES_TAB_CAPTION); omPropertiesControlHandler.Click += omPropertiesControlHandler_Click; } } } catch (System.Runtime.InteropServices.COMException) { } catch (Exception oEx) { LoggingHelper.HandleException(oEx); } }
/// <summary>Implements the OnConnection method of the IDTExtensibility2 interface. Receives notification that the Add-in is being loaded.</summary> /// <param term='application'>Root object of the host application.</param> /// <param term='connectMode'>Describes how the Add-in is being loaded.</param> /// <param term='addInInst'>Object representing this Add-in.</param> /// <seealso class='IDTExtensibility2' /> public void OnConnection(object application, ext_ConnectMode connectMode, object addInInst, ref Array custom) { _application = (DTE2)application; _addInInstance = (AddIn)addInInst; var commandBar = ((CommandBars)_application.CommandBars)["Code Window"]; var commandBarPopup = (CommandBarPopup)commandBar.Controls.Add(MsoControlType.msoControlPopup, Missing.Value, Missing.Value, 1, true); commandBarPopup.Caption = "RegExerciser"; _searchWithRegex = commandBarPopup.Controls.Add(MsoControlType.msoControlButton, Missing.Value, Missing.Value, 1, true); _searchWithRegex.Caption = "Search With Regular Expression"; _searchWithRegexEvents = (CommandBarEvents)_application.Events.CommandBarEvents[_searchWithRegex]; _searchWithRegexEvents.Click += SearchWithRegex; _testRegex = commandBarPopup.Controls.Add(MsoControlType.msoControlButton, Missing.Value, Missing.Value, 1, true); _testRegex.Caption = "Test Regular Expression"; _testRegexEvents = (CommandBarEvents)_application.Events.CommandBarEvents[_testRegex]; _testRegexEvents.Click += TestRegex; }
/// <summary>Implements the OnConnection method of the IDTExtensibility2 interface. Receives notification that the Add-in is being loaded.</summary> /// <param term='application'>Root object of the host application.</param> /// <param term='connectMode'>Describes how the Add-in is being loaded.</param> /// <param term='addInInst'>Object representing this Add-in.</param> /// <seealso class='IDTExtensibility2' /> public void OnConnection(object application, ext_ConnectMode connectMode, object addInInst, ref Array custom) { _applicationObject = (DTE2)application; _addInInstance = (AddIn)addInInst; if(connectMode == ext_ConnectMode.ext_cm_UISetup) { object []contextGUIDS = new object[] { }; Commands2 commands = (Commands2)_applicationObject.Commands; string toolsMenuName = "Tools"; //Place the command on the tools menu. //Find the MenuBar command bar, which is the top-level command bar holding all the main menu items: Microsoft.VisualStudio.CommandBars.CommandBar menuBarCommandBar = ((Microsoft.VisualStudio.CommandBars.CommandBars)_applicationObject.CommandBars)["MenuBar"]; //Find the Tools command bar on the MenuBar command bar: CommandBarControl toolsControl = menuBarCommandBar.Controls[toolsMenuName]; CommandBarPopup toolsPopup = (CommandBarPopup)toolsControl; CommandBar oCommandBar = ((CommandBars)_applicationObject.CommandBars) ["Code Window"]; CommandBarControl oControl1 = (CommandBarControl)oCommandBar.Controls.Add(MsoControlType.msoControlButton, System.Reflection.Missing.Value, System.Reflection.Missing.Value, 1, true); // Set the caption of the submenuitem oControl1.Caption = "Add UM Resource String"; oSubMenuItemHandler = (CommandBarEvents)_applicationObject.Events.get_CommandBarEvents(oControl1); oSubMenuItemHandler.Click += new _dispCommandBarControlEvents_ClickEventHandler(oSubMenuItemHandler_Click); //This try/catch block can be duplicated if you wish to add multiple commands to be handled by your Add-in, // just make sure you also update the QueryStatus/Exec method to include the new command names. try { //Add a command to the Commands collection: Command command = commands.AddNamedCommand2(_addInInstance, "CPPResourceHelper", "CPPResourceHelper", "Executes the command for CPPResourceHelper", true, 59, ref contextGUIDS, (int)vsCommandStatus.vsCommandStatusSupported+(int)vsCommandStatus.vsCommandStatusEnabled, (int)vsCommandStyle.vsCommandStylePictAndText, vsCommandControlType.vsCommandControlTypeButton); //Add a control for the command to the tools menu: if((command != null) && (toolsPopup != null)) { command.AddControl(toolsPopup.CommandBar, 1); } } catch(System.ArgumentException) { //If we are here, then the exception is probably because a command with that name // already exists. If so there is no need to recreate the command and we can // safely ignore the exception. } } }
/// <summary>实现 IDTExtensibility2 接口的 OnConnection 方法。接收正在加载外接程序的通知。</summary> /// <param term='application'>宿主应用程序的根对象。</param> /// <param term='connectMode'>描述外接程序的加载方式。</param> /// <param term='addInInst'>表示此外接程序的对象。</param> /// <seealso class='IDTExtensibility2' /> public void OnConnection(object application, ext_ConnectMode connectMode, object addInInst, ref Array custom) { _applicationObject = (DTE2)application; _addInInstance = (AddIn)addInInst; CommandBars cmdBars = (CommandBars)(_applicationObject.DTE.CommandBars); CommandBar vsBarProject = cmdBars["Project"]; int idxMenuAddRef = 1; int iMenuCount = vsBarProject.Controls.Count; for (int i = 1; i <= vsBarProject.Controls.Count; i++) { if (vsBarProject.Controls[i].Caption.StartsWith("卸载项目")) cmdUnload = vsBarProject.Controls[i]; if (vsBarProject.Controls[i].Caption.StartsWith("重新加载项目")) cmdReload = vsBarProject.Controls[i]; if (vsBarProject.Controls[i].Caption.StartsWith("添加 Web 引用")) idxMenuAddRef = i;// cmdReload = vsBarProject.Controls[i]; } #region 建立菜单 // O/R Mapping CommandBarPopup menuCode = vsBarProject.Controls.Add(MsoControlType.msoControlPopup, Missing.Value, Missing.Value, iMenuCount, true) as CommandBarPopup; menuCode.Caption = "NXDO.RJacoste 实用工具集"; menuCode.TooltipText = "NXDO.RJacoste 工具集"; //(menuCode as CommandBarButton).Style = MsoButtonStyle.msoButtonIconAndCaption; //(menuCode as CommandBarButton).Picture = AxImage.StdPicture("NXDO.Component.Addin.Res.image.VSAddin.bmp"); CommandBarControl menuItemClass = menuCode.Controls.Add(MsoControlType.msoControlButton, 1, "", 1, true); menuItemClass.Tag = "Java 的 C# Class"; menuItemClass.Caption = "生成 jar 的 c# 包装类"; menuItemClass.TooltipText = "生成 jar 的 c# 包装类"; menuJacosteHandler = (CommandBarEvents)_applicationObject.DTE.Events.get_CommandBarEvents(menuItemClass); menuJacosteHandler.Click += new _dispCommandBarControlEvents_ClickEventHandler(EventAction); CommandBarButton cmdItemClass = (CommandBarButton)menuItemClass; cmdItemClass.Style = MsoButtonStyle.msoButtonIconAndCaption; cmdItemClass.Picture = AxImage.StdPicture("NXDO.RJacoste.Addin.Res.FormIco.png"); //CommandBar vsBarProject2 = cmdBars["Web Project Folder"]; #endregion }
public void OnConnection(object application, ext_ConnectMode connectMode, object addInInst, ref Array custom) { _applicationObject = (DTE2)application; _addInInstance = (AddIn)addInInst; helper = new DTEHelper(_applicationObject, _addInInstance); if (connectMode == ext_ConnectMode.ext_cm_UISetup) { // Get main menu bar CommandBar menuBarCommandBar = ((CommandBars)_applicationObject.CommandBars)["MenuBar"]; #region Add CommandViewer command // TODO: So many hard coded strings... // Get Tools menu string toolsMenuName = helper.GetCulturedMenuName("Tools"); CommandBarControl toolsControl = menuBarCommandBar.Controls[toolsMenuName]; CommandBarPopup toolsPopup = (CommandBarPopup)toolsControl; // Add a new command helper.AddNamedCommand2(toolsPopup.CommandBar, COMMAND_VIEWER_COMMAND_NAME, "CommandViewer", "View All Commands", true, 59, toolsPopup.Controls.Count + 1); #endregion #region Add CloseAllDocuments command // Get "Easy MDI Document Window" command bar CommandBar mdiDocCommandBar = helper.GetCommandBarByName("Easy MDI Document Window"); // Place the command below "Close All But This" menu item CommandBarControl closeAllButThisCmd = mdiDocCommandBar.Controls["Close All But This"]; int closeAllCmdIndex = (closeAllButThisCmd == null) ? 1 : (closeAllButThisCmd.Index + 1); // Add a new command helper.AddNamedCommand2(mdiDocCommandBar, CLOSE_ALL_DOCUMENTS_COMMAND_NAME, "Close All Documents", "Close All Documents", false, 0, closeAllCmdIndex); #endregion #region Add NPetshopSlnGenerator command helper.AddNamedCommand2(toolsPopup.CommandBar, NPETSHOP_SLN_GENERATOR_COMMAND_NAME, "Generate NPetshop Sln", "Generate NPetshop Solution", true, 59, toolsPopup.Controls.Count + 1); #endregion #region Add ShortcutList command // Get View menu string viewMenuName = helper.GetCulturedMenuName("View"); CommandBarControl viewControl = menuBarCommandBar.Controls[viewMenuName]; CommandBarPopup viewPopup = (CommandBarPopup)viewControl; helper.AddNamedCommand2(viewPopup.CommandBar, SHOW_SHORTCUT_LIST_COMMAND_NAME, "Show shortcut list window", "Show shortcut list window", false, 0, viewPopup.Controls.Count + 1); #endregion #region Add CollapseAllProjects command // Get "Solution Explorer" command bar CommandBar slnCommandBar = helper.GetCommandBarByName("Solution"); // Add a new command helper.AddNamedCommand2(slnCommandBar, COLLAPSE_ALL_PROJECTS_COMMAND_NAME, "Collapse All Projects", "Collapse All Projects", false, 0, slnCommandBar.Controls.Count + 1); #endregion #region Add PropertyManager commands // Get "Code Window" command bar CommandBar codeWinCommandBar = helper.GetCommandBarByName("Code Window"); int pmPopupIndex = codeWinCommandBar.Controls.Count + 1; CommandBarPopup pmPopup = codeWinCommandBar.Controls.Add( MsoControlType.msoControlPopup, Type.Missing, Type.Missing, pmPopupIndex, true) as CommandBarPopup; pmPopup.Caption = "PropertyManager"; CommandBarButton batchPropertyCmd = helper.AddButtonToPopup(pmPopup, pmPopup.Controls.Count + 1, "Batch Property", "Encapsulate these fields"); batchPropertyCmdEvent = _applicationObject.Events.get_CommandBarEvents(batchPropertyCmd) as CommandBarEvents; batchPropertyCmdEvent.Click += new _dispCommandBarControlEvents_ClickEventHandler(BatchPropertyCmdEvent_Click); CommandBarButton convertToAutoPropCmd = helper.AddButtonToPopup(pmPopup, pmPopup.Controls.Count + 1, "Convert to Auto-Property", "Convert to Auto-Property(C# 3.0 style)"); convertToAutoPropCmdEvent = _applicationObject.Events.get_CommandBarEvents(convertToAutoPropCmd) as CommandBarEvents; convertToAutoPropCmdEvent.Click += new _dispCommandBarControlEvents_ClickEventHandler(ConvertToAutoPropCmdEvent_Click); CommandBarButton convertToNormalPropCmd = helper.AddButtonToPopup(pmPopup, pmPopup.Controls.Count + 1, "Convert to Normal-Property", "Convert to Normal-Property(C# 2.0 style)"); convertToNormalPropCmdEvent = _applicationObject.Events.get_CommandBarEvents(convertToNormalPropCmd) as CommandBarEvents; convertToNormalPropCmdEvent.Click += new _dispCommandBarControlEvents_ClickEventHandler(ConvertToNormalPropCmdEvent_Click); #endregion #region Add CodeTemplate commands // Add popup menu item int templatePopupIndex = codeWinCommandBar.Controls.Count + 1; CommandBarPopup codeTemplatePopup = codeWinCommandBar.Controls.Add( MsoControlType.msoControlPopup, Type.Missing, Type.Missing, templatePopupIndex, true) as CommandBarPopup; codeTemplatePopup.Caption = "Code Template"; List <string> templateNames = CodeTemplateManager.Instance.GetTemplateNames(); codeTemplateCmdEvents = new CommandBarEvents[templateNames.Count]; for (int i = 0; i < templateNames.Count; i++) { string name = templateNames[i]; CommandBarButton codeTemplateCmd = helper.AddButtonToPopup(codeTemplatePopup, codeTemplatePopup.Controls.Count + 1, name, "Insert this code template"); codeTemplateCmdEvents[i] = _applicationObject.Events.get_CommandBarEvents(codeTemplateCmd) as CommandBarEvents; codeTemplateCmdEvents[i].Click += new _dispCommandBarControlEvents_ClickEventHandler(codeTemplateCmdEvent_Click); } #endregion #region Add Code Model commands //CommandBarButton codeModelCmd = helper.AddButtonToCmdBar(codeWinCommandBar, codeWinCommandBar.Controls.Count + 1, // "Code Model", "Code Model Sample"); //codeModelCmdEvent = _applicationObject.Events.get_CommandBarEvents(codeModelCmd) as CommandBarEvents; //codeModelCmdEvent.Click += new _dispCommandBarControlEvents_ClickEventHandler(CodeModelCmdEvent_Click); #endregion #region Search This commands int searchThisPopupIndex = codeWinCommandBar.Controls.Count + 1; CommandBarPopup searchThisPopup = codeWinCommandBar.Controls.Add( MsoControlType.msoControlPopup, Type.Missing, Type.Missing, searchThisPopupIndex, true) as CommandBarPopup; searchThisPopup.Caption = "Search This In"; List <SearchEngine> engines = SearchEngineConfigManager.Instance.GetSearchEngines(); searchTextCmdEvents = new CommandBarEvents[engines.Count]; for (int i = 0; i < engines.Count; i++) { SearchEngine e = engines[i]; CommandBarButton searchCmd = helper.AddButtonToPopup(searchThisPopup, searchThisPopup.Controls.Count + 1, e.Name, "Search in " + e.Name); if (i == 0) { searchCmd.FaceId = 141; } searchTextCmdEvents[i] = _applicationObject.Events.get_CommandBarEvents(searchCmd) as CommandBarEvents; searchTextCmdEvents[i].Click += new _dispCommandBarControlEvents_ClickEventHandler(SearchTextCmdEvent_Click); } #endregion } else if (connectMode == ext_ConnectMode.ext_cm_AfterStartup) { object programmingObj = null; string guidString = "{41F8DEA8-EB07-45b7-9B1D-EB969DC43EC5}"; Windows2 windows2 = _applicationObject.Windows as Windows2; Assembly asm = Assembly.GetExecutingAssembly(); shortcutListWindow = windows2.CreateToolWindow2(_addInInstance, asm.Location, "NEnhancer.ShortcutListControl", "Visual Studio Shortcut List", guidString, ref programmingObj); shortcutListCtrl = shortcutListWindow.Object as ShortcutListControl; shortcutListCtrl.DTEObject = _applicationObject; } }
/// <summary>实现 IDTExtensibility2 接口的 OnConnection 方法。接收正在加载外接程序的通知。</summary> /// <param term='application'>宿主应用程序的根对象。</param> /// <param term='connectMode'>描述外接程序的加载方式。</param> /// <param term='addInInst'>表示此外接程序的对象。</param> /// <seealso class='IDTExtensibility2' /> public void OnConnection(object application, ext_ConnectMode connectMode, object addInInst, ref Array custom) { this._applicationObject = (DTE2)application; this._addInInstance = (AddIn)addInInst; if (connectMode == ext_ConnectMode.ext_cm_UISetup || connectMode == ext_ConnectMode.ext_cm_Startup) { object[] array = new object[0]; Commands2 commands = (Commands2)this._applicationObject.Commands; string index = "Tools"; CommandBar commandBar = ((CommandBars)this._applicationObject.CommandBars)["MenuBar"]; CommandBarControl commandBarControl = commandBar.Controls[index]; CommandBarPopup commandBarPopup = (CommandBarPopup)commandBarControl; CommandBars commandBars = (CommandBars)this._applicationObject.DTE.CommandBars; CommandBar commandBarProject = commandBars["Project"]; CommandBar commandBarItem = commandBars["Item"]; CommandBar commandBarFolder = commandBars["Folder"]; try { CommandBarControl commandBarControl2 = commandBarProject.Controls.Add(MsoControlType.msoControlButton, 1, "", 1, true); commandBarControl2.Tag = "ConnectConfig"; commandBarControl2.Caption = "wtf配置连接"; commandBarControl2.TooltipText = "ConnectConfig"; this.connectItemHandler = (CommandBarEvents)this._applicationObject.DTE.Events.get_CommandBarEvents(commandBarControl2); this.connectItemHandler.Click += ConnectItem_Click; CommandBarControl commandBarControl3 = commandBarProject.Controls.Add(MsoControlType.msoControlButton, 1, "", 2, true); commandBarControl3.Tag = "AddRuleCode"; commandBarControl3.Caption = "wtf新增业务层"; commandBarControl3.TooltipText = "AddRuleCode"; this.addRuleCodeItemHandler = (CommandBarEvents)this._applicationObject.DTE.Events.get_CommandBarEvents(commandBarControl3); this.addRuleCodeItemHandler.Click += AddRuleCodeItem_Click; CommandBarControl commandBarControl4 = commandBarProject.Controls.Add(MsoControlType.msoControlButton, 1, "", 3, true); commandBarControl4.Tag = "AddCodeConfig"; commandBarControl4.Caption = "wtf一键生成配置文件"; commandBarControl4.TooltipText = "AddCodeConfig"; this.AddCodeConfigItemHandler = (CommandBarEvents)this._applicationObject.DTE.Events.get_CommandBarEvents(commandBarControl4); this.AddCodeConfigItemHandler.Click += AddCodeConfigItem_Click; CommandBarControl commandBarControl5 = commandBarItem.Controls.Add(MsoControlType.msoControlButton, 1, "", 1, true); commandBarControl5.Tag = "Update"; commandBarControl5.Caption = "wtf更新代码"; commandBarControl5.TooltipText = "Update"; this.updateHandler = (CommandBarEvents)this._applicationObject.DTE.Events.get_CommandBarEvents(commandBarControl5); this.updateHandler.Click += CSItem_Click; CommandBarControl commandBarControl6 = commandBarItem.Controls.Add(MsoControlType.msoControlButton, 1, "", 2, true); commandBarControl6.Tag = "Update"; commandBarControl6.Caption = "wtf更新实体和访问层"; commandBarControl6.TooltipText = "Update"; this.updateEDHandler = (CommandBarEvents)this._applicationObject.DTE.Events.get_CommandBarEvents(commandBarControl6); this.updateEDHandler.Click += CSEDItem_Click; CommandBarControl commandBarControl7 = commandBarItem.Controls.Add(MsoControlType.msoControlButton, 1, "", 3, true); commandBarControl7.Tag = "SqlEdit"; commandBarControl7.Caption = "wtf新增编辑页"; commandBarControl7.TooltipText = "SqlEdit"; this.SqlEditHandler = (CommandBarEvents)this._applicationObject.DTE.Events.get_CommandBarEvents(commandBarControl7); this.SqlEditHandler.Click += SqlEditItem_Click; CommandBarControl commandBarControl8 = commandBarItem.Controls.Add(MsoControlType.msoControlButton, 1, "", 4, true); commandBarControl8.Tag = "SqlLsit"; commandBarControl8.Caption = "wtf新增列表页"; commandBarControl8.TooltipText = "SqlLsit"; this.SqlListHandler = (CommandBarEvents)this._applicationObject.DTE.Events.get_CommandBarEvents(commandBarControl8); this.SqlListHandler.Click += SqlListItem_Click; Command command = commands.AddNamedCommand2(this._addInInstance, "WTFCode", "WTFCode", "Executes the command for WTFCode", true, 59, ref array, 3, 3, vsCommandControlType.vsCommandControlTypeButton); if (command != null && commandBarPopup != null) { command.AddControl(commandBarPopup.CommandBar, 1); } } catch (ArgumentException) { } } }
/// <summary> /// Builds the menu. /// </summary> /// <param name="level">Context level where menu needs to be dispalyed.</param> private void BuildMenu(ContextLevels level) { // Build Root Menu CommandBarPopup menu = this.AddVSMainMenuItem(VSContextUtility.ContextToVSContext(level), IntuitAnywhereResources.mainmenu, level); int position = 1; // Build Sub Items CommandBarButton javaScriptLibrary = AddVSMenuItem(menu, IntuitAnywhereResources.menu01, position++, false, IntuitAnywhereResources.JSlibrary); CommandBarButton openID = AddVSMenuItem(menu, IntuitAnywhereResources.menu02, position++, false, IntuitAnywhereResources.openid); CommandBarButton connecttoQuickBooks = AddVSMenuItem(menu, IntuitAnywhereResources.menu03, position++, false, IntuitAnywhereResources.connect_to_qb_16); CommandBarButton addBlueDotMenu = AddVSMenuItem(menu, IntuitAnywhereResources.menu04, position++, false, IntuitAnywhereResources.bluedot); CommandBarButton addLogoutMenu = AddVSMenuItem(menu, IntuitAnywhereResources.menu012, position++, false, IntuitAnywhereResources.logout_1); CommandBarButton dataServicesSDK = AddVSMenuItem(menu, IntuitAnywhereResources.menu05, position++, false, IntuitAnywhereResources.Dataservices); CommandBarButton dataServicesSDKV3 = AddVSMenuItem(menu, IntuitAnywhereResources.menu11, position++, false, IntuitAnywhereResources.Dataservices); CommandBarButton directConnectToIntuit = AddVSMenuItem(menu, IntuitAnywhereResources.menu07, position++, false, IntuitAnywhereResources.directconnect); CommandBarButton disconnet = AddVSMenuItem(menu, IntuitAnywhereResources.menu08, position++, false, IntuitAnywhereResources.disconnect_from_qb_16); CommandBarButton sdkDocHelp = AddVSMenuItem(menu, IntuitAnywhereResources.menu10, position++, false, IntuitAnywhereResources.Help_icon); CommandBarButton help = AddVSMenuItem(menu, IntuitAnywhereResources.menu06, position++, false, IntuitAnywhereResources.Help_icon); if (level == ContextLevels.MenuBar) { CommandBarButton ippDocumentation = AddVSMenuItem(menu, IntuitAnywhereResources.menu09, position++, true, IntuitAnywhereResources.docs); CommandBarButton ippSupport = AddVSMenuItem(menu, IntuitAnywhereResources.menu010, position++, false, IntuitAnywhereResources.Support); CommandBarButton ippFrontRunner = AddVSMenuItem(menu, IntuitAnywhereResources.menu011, position++, true, IntuitAnywhereResources.FrontrunnerLogo); // Add Event Handlers CommandBarEvents ippDocumentationMenuItemHandler = (EnvDTE.CommandBarEvents) this.visualStudio.DTE.Events.get_CommandBarEvents(ippDocumentation); ippDocumentationMenuItemHandler.Click += new _dispCommandBarControlEvents_ClickEventHandler(this.IppDocumentationMenuItemHandler_Click); this.menuItemHandlerList.Add(ippDocumentationMenuItemHandler); CommandBarEvents ippSupportMenuItemHandler = (EnvDTE.CommandBarEvents) this.visualStudio.DTE.Events.get_CommandBarEvents(ippSupport); ippSupportMenuItemHandler.Click += new _dispCommandBarControlEvents_ClickEventHandler(this.IppSupportMenuItemHandler_Click); this.menuItemHandlerList.Add(ippSupportMenuItemHandler); CommandBarEvents ippFrontRunnerMenuItemHandler = (EnvDTE.CommandBarEvents) this.visualStudio.DTE.Events.get_CommandBarEvents(ippFrontRunner); ippFrontRunnerMenuItemHandler.Click += new _dispCommandBarControlEvents_ClickEventHandler(this.IppFrontRunnerMenuItemHandler_Click); this.menuItemHandlerList.Add(ippFrontRunnerMenuItemHandler); } // Add Event Handlers CommandBarEvents javaScriptLibraryMenuItemHandler = (EnvDTE.CommandBarEvents) this.visualStudio.DTE.Events.get_CommandBarEvents(javaScriptLibrary); javaScriptLibraryMenuItemHandler.Click += new _dispCommandBarControlEvents_ClickEventHandler(this.JavaScriptLibraryMenuItemHandler_Click); this.menuItemHandlerList.Add(javaScriptLibraryMenuItemHandler); CommandBarEvents connecttoQuickBooksMenuItemHandler = (EnvDTE.CommandBarEvents) this.visualStudio.DTE.Events.get_CommandBarEvents(connecttoQuickBooks); connecttoQuickBooksMenuItemHandler.Click += new _dispCommandBarControlEvents_ClickEventHandler(this.ConnecttoQuickBooksMenuItemHandler_Click); this.menuItemHandlerList.Add(connecttoQuickBooksMenuItemHandler); CommandBarEvents addBlueDotMenuMenuItemHandler = (EnvDTE.CommandBarEvents) this.visualStudio.DTE.Events.get_CommandBarEvents(addBlueDotMenu); addBlueDotMenuMenuItemHandler.Click += new _dispCommandBarControlEvents_ClickEventHandler(this.AddBlueDotMenuMenuItemHandler_Click); this.menuItemHandlerList.Add(addBlueDotMenuMenuItemHandler); CommandBarEvents openIDMenuItemHandler = (EnvDTE.CommandBarEvents) this.visualStudio.DTE.Events.get_CommandBarEvents(openID); openIDMenuItemHandler.Click += new _dispCommandBarControlEvents_ClickEventHandler(this.OpenIDMenuItemHandler_Click); this.menuItemHandlerList.Add(openIDMenuItemHandler); CommandBarEvents dataServicesSDKMenuItemHandler = (EnvDTE.CommandBarEvents) this.visualStudio.DTE.Events.get_CommandBarEvents(dataServicesSDK); dataServicesSDKMenuItemHandler.Click += new _dispCommandBarControlEvents_ClickEventHandler(this.DataServicesSDKMenuItemHandler_Click); this.menuItemHandlerList.Add(dataServicesSDKMenuItemHandler); CommandBarEvents dataServicesSDKV3MenuItemHandler = (EnvDTE.CommandBarEvents) this.visualStudio.DTE.Events.get_CommandBarEvents(dataServicesSDKV3); dataServicesSDKV3MenuItemHandler.Click += new _dispCommandBarControlEvents_ClickEventHandler(this.DataServicesSDKV3MenuItemHandler_Click); this.menuItemHandlerList.Add(dataServicesSDKV3MenuItemHandler); CommandBarEvents directConnectToIntuitMenuItemHandler = (EnvDTE.CommandBarEvents) this.visualStudio.DTE.Events.get_CommandBarEvents(directConnectToIntuit); directConnectToIntuitMenuItemHandler.Click += new _dispCommandBarControlEvents_ClickEventHandler(this.DirectConnectToIntuitMenuItemHandler_Click); this.menuItemHandlerList.Add(directConnectToIntuitMenuItemHandler); CommandBarEvents disconnetMenuItemHandler = (EnvDTE.CommandBarEvents) this.visualStudio.DTE.Events.get_CommandBarEvents(disconnet); disconnetMenuItemHandler.Click += new _dispCommandBarControlEvents_ClickEventHandler(this.DisconnetMenuItemHandler_Click); this.menuItemHandlerList.Add(disconnetMenuItemHandler); CommandBarEvents helpMenuItemHandler = (EnvDTE.CommandBarEvents) this.visualStudio.DTE.Events.get_CommandBarEvents(help); helpMenuItemHandler.Click += new _dispCommandBarControlEvents_ClickEventHandler(this.HelpMenuItemHandler_Click); this.menuItemHandlerList.Add(helpMenuItemHandler); CommandBarEvents sdkDocHelpMenuItemHandler = (EnvDTE.CommandBarEvents) this.visualStudio.DTE.Events.get_CommandBarEvents(sdkDocHelp); sdkDocHelpMenuItemHandler.Click += new _dispCommandBarControlEvents_ClickEventHandler(this.SdkDocHelpMenuItemHandler_Click); this.menuItemHandlerList.Add(sdkDocHelpMenuItemHandler); CommandBarEvents logoutMenuItemHandler = (EnvDTE.CommandBarEvents) this.visualStudio.DTE.Events.get_CommandBarEvents(addLogoutMenu); logoutMenuItemHandler.Click += new _dispCommandBarControlEvents_ClickEventHandler(this.AddLogoutMenuItemHandler_Click); this.menuItemHandlerList.Add(logoutMenuItemHandler); }
///////////////////////////////////////////////////////////////////////////// // Overriden Package Implementation #region Package Members /// <summary> /// Initialization of the package; this method is called right after the package is sited, so this is the place /// where you can put all the initilaization code that rely on services provided by VisualStudio. /// </summary> protected override void Initialize() { try { Trace.WriteLine(string.Format(CultureInfo.CurrentCulture, "Entering Initialize() of: {0}", this.ToString())); base.Initialize(); // Add our command handlers for menu (commands must exist in the .vsct file) OleMenuCommandService mcs = GetService(typeof(IMenuCommandService)) as OleMenuCommandService; if (mcs != null) { // Create the solution builder command for the Mo+ Menu CommandID incodeBuilderCommandID = new CommandID(GuidList.guidInCodeMenuCmdSet, (int)PkgCmdIDList.cmdidSolutionBuilderControl); MenuCommand incodeBuilderToolWin = new MenuCommand(SolutionBuilderCallback, incodeBuilderCommandID); mcs.AddCommand(incodeBuilderToolWin); // Create the solution updater command for the Mo+ Menu CommandID incodeUpdaterCommandID = new CommandID(GuidList.guidInCodeMenuCmdSet, (int)PkgCmdIDList.cmdidSolutionUpdaterControl); MenuCommand incodeUpdaterToolWin = new MenuCommand(SolutionUpdaterCallback, incodeUpdaterCommandID); mcs.AddCommand(incodeUpdaterToolWin); } else { SolutionBuilderPane.OutputString("Could not get IMenuCommandService."); } // add the handler for tracking solution opens and closes if (ApplicationObject != null) { // wire up solution events PackageSolutionEvents = ApplicationObject.Events.SolutionEvents; PackageSolutionEvents.Opened += new _dispSolutionEvents_OpenedEventHandler(CheckOpenCurrentSolution); // get the solution command bar CommandBar solutionCommandBar = ((CommandBars)ApplicationObject.CommandBars)["Solution"]; // set up the main Mo+ context menu CommandBarPopup solutionPopup = (CommandBarPopup)solutionCommandBar.Controls.Add(MsoControlType.msoControlPopup, System.Reflection.Missing.Value, System.Reflection.Missing.Value, 3, true); solutionPopup.Caption = "Mo+"; // add solution builder submenu CommandBarControl solutionBuilderControl = solutionPopup.Controls.Add(MsoControlType.msoControlButton, System.Reflection.Missing.Value, System.Reflection.Missing.Value, 1, true); solutionBuilderControl.Caption = "Solution Builder"; launchSolutionBuilderMenuItemHandler = (CommandBarEvents)ApplicationObject.Events.get_CommandBarEvents(solutionBuilderControl); launchSolutionBuilderMenuItemHandler.Click += new _dispCommandBarControlEvents_ClickEventHandler(launchSolutionBuilder_Click); // add solution updater submenu CommandBarControl solutionUpdaterControl = solutionPopup.Controls.Add(MsoControlType.msoControlButton, System.Reflection.Missing.Value, System.Reflection.Missing.Value, 1, true); solutionUpdaterControl.Caption = "Update Solution"; updateSolutionMenuItemHandler = (CommandBarEvents)ApplicationObject.Events.get_CommandBarEvents(solutionUpdaterControl); updateSolutionMenuItemHandler.Click += new _dispCommandBarControlEvents_ClickEventHandler(updateSolution_Click); // if solution is already open, load it CheckOpenCurrentSolution(); } } catch (System.Exception ex) { // put exception message in output pane SolutionBuilderPane.OutputString(ex.Message); } }
/// <summary>Implements the OnConnection method of the IDTExtensibility2 interface. Receives notification that the Add-in is being loaded.</summary> /// <param term='application'>Root object of the host application.</param> /// <param term='connectMode'>Describes how the Add-in is being loaded.</param> /// <param term='addInInst'>Object representing this Add-in.</param> /// <seealso class='IDTExtensibility2' /> public void OnConnection(object application, ext_ConnectMode connectMode, object addInInst, ref Array custom) { _applicationObject = (DTE2)application; _addInInstance = (AddIn)addInInst; if(connectMode == ext_ConnectMode.ext_cm_UISetup) { object []contextGUIDS = new object[] { }; Commands2 commands = (Commands2)_applicationObject.Commands; //Place the command on the project context menu Microsoft.VisualStudio.CommandBars.CommandBar projectContextMenu = ((Microsoft.VisualStudio.CommandBars.CommandBars)_applicationObject.CommandBars)["Project"]; CommandBarPopup baseLinePopup = (CommandBarPopup)projectContextMenu.Controls.Add(MsoControlType.msoControlPopup, System.Reflection.Missing.Value, System.Reflection.Missing.Value, 1, true ); baseLinePopup.Caption = "Baseline"; CommandBarControl generateTestsControl = baseLinePopup.Controls.Add(MsoControlType.msoControlButton, System.Reflection.Missing.Value, System.Reflection.Missing.Value, 1, true); // Set the caption of the submenuitem generateTestsControl.Caption = "Generate Unit Tests"; m_generateTestsHandler = (CommandBarEvents)_applicationObject.Events.get_CommandBarEvents(generateTestsControl); m_generateTestsHandler.Click += GenerateTestsClick; m_NCrunchMenu = ((CommandBars) _applicationObject.CommandBars)["NCrunch"]; //m_FinishedNCrunchSearch = new ManualResetEvent(false); //ThreadPool.QueueUserWorkItem((w) => //{ // m_NCrunchMenu = // ((Microsoft.VisualStudio.CommandBars.CommandBars) // _applicationObject.CommandBars)["NCrunch"]; // m_FinishedNCrunchSearch.Set(); //}); } }
private int AddSubMenu(out CommandBarControl menuItem, CommandBarPopup parent, out CommandBarEvents eventHandler, int position, string caption) { return(AddSubMenu(out menuItem, parent, out eventHandler, position, caption, string.Empty, string.Empty)); }
/// <summary>Implements the OnStartupComplete method of the IDTExtensibility2 interface. Receives notification that the host application has completed loading.</summary> /// <param term='custom'>Array of parameters that are host application specific.</param> /// <seealso class='IDTExtensibility2' /> public void OnStartupComplete(ref Array custom) { var contextGUIDS = new object[] { }; var commands = (Commands2)_applicationObject.Commands; var _commandBars = ((CommandBars)_applicationObject.CommandBars); // add a top-level menu to stick some global options in { Microsoft.VisualStudio.CommandBars.CommandBar menuBarCommandBar = ((CommandBars)_applicationObject.CommandBars)["MenuBar"]; int nenhancerPopupIndex = menuBarCommandBar.Controls.Count + 1; var clangMenuRoot = menuBarCommandBar.Controls.Add( MsoControlType.msoControlPopup, Type.Missing, Type.Missing, nenhancerPopupIndex, true) as CommandBarPopup; clangMenuRoot.Caption = "Clang"; // open the settings dialog { _dteHelper.AddNamedCommand2( COMMAND_CLANG_SETTINGS_DLG, "Settings...", "Settings...", false, 0); Command commandToAdd = _applicationObject.Commands.Item(GetCommandFullName(COMMAND_CLANG_SETTINGS_DLG), 0); SettingsButton = commandToAdd.AddControl(clangMenuRoot.CommandBar, clangMenuRoot.CommandBar.Controls.Count + 1) as CommandBarButton; } // get active vcproj, rebuild it with Clang { _dteHelper.AddNamedCommand2( COMMAND_CLANG_REBUILD_ACTIVE, "Rebuild Active Project", "Rebuild Active Project", false, 0); Command commandToAdd = _applicationObject.Commands.Item(GetCommandFullName(COMMAND_CLANG_REBUILD_ACTIVE), 0); RebuildActiveProjectButton = commandToAdd.AddControl(clangMenuRoot.CommandBar, clangMenuRoot.CommandBar.Controls.Count + 1) as CommandBarButton; } { _dteHelper.AddNamedCommand2( COMMAND_CLANG_RELINK_ACTIVE, "Relink", "Relink", false, 0); Command commandToAdd = _applicationObject.Commands.Item(GetCommandFullName(COMMAND_CLANG_RELINK_ACTIVE), 0); RelinkButton = commandToAdd.AddControl(clangMenuRoot.CommandBar, clangMenuRoot.CommandBar.Controls.Count + 1) as CommandBarButton; } { _dteHelper.AddNamedCommand2( COMMAND_CLANG_CANCEL_BUILD, "Cancel Build", "Cancel Build", false, 0); Command commandToAdd = _applicationObject.Commands.Item(GetCommandFullName(COMMAND_CLANG_CANCEL_BUILD), 0); CancelBuildButton = commandToAdd.AddControl(clangMenuRoot.CommandBar, clangMenuRoot.CommandBar.Controls.Count + 1) as CommandBarButton; } } // add a compile-this-file option to the editor window { Microsoft.VisualStudio.CommandBars.CommandBar codeWinCommandBar = _dteHelper.GetCommandBarByName("Code Window"); int pmPopupIndex = codeWinCommandBar.Controls.Count + 1; var pmPopup = codeWinCommandBar.Controls.Add( MsoControlType.msoControlPopup, Type.Missing, Type.Missing, pmPopupIndex, true) as CommandBarPopup; pmPopup.Caption = "Clang Compiler"; CommandBarButton saveAndCompileCmd = _dteHelper.AddButtonToPopup( pmPopup, pmPopup.Controls.Count + 1, "Compile", "Compile"); CompileCmdEvent = _applicationObject.Events.get_CommandBarEvents(saveAndCompileCmd) as CommandBarEvents; CompileCmdEvent.Click += cvxCompileFile_menuop; CommandBarButton saveAndAnalyseCmd = _dteHelper.AddButtonToPopup( pmPopup, pmPopup.Controls.Count + 1, "Run Static Analysis", "Run Static Analysis"); AnalyseCmdEvent = _applicationObject.Events.get_CommandBarEvents(saveAndAnalyseCmd) as CommandBarEvents; AnalyseCmdEvent.Click += cvxAnalyseFile_menuop; CommandBarButton saveAndDasmCmd = _dteHelper.AddButtonToPopup( pmPopup, pmPopup.Controls.Count + 1, "View Disassembly (LLVM)", "View Disassembly (LLVM)"); DasmCmdEvent = _applicationObject.Events.get_CommandBarEvents(saveAndDasmCmd) as CommandBarEvents; DasmCmdEvent.Click += cvxDasmnFile_menuop; CommandBarButton dasmAndPreproCmd = _dteHelper.AddButtonToPopup( pmPopup, pmPopup.Controls.Count + 1, "View Preprocessor Result", "View Preprocessor Result"); PreproCmdEvent = _applicationObject.Events.get_CommandBarEvents(dasmAndPreproCmd) as CommandBarEvents; PreproCmdEvent.Click += cvxPreProFile_menuop; } }
private int AddSubMenu(out CommandBarControl menuItem, CommandBarPopup parent, out CommandBarEvents eventHandler, int position, string caption, string imagePath, string maskedImagePath) { menuItem = parent.Controls.Add(MsoControlType.msoControlButton, Missing.Value, Missing.Value, position, true); menuItem.Caption = caption; eventHandler = (CommandBarEvents)_applicationObject.Events.get_CommandBarEvents(menuItem); return(position + 1); }
/// <summary>Implementiert die OnConnection-Methode der IDTExtensibility2-Schnittstelle. Empfängt eine Benachrichtigung, wenn das Add-In geladen wird.</summary> /// <param term='application'>Stammobjekt der Hostanwendung.</param> /// <param term='connectMode'>Beschreibt, wie das Add-In geladen wird.</param> /// <param term='addInInst'>Objekt, das dieses Add-In darstellt.</param> /// <seealso class='IDTExtensibility2' /> public void OnConnection(object application, ext_ConnectMode connectMode, object addInInst, ref Array custom) { _applicationObject = (DTE2) application; _addInInstance = (AddIn) addInInst; AssemblyDetectionProvider = new AssemblyDetectionProvider(new AssemblyDetectionService(), new AssemblyMemoryStoreService()); var oCommandBar = ((CommandBars)_applicationObject.CommandBars)["Code Window"]; var button = (CommandBarButton) oCommandBar.Controls.Add(MsoControlType.msoControlButton, Missing.Value, Missing.Value, 1, true); button.Caption = "Reference detection"; _oSubMenuItemHandler = (CommandBarEvents)_applicationObject.Events.get_CommandBarEvents(button); _oSubMenuItemHandler.Click += ProcessDetectButtonClick; }