Example #1
0
        public static T get_CommandBarControl <T>(this DTE2 dte2, string menuName)
            where T : CommandBarControl
        {
            var menuBarCommandBar = dte2.get_CommandBar("MenuBar");
            var menu = menuBarCommandBar.Controls[menuName];

            if (menu is T)
            {
                return((T)menu);
            }
            return(default(T));
        }
        public static T get_CommandBarMenu <T>(this DTE2 dte2, string menuName) where T : CommandBarControl
        {
            var menuBarCommandBar = dte2.get_CommandBar("MenuBar");

            //if (menuBarCommandBar.Controls.ContainsKey(menuName))
            try
            {
                var menu = menuBarCommandBar.Controls[menuName];
                if (menu is T)
                {
                    return((T)menu);
                }
            }
            catch { }
            return(default(T));
        }
        public static CommandBarPopup add_TopMenu(this DTE2 dte, string text = "New Top Menu", string addAfterMenu = "Help")
        {
            var o2Timer = new O2Timer("Adding TopMenu").start();

            if (dte.isNull())
            {
                "[VS_Menus_ExtensionMethods][add_TopMenu] DTE object is null, so can't create Top Menu".error();
                return(null);
            }
            var existingMenu = dte.get_Menu(text);

            if (existingMenu.notNull())
            {
                "[VS_Menus_ExtensionMethods] add_TopMenu: there was already a menu called '{0}' so returning it".debug(text);
                return(existingMenu);
            }
            "[VS_Menus_ExtensionMethods] Creating new Top Menu called: {0}".info(text);
            //dynamic commandBars = dte.CommandBars;
            //var menuCommandBar = commandBars["MenuBar"];
            //get_CommandBarMenu
            //var position = (commandBars[addAfterMenu].Parent as CommandBarControl).Index;

            //The two lines above (using dynamic) has much worse performace then the ones below (from 1.8 sec to .1 sec)
            var menuCommandBar = dte.get_CommandBar("MenuBar");
            var position       = dte.get_CommandBarMenu(addAfterMenu).Index;


            var newMenu = (CommandBarPopup)menuCommandBar.Controls.Add(MsoControlType.msoControlPopup,
                                                                       System.Type.Missing,
                                                                       System.Type.Missing,
                                                                       ++position,
                                                                       true);

            newMenu.Caption = text;
            newMenu.Enabled = true;
            o2Timer.stop();
            return(newMenu);
        }