Esempio n. 1
0
        /// <summary>
        /// Event handler to reenable the 'Expand Current Type Declaration' menu on selection change
        /// </summary>
        private void OnActiveItemChanged(object sender, EventArgs e)
        {
            PLiXConfiguration plixConfig = (PLiXConfiguration)myConfiguration;

            plixConfig.FullyExpandCurrentTypeDeclaration      = false;
            plixConfig.FullyExpandCurrentNamespaceDeclaration = false;
            // Reflector does not have an ActiveItemChanging event, so this event handler
            // fires after some other windows are already updated, causing the 'expand current type'
            // setting to be stickier than it should be. To handle this, we track the active item
            // as well so that this setting can be ignored if the last active item is not the current
            // active item.
            myLastActiveItem = myAssemblyBrowser.ActiveItem;
        }
Esempio n. 2
0
        /// <summary>
        /// Event handler for toggling the full type expansion option
        /// </summary>
        private void OnFullyExpandTypeDeclarationsChanged(object sender, EventArgs e)
        {
            PLiXConfiguration config = (PLiXConfiguration)myConfiguration;

            // If the current is explicitly expanded, then FullyExpandTypeDeclarations will return
            // true, even if the cached flag is off.
            if (config.FullyExpandCurrentTypeDeclaration)
            {
                config.FullyExpandTypeDeclarations = true;
            }
            else
            {
                config.FullyExpandTypeDeclarations = !config.FullyExpandTypeDeclarations;
            }
        }
Esempio n. 3
0
        /// <summary>
        /// Event handler for turning on implicit static calls for the context type and all base types
        /// </summary>
        private void OnImplicitBaseTypesStaticCallCheckBoxChanged(object sender, EventArgs e)
        {
            PLiXConfiguration config = (PLiXConfiguration)myConfiguration;

            config.StaticCallRenderingOption = StaticCallRenderingOption.ImplicitBaseTypes;
        }
Esempio n. 4
0
        /// <summary>
        /// Event handler for turning on explicit call static calls
        /// </summary>
        private void OnExplicitStaticCallCheckBoxChanged(object sender, EventArgs e)
        {
            PLiXConfiguration config = (PLiXConfiguration)myConfiguration;

            config.StaticCallRenderingOption = StaticCallRenderingOption.Explicit;
        }
Esempio n. 5
0
        /// <summary>
        /// Event handler for toggling the display current namespace option
        /// </summary>
        private void OnDisplayContextDataTypeQualifierChanged(object sender, EventArgs e)
        {
            PLiXConfiguration config = (PLiXConfiguration)myConfiguration;

            config.DisplayContextDataTypeQualifier = !config.DisplayContextDataTypeQualifier;
        }
