void RootMenuItemClick(object sender, EventArgs e)
        {
            VsDevExpressMenuItem menuItem = (VsDevExpressMenuItem)sender;
            NavigateItem         item     = (NavigateItem)menuItem.Tag;

            package.ToolWindowViewModel.NavigateToSolution(item.Path);
        }
        void GenerateMenuItemContent(VsDevExpressMenuItem menu, NavigateItem item, string relativePath, Action <VsDevExpressMenuItem, NavigateItem> addClickHandler)
        {
            int startIndex = 0;

            relativePath = ReduceRelativePath(relativePath);
            while (startIndex > -1)
            {
                int index = GetDirectorySeparatorIndex(relativePath, startIndex + 1);
                if (index < 0)
                {
                    break;
                }
                string name = relativePath.Substring(startIndex, Math.Max(0, index - startIndex));
                name = name.Replace(Path.DirectorySeparatorChar.ToString(), string.Empty);
                name = name.Replace(Path.AltDirectorySeparatorChar.ToString(), string.Empty);
                if (string.IsNullOrEmpty(name))
                {
                    continue;
                }
                startIndex = index;

                if (string.IsNullOrEmpty(name))
                {
                    continue;
                }
                menu = menu.CreateOrGetItem(name, true);
            }
            var menuItem = menu.CreateOrGetItem(item.Name);

            addClickHandler(menuItem, item);
        }
        void AddProjectReferenceMenuItemClick(object sender, EventArgs e)
        {
            VsDevExpressMenuItem menuItem = (VsDevExpressMenuItem)sender;
            NavigateItem         item     = (NavigateItem)menuItem.Tag;
            AddReferenceHelper   helper   = new AddReferenceHelper();

            helper.AddProjectReferences(new DteWrapper(dte), item);
        }
        public void GenerateDefault()
        {
            devExpressMenu = new VSDevExpressMenu(dte);
            rootMenuHierarchy[string.Empty] = devExpressMenu;
            string wizardMenuText           = "Show tool window";
            VsDevExpressMenuItem wizardMenu = devExpressMenu.CreateOrGetItem(wizardMenuText);

            wizardMenu.Click += WizardMenuClick;
            var portWindowCommand = dte.Commands.Cast <Command>().FirstOrDefault(x => x.Name == "View.DXVcsToolsportwindow");

            wizardMenu.Shortcut = GetShortcutText(portWindowCommand);

            string blameMenuText           = "Show blame window";
            VsDevExpressMenuItem blameMenu = devExpressMenu.CreateOrGetItem(blameMenuText);

            blameMenu.Click += BlameMenuClick;
            var blameWindowCommand = dte.Commands.Cast <Command>().FirstOrDefault(x => x.Name == "View.DXVcsToolsblamewindow");

            blameMenu.Shortcut = GetShortcutText(blameWindowCommand);

            if (Options.UseNavigateMenu)
            {
                VsDevExpressMenuItem navigateMenu = devExpressMenu.CreateOrGetItem("Configure navigate menu...");
                navigateMenu.Click += NavigateMenuClick;
            }
            VsDevExpressMenuItem settingsMenu = devExpressMenu.CreateOrGetItem("Settings...");

            settingsMenu.Click += SettingsMenuOnClick;

            if (Options.ConfigVersion < VersionInfo.ToIntVersion())
            {
                VsDevExpressMenuItem resetConfigMenu = devExpressMenu.CreateOrGetItem(resetConfigHeader);
                resetConfigMenu.Click += ResetConfigMenuOnClick;
            }

            if (Options.EnableAutoUpdate)
            {
                VsDevExpressMenuItem updateMenu = devExpressMenu.CreateOrGetItem(updateHeader);
                updateMenu.Click      += UpdateMenuOnClick;
                updateMenu.Enabled     = false;
                updateMenu.IsSeparator = true;
                updateMenu.Icon        = Image.FromStream(Assembly.GetExecutingAssembly().GetManifestResourceStream("DXVcsTools.Resources.Update.png"));
                UpdateOptions          = null;
                BackgroundHelper.DoInBackground(
                    () => UpdateOptions      = AutoUpdateHelper.GetUpdateOptions(Options.AutoUpdaterPath),
                    () => updateMenu.Enabled = UpdateOptions.Return(x => x.Version > VersionInfo.ToIntVersion(), () => false));
            }
        }