Esempio n. 6
0
        /// <summary>
        /// Synchronize the example language sub menu with the current set of languages.
        /// Unfortunately, there is no add/remove event when languages are added and removed,
        /// and the DropDown event does not fire on submenus, so we need to synchronize here.
        /// </summary>
        private void OnOpenTopMenu(object sender, EventArgs e)
        {
            ICommandBarItemCollection exampleItems = myExampleLanguageMenu.Items;
            ILanguageCollection       languages    = myLanguageManager.Languages;
            ILanguage         selectedLanguage     = myConfiguration.ExampleLanguage;
            PLiXConfiguration plixConfig           = (PLiXConfiguration)myConfiguration;
            object            activeItem           = myAssemblyBrowser.ActiveItem;
            bool activeItemIsTypeDeclaration       = activeItem is ITypeDeclaration;
            bool activeItemIsNamespaceDeclaration  = !activeItemIsTypeDeclaration && activeItem is INamespace;
            bool alreadyExpandedCurrentType        = plixConfig.FullyExpandCurrentTypeDeclaration;
            bool alwaysExpandTypes = alreadyExpandedCurrentType ? false : myConfiguration.FullyExpandTypeDeclarations;

            if (activeItemIsNamespaceDeclaration)
            {
                myExpandCurrentNamespaceDeclarationButton.Visible = true;
                myExpandCurrentNamespaceDeclarationButton.Enabled = !plixConfig.FullyExpandCurrentNamespaceDeclaration;
            }
            else
            {
                myExpandCurrentNamespaceDeclarationButton.Visible = false;
            }
            if (activeItemIsTypeDeclaration)
            {
                myExpandCurrentTypeDeclarationButton.Visible = !alwaysExpandTypes;
                myExpandCurrentTypeDeclarationButton.Enabled = !alreadyExpandedCurrentType;
            }
            else
            {
                myExpandCurrentTypeDeclarationButton.Visible = false;
            }
            myFullyExpandTypeDeclarationsCheckBox.Checked     = alwaysExpandTypes;
            myDisplayContextDataTypeQualifierCheckBox.Checked = plixConfig.DisplayContextDataTypeQualifier;
            StaticCallRenderingOption staticRender = plixConfig.StaticCallRenderingOption;

            myExplicitStaticCallCheckBox.Checked            = staticRender == StaticCallRenderingOption.Explicit;
            myImplicitCurrentTypeStaticCallCheckBox.Checked = staticRender == StaticCallRenderingOption.ImplicitCurrentType;
            myImplicitBaseTypesStaticCallCheckBox.Checked   = staticRender == StaticCallRenderingOption.ImplicitBaseTypes;
            int itemsCount = exampleItems.Count;
            ICommandBarCheckBox currentItem;

            if (itemsCount == 0)
            {
                currentItem         = exampleItems.AddCheckBox("None");
                currentItem.Checked = selectedLanguage == null;
                currentItem.Click  += new EventHandler(OnExampleLanguageClick);
                ++itemsCount;
            }
            else
            {
                currentItem = (ICommandBarCheckBox)exampleItems[0];
                if (currentItem.Checked ^ (selectedLanguage == null))
                {
                    currentItem.Checked = selectedLanguage == null;
                }
            }

            int languagesCount   = languages.Count;
            int currentItemIndex = 1;             // None is at the zero position

            for (int iLanguage = 0; iLanguage < languagesCount; ++iLanguage)
            {
                ILanguage currentLanguage = languages[iLanguage];
                bool      isChecked       = currentLanguage == selectedLanguage;
                string    languageName    = currentLanguage.Name;
                if (currentLanguage != myLanguage && !languageName.StartsWith("IL"))
                {
                    if (currentItemIndex >= itemsCount)
                    {
                        currentItem       = exampleItems.AddCheckBox(languageName);
                        currentItem.Value = currentLanguage;
                        if (isChecked)
                        {
                            currentItem.Checked = true;
                        }
                        currentItem.Click += new EventHandler(OnExampleLanguageClick);
                        // No need to adjust currentItemIndex here, we'll continue to add to the end of the list
                    }
                    else
                    {
                        currentItem = (ICommandBarCheckBox)exampleItems[currentItemIndex];
                        ILanguage testLanguage = (ILanguage)currentItem.Value;
                        if (testLanguage == currentLanguage)
                        {
                            ++currentItemIndex;
                            if (currentItem.Checked ^ isChecked)
                            {
                                currentItem.Checked = isChecked;
                            }
                            continue;
                        }
                        else
                        {
                            // If the testLanguage appears later in the language list, then we need
                            // to insert the new language here. Otherwise, we need to remove the
                            // existing item.
                            int matchingLanguage = iLanguage + 1;
                            for (; matchingLanguage < languagesCount; ++matchingLanguage)
                            {
                                if (testLanguage == languages[matchingLanguage])
                                {
                                    break;
                                }
                            }
                            if (matchingLanguage < languagesCount)
                            {
                                // The language at this item will match later. Insert the currentLanguage at this position
                                currentItem       = exampleItems.InsertCheckBox(currentItemIndex, languageName);
                                currentItem.Value = currentLanguage;
                                if (isChecked)
                                {
                                    currentItem.Checked = true;
                                }
                                currentItem.Click += new EventHandler(OnExampleLanguageClick);
                                ++itemsCount;
                                ++currentItemIndex;
                            }
                            else
                            {
                                // The item needs to be removed
                                exampleItems.Remove(currentItem);
                                --itemsCount;
                            }
                        }
                    }
                }
            }
            // Remove any remaining items that we didn't match with a language
            if (currentItemIndex < itemsCount)
            {
                for (int i = itemsCount - 1; i >= currentItemIndex; --i)
                {
                    exampleItems.RemoveAt(i);
                }
            }
        }