コード例 #1
0
 private void DumpMenus(ICommandBarManager commandBarManager)
 {
     foreach (ICommandBar cb in commandBarManager.CommandBars)
     {
         DumpCommandBar(cb, 0);
     }
 }
コード例 #2
0
        void IPackage.Load(IServiceProvider serviceProvider)
        {
            this.serviceProvider   = serviceProvider;
            this.windowManager     = (IWindowManager)this.serviceProvider.GetService(typeof(IWindowManager));
            this.commandbarManager = (ICommandBarManager)this.serviceProvider.GetService(typeof(ICommandBarManager));

            // manage the search window
            this.windowManager.Windows.Add("SearchCodeWindow", this, "Code Search " + this.GetType().Assembly.GetName().Version.ToString());

            // load the resources
            System.Reflection.Assembly myAssembly = System.Reflection.Assembly.GetExecutingAssembly();
            Stream myStream = myAssembly.GetManifestResourceStream("Reflector.CodeSearch.Search.png");
            Bitmap img      = null;

            if (myStream != null)
            {
                img = new Bitmap(myStream);
            }

            // add the toolbar button
            evtSearch = new EventHandler(this.CodeSearchButton_Click);

            this.toolBarSeparator = commandbarManager.CommandBars["ToolBar"].Items.AddSeparator();
            this.toolBarButton    = commandbarManager.CommandBars["ToolBar"].Items.AddButton("Code Search", img, evtSearch);

            this.menuBarSeparator = commandbarManager.CommandBars["Tools"].Items.AddSeparator();
            this.menuBarButton    = commandbarManager.CommandBars["Tools"].Items.AddButton("Code Search", img, evtSearch);

            // init members
            this.assemblyBrowser         = (IAssemblyBrowser)serviceProvider.GetService(typeof(IAssemblyBrowser));
            this.languageManager         = (ILanguageManager)serviceProvider.GetService(typeof(ILanguageManager));
            this.translatorManager       = (ITranslatorManager)serviceProvider.GetService(typeof(ITranslatorManager));
            this.visibilityConfiguration = (IVisibilityConfiguration)serviceProvider.GetService(typeof(IVisibilityConfiguration));
        }
コード例 #3
0
 public void Load(IServiceProvider serviceProvider)
 {
     this.commandBarManager     = (ICommandBarManager)serviceProvider.GetService(typeof(ICommandBarManager));
     this.assemblyManager       = (IAssemblyManager)serviceProvider.GetService(typeof(IAssemblyManager));
     this.assemblyBrowser       = (IAssemblyBrowser)serviceProvider.GetService(typeof(IAssemblyBrowser));
     this.openTypeLibraryButton = this.commandBarManager.CommandBars["File"].Items.InsertButton(2, "Open &Type Library...", new EventHandler(this.OpenTypeLibraryButton_Click), Keys.T | Keys.Control);
 }
コード例 #4
0
        void IPackage.Load(IServiceProvider serviceProvider)
        {
            // Set this early so it is easily referenced
            myServiceProvider = serviceProvider;

            IAssemblyBrowser assemblyBrowser = (IAssemblyBrowser)serviceProvider.GetService(typeof(IAssemblyBrowser));

            assemblyBrowser.ActiveItemChanged += new EventHandler(OnActiveItemChanged);
            myLastActiveItem  = assemblyBrowser.ActiveItem;
            myAssemblyBrowser = assemblyBrowser;
            ILanguageManager languageManager = (ILanguageManager)serviceProvider.GetService(typeof(ILanguageManager));

            myLanguageManager = languageManager;
            myConfiguration   = new PLiXConfiguration(this);
            languageManager.ActiveLanguageChanged += new EventHandler(OnActiveLanguageChanged);
            ILanguage language = new PLiXLanguage((ITranslatorManager)serviceProvider.GetService(typeof(ITranslatorManager)), myConfiguration);

            languageManager.RegisterLanguage(language);
            myLanguage = language;

            // Add our PLiX menu item, activated when the plix language is active
            ICommandBarManager commandBarManager = (ICommandBarManager)serviceProvider.GetService(typeof(ICommandBarManager));
            ICommandBar        menuBar           = commandBarManager.CommandBars["MenuBar"];
            ICommandBarMenu    topMenu           = menuBar.Items.InsertMenu(menuBar.Items.Count - 1, "PLiXLanguageOptions", "PLi&X");

            topMenu.Visible   = false;
            topMenu.DropDown += new EventHandler(OnOpenTopMenu);

            ICommandBarItemCollection menuItems = topMenu.Items;

            myExampleLanguageMenu = menuItems.AddMenu("PLiXExampleLanguage", "&Example Language");
            menuItems.AddSeparator();
            myExpandCurrentNamespaceDeclarationButton = menuItems.AddButton("E&xpand Current Namespace Declaration", new EventHandler(OnExpandCurrentNamespaceDeclaration));
            myExpandCurrentTypeDeclarationButton      = menuItems.AddButton("E&xpand Current Type Declaration", new EventHandler(OnExpandCurrentTypeDeclaration));
            (myFullyExpandTypeDeclarationsCheckBox = menuItems.AddCheckBox("Ex&pand All Type Declarations")).Click += new EventHandler(OnFullyExpandTypeDeclarationsChanged);
            menuItems.AddSeparator();
            (myDisplayContextDataTypeQualifierCheckBox = menuItems.AddCheckBox("Display Context Type &Qualifier")).Click += new EventHandler(OnDisplayContextDataTypeQualifierChanged);
            ICommandBarMenu callStaticOptionsMenu = menuItems.AddMenu("PLiXStaticCallOptions", "&Static Call Options");

            menuItems = callStaticOptionsMenu.Items;
            (myExplicitStaticCallCheckBox = menuItems.AddCheckBox("&Explicit")).Click += new EventHandler(OnExplicitStaticCallCheckBoxChanged);
            (myImplicitCurrentTypeStaticCallCheckBox = menuItems.AddCheckBox("Implicit (&Current Type)")).Click += new EventHandler(OnImplicitCurrentTypeStaticCallCheckBoxChanged);
            (myImplicitBaseTypesStaticCallCheckBox = menuItems.AddCheckBox("Implicit (&Base Types)")).Click     += new EventHandler(OnImplicitBaseTypesStaticCallCheckBoxChanged);
            myTopMenu = topMenu;

            ICommandBarControl appRefresh1 = GetCommandbarControl(commandBarManager, "ToolBar", "Application.Refresh");

            if (appRefresh1 != null)
            {
                appRefresh1.Click += new EventHandler(OnApplicationRefresh);
            }
            ICommandBarControl appRefresh2 = GetCommandbarControl(commandBarManager, "View", "Application.Refresh");

            if (appRefresh2 != null && appRefresh2 != appRefresh1)
            {
                appRefresh2.Click += new EventHandler(OnApplicationRefresh);
            }
            //DumpMenus(commandBarManager);
        }
コード例 #5
0
        /// <summary>
        /// Registers our commands with Reflector.
        /// </summary>
        private void RegisterCommands()
        {
            ICommandBarManager commandBarMgr = ServiceProvider.GetService(typeof(ICommandBarManager)) as ICommandBarManager;

            if (commandBarMgr != null)
            {
                ICommandBar defaultBrowserContextMenu = commandBarMgr.CommandBars["Browser.Assembly"];
                MainCommand = defaultBrowserContextMenu.Items.AddButton(Resources.ShowBizTalkArtifacts, new EventHandler(ShowBizTalkArtifacts_ButtonClick));
            }
        }
コード例 #6
0
        public void Load(IServiceProvider serviceProvider)
        {
            windowManager = (IWindowManager) serviceProvider.GetService(typeof (IWindowManager));
            commandBarManager = (ICommandBarManager) serviceProvider.GetService(typeof (ICommandBarManager));

            UserControl wiringDiagram = new WiringDiagramControl(serviceProvider);

            windowManager.Windows.Add("Graph.WiringDiagram", wiringDiagram, "NDI Wiring Diagram");
            AddCommand("Browser.TypeDeclaration", "NDI Wiring Diagram", WiringDiagram_Click);
        }
コード例 #7
0
 public void Load(IServiceProvider serviceProvider)
 {
     this.windowManager = (IWindowManager)serviceProvider.GetService(typeof(IWindowManager));
     //this.windowManager.ShowMessage("Loading Perst!");
     this.assemblyManager   = (IAssemblyManager)serviceProvider.GetService(typeof(IAssemblyManager));
     this.commandBarManager = (ICommandBarManager)serviceProvider.GetService(typeof(ICommandBarManager));
     this.translatorManager = (ITranslatorManager)serviceProvider.GetService(typeof(ITranslatorManager));
     this.translator        = this.translatorManager.CreateDisassembler(null, null);
     this.separator         = this.commandBarManager.CommandBars["Tools"].Items.AddSeparator();
     this.button            = this.commandBarManager.CommandBars["Tools"].Items.AddButton("&Detect Modify Bug", new EventHandler(this.PerstListButton_Click));
 }
コード例 #8
0
        /// <summary>
        /// Loads the specified service provider.
        /// </summary>
        /// <param name="serviceProvider">The service provider.</param>
        public void Load(IServiceProvider serviceProvider)
        {
            // Get AssemblyManager reference for reordering
            this.assemblyManager = (IAssemblyManager)serviceProvider.GetService(typeof(IAssemblyManager));

            // Create a command button, separator on the Tools menu and wire up the button click event
            this.commandBarManager = (ICommandBarManager)serviceProvider.GetService(typeof(ICommandBarManager));
            this.separator         = this.commandBarManager.CommandBars["Tools"].Items.AddSeparator();
            this.button            = this.commandBarManager.CommandBars["Tools"].Items.AddButton("Reorder Assemblies",
                                                                                                 new EventHandler(this.OrderAssemblyListButton_Click), Keys.Control | Keys.Shift | Keys.R);
        }
コード例 #9
0
 public void Load(IServiceProvider serviceProvider)
 {
     this.windowManager = (IWindowManager)serviceProvider.GetService(typeof(IWindowManager));
     //this.windowManager.ShowMessage("Loading Perst!");
     this.assemblyManager = (IAssemblyManager)serviceProvider.GetService(typeof(IAssemblyManager));
     this.commandBarManager = (ICommandBarManager)serviceProvider.GetService(typeof(ICommandBarManager));
     this.translatorManager = (ITranslatorManager)serviceProvider.GetService(typeof(ITranslatorManager));
     this.translator = this.translatorManager.CreateDisassembler(null, null);
     this.separator = this.commandBarManager.CommandBars["Tools"].Items.AddSeparator();
     this.button = this.commandBarManager.CommandBars["Tools"].Items.AddButton("&Detect Modify Bug", new EventHandler(this.PerstListButton_Click));
 }
コード例 #10
0
        // IPackage.Load
        public void Load(IServiceProvider serviceProvider)
        {
            this.AssemblyBrowser = (IAssemblyBrowser)serviceProvider.GetService(typeof(IAssemblyBrowser));

            this.windowManager = (IWindowManager)serviceProvider.GetService(typeof(IWindowManager));
            this.windowManager.Windows.Add("CodeModelWindow", this, "Code Model Viewer");

            this.commandBarManager       = (ICommandBarManager)serviceProvider.GetService(typeof(ICommandBarManager));
            this.separator               = this.commandBarManager.CommandBars["Tools"].Items.AddSeparator();
            this.showCodeModelViewButton = this.commandBarManager.CommandBars["Tools"].Items.AddButton("Show Code Model View", new EventHandler(this.ShowCodeModelViewButton_Click));
        }
コード例 #11
0
        public void Load(IServiceProvider serviceProvider)
        {
            this.windowManager     = (IWindowManager)serviceProvider.GetService(typeof(IWindowManager));
            this.commandBarManager = (ICommandBarManager)serviceProvider.GetService(typeof(ICommandBarManager));

            BamlViewerWindow window = new BamlViewerWindow(serviceProvider);

            this.windowManager.Windows.Add("BamlViewerWindow", window, "BAML Viewer");

            this.separator = commandBarManager.CommandBars["Tools"].Items.AddSeparator();
            this.button    = commandBarManager.CommandBars["Tools"].Items.AddButton("&BAML Viewer", new EventHandler(this.Button_Click));
        }
コード例 #12
0
        public void Load(IServiceProvider serviceProvider)
        {
            this._windowManager = (IWindowManager)serviceProvider.GetService(typeof(IWindowManager));
            _assemblyBrowser = (IAssemblyBrowser)serviceProvider.GetService(typeof(IAssemblyBrowser));
            _assemblyManager = (IAssemblyManager)serviceProvider.GetService(typeof(IAssemblyManager));

            this._commandBarManager = (ICommandBarManager)serviceProvider.GetService(typeof(ICommandBarManager));
            _commandBarManager.CommandBars["Browser.Assembly"].Items.AddButton("Browse Assembly", BrowseAssemblyHandler);
            _commandBarManager.CommandBars["Browser.Assembly"].Items.AddButton("Browse Dependencies", BrowseDependenciesHandler);
            _commandBarManager.CommandBars["Browser.TypeDeclaration"].Items.AddButton("Browse Ancestry", BrowseAncestryHandler);
            _commandBarManager.CommandBars["Browser.TypeDeclaration"].Items.AddButton("Browse Interactions", BrowseInteractionsHandler);
            _commandBarManager.CommandBars["Browser.TypeDeclaration"].Items.AddButton("Visualize Descendants", VisualizeDescendantsHandler);
        }
コード例 #13
0
        public void Load(IServiceProvider serviceProvider)
        {
            this._windowManager = (IWindowManager)serviceProvider.GetService(typeof(IWindowManager));
            _assemblyBrowser    = (IAssemblyBrowser)serviceProvider.GetService(typeof(IAssemblyBrowser));
            _assemblyManager    = (IAssemblyManager)serviceProvider.GetService(typeof(IAssemblyManager));

            this._commandBarManager = (ICommandBarManager)serviceProvider.GetService(typeof(ICommandBarManager));
            _commandBarManager.CommandBars["Browser.Assembly"].Items.AddButton("Browse Assembly", BrowseAssemblyHandler);
            _commandBarManager.CommandBars["Browser.Assembly"].Items.AddButton("Browse Dependencies", BrowseDependenciesHandler);
            _commandBarManager.CommandBars["Browser.TypeDeclaration"].Items.AddButton("Browse Ancestry", BrowseAncestryHandler);
            _commandBarManager.CommandBars["Browser.TypeDeclaration"].Items.AddButton("Browse Interactions", BrowseInteractionsHandler);
            _commandBarManager.CommandBars["Browser.TypeDeclaration"].Items.AddButton("Visualize Descendants", VisualizeDescendantsHandler);
        }
コード例 #14
0
    /// <summary>
    /// Loads the specified service provider.
    /// </summary>
    /// <param name="serviceProvider">The service provider.</param>
    public void Load(IServiceProvider serviceProvider)
    {
      this.windowManager = serviceProvider.GetService(typeof(IWindowManager)) as IWindowManager;
      this.commandBarManager = serviceProvider.GetService(typeof(ICommandBarManager)) as ICommandBarManager;

      UserControl graphControl = new DiagramViewerContainer(serviceProvider);

      this.windowManager.Windows.Add("OpenSequence", graphControl, "Sequence Diagram");

      this.AddCommand("Browser.MethodDeclaration", "Sequence Diagram", new EventHandler(this.OnOpenSequenceClick));

      Logger.Current.Info("Package loaded.");
    }
コード例 #15
0
        public void Load(IServiceProvider serviceProvider)
        {
            FileDisassemblerWindow fileDisassemblerWindow = new FileDisassemblerWindow();
            fileDisassemblerWindow.AssemblyBrowser = (IAssemblyBrowser) serviceProvider.GetService(typeof(IAssemblyBrowser));
            fileDisassemblerWindow.AssemblyManager = (IAssemblyManager) serviceProvider.GetService(typeof(IAssemblyManager));
            fileDisassemblerWindow.LanguageManager = (ILanguageManager) serviceProvider.GetService(typeof(ILanguageManager));
            fileDisassemblerWindow.TranslatorManager = (ITranslatorManager) serviceProvider.GetService(typeof(ITranslatorManager));

            this.windowManager = (IWindowManager) serviceProvider.GetService(typeof(IWindowManager));
            this.windowManager.Windows.Add("FileDisassemblerWindow", fileDisassemblerWindow, "File Disassembler");

            this.commandBarManager = (ICommandBarManager) serviceProvider.GetService(typeof(ICommandBarManager));
            this.separator = this.commandBarManager.CommandBars["Tools"].Items.AddSeparator();
            this.button = this.commandBarManager.CommandBars["Tools"].Items.AddButton("&File Disassembler", new EventHandler(this.FileDisassemblerButton_Click));
        }
コード例 #16
0
        /// <summary>
        /// Un registers our commands with reflector.
        /// </summary>
        private void UnRegisterCommands()
        {
            ICommandBarManager commandBarMgr = ServiceProvider.GetService(typeof(ICommandBarManager)) as ICommandBarManager;

            if (commandBarMgr != null)
            {
                ICommandBar defaultBrowserContextMenu = commandBarMgr.CommandBars["Browser.Assembly"];
                if (defaultBrowserContextMenu.Items.Contains(MainCommand))
                {
                    defaultBrowserContextMenu.Items.Remove(MainCommand);
                }

                MainCommand = null;
            }
        }
コード例 #17
0
        public void Load(IServiceProvider serviceProvider)
        {
            CodeMetricWindow codeMetricWindow = new CodeMetricWindow(serviceProvider);

            this.windowManager       = (IWindowManager)serviceProvider.GetService(typeof(IWindowManager));
            this.windowManager.Load += new EventHandler(this.WindowManager_Load);
            this.windowManager.Windows.Add("CodeMetricWindow", codeMetricWindow, "Code Metrics");

            this.assemblyManager = (IAssemblyManager)serviceProvider.GetService(typeof(IAssemblyManager));
            this.assemblyCache   = (IAssemblyCache)serviceProvider.GetService(typeof(IAssemblyCache));

            this.commandBarManager = (ICommandBarManager)serviceProvider.GetService(typeof(ICommandBarManager));
            this.separator         = this.commandBarManager.CommandBars["Tools"].Items.AddSeparator();
            this.button            = this.commandBarManager.CommandBars["Tools"].Items.AddButton("&Code Metrics", new EventHandler(this.Button_Click), Keys.Control | Keys.E);
        }
コード例 #18
0
        /// <summary>
        /// .NET Reflector が plug-in をロードした際に呼び出します。
        /// </summary>
        /// <param name="serviceProvider"></param>
        public void Load(IServiceProvider serviceProvider)
        {
            _commandBarManager = serviceProvider.GetTypedService<ICommandBarManager>();
            _assemblyBrowser = serviceProvider.GetTypedService<IAssemblyBrowser>();

            _assemblyBrowser.ActiveItemChanged += AssemblyBrowserActiveItemChanged;

            _separator1 = _commandBarManager.CommandBars["Browser.TypeDeclaration"].Items.AddSeparator();
            _button1 = _commandBarManager.CommandBars["Browser.TypeDeclaration"].Items.AddButton(@"Copy Full Assembly Name", CopyFullAssemblyNameButtonClick);

            _separator2 = _commandBarManager.CommandBars["Browser.MethodDeclaration"].Items.AddSeparator();
            _button2 = _commandBarManager.CommandBars["Browser.MethodDeclaration"].Items.AddButton(@"Copy Full Assembly Name", CopyFullAssemblyNameButtonClick);

            _separator3 = _commandBarManager.CommandBars["Edit"].Items.AddSeparator();
            _button3 = _commandBarManager.CommandBars["Edit"].Items.AddButton(@"Copy Full Assembly Name", CopyFullAssemblyNameButtonClick, Keys.Alt|Keys.Control|Keys.O);
        }
コード例 #19
0
        public void Load(IServiceProvider serviceProvider)
        {
            FileDisassemblerWindow fileDisassemblerWindow = new FileDisassemblerWindow();

            fileDisassemblerWindow.AssemblyBrowser   = (IAssemblyBrowser)serviceProvider.GetService(typeof(IAssemblyBrowser));
            fileDisassemblerWindow.AssemblyManager   = (IAssemblyManager)serviceProvider.GetService(typeof(IAssemblyManager));
            fileDisassemblerWindow.LanguageManager   = (ILanguageManager)serviceProvider.GetService(typeof(ILanguageManager));
            fileDisassemblerWindow.TranslatorManager = (ITranslatorManager)serviceProvider.GetService(typeof(ITranslatorManager));

            this.windowManager = (IWindowManager)serviceProvider.GetService(typeof(IWindowManager));
            this.windowManager.Windows.Add("FileDisassemblerWindow", fileDisassemblerWindow, "File Disassembler");

            this.commandBarManager = (ICommandBarManager)serviceProvider.GetService(typeof(ICommandBarManager));
            this.separator         = this.commandBarManager.CommandBars["Tools"].Items.AddSeparator();
            this.button            = this.commandBarManager.CommandBars["Tools"].Items.AddButton("&File Disassembler", new EventHandler(this.FileDisassemblerButton_Click));
        }
コード例 #20
0
        public void Load(IServiceProvider serviceProvider)
        {
            IAssemblyBrowser         assemblyBrowser         = (IAssemblyBrowser)serviceProvider.GetService(typeof(IAssemblyBrowser));
            ILanguageManager         languageManager         = (ILanguageManager)serviceProvider.GetService(typeof(ILanguageManager));
            ITranslatorManager       translatorManager       = (ITranslatorManager)serviceProvider.GetService(typeof(ITranslatorManager));
            IVisibilityConfiguration visibilityConfiguration = (IVisibilityConfiguration)serviceProvider.GetService(typeof(IVisibilityConfiguration));

            this.window = new ClassViewWindow(assemblyBrowser, languageManager, translatorManager, visibilityConfiguration);

            this.windowManager = (IWindowManager)serviceProvider.GetService(typeof(IWindowManager));
            this.windowManager.Windows.Add("ClassViewWindow", this.window, "Class View");

            this.commandBarManager = (ICommandBarManager)serviceProvider.GetService(typeof(ICommandBarManager));

            this.separator = commandBarManager.CommandBars["Tools"].Items.AddSeparator();
            this.button    = commandBarManager.CommandBars["Tools"].Items.AddButton("Class &View", new EventHandler(this.Button_Click));
        }
コード例 #21
0
        private static ICommandBarControl GetCommandbarControl(ICommandBarManager manager, string barIdentifier, string controlValue)
        {
            ICommandBar toolbar;

            if (null != (toolbar = manager.CommandBars[barIdentifier]))
            {
                foreach (ICommandBarItem item in toolbar.Items)
                {
                    ICommandBarControl testControl = item as ICommandBarControl;
                    string             testControlValue;
                    if (testControl != null &&
                        null != (testControlValue = testControl.Value as string) &&
                        testControlValue == controlValue)
                    {
                        return(testControl);
                    }
                }
            }
            return(null);
        }
コード例 #22
0
        void IPackage.Unload()
        {
            myLanguageManager.ActiveLanguageChanged -= new EventHandler(OnActiveLanguageChanged);
            myAssemblyBrowser.ActiveItemChanged     -= new EventHandler(OnActiveItemChanged);
            myTopMenu.DropDown -= new EventHandler(OnOpenTopMenu);
            myLanguageManager.UnregisterLanguage(myLanguage);

            ICommandBarManager commandBarManager = (ICommandBarManager)myServiceProvider.GetService(typeof(ICommandBarManager));

            commandBarManager.CommandBars["MenuBar"].Items.Remove(myTopMenu);
            ICommandBarControl appRefresh1 = GetCommandbarControl(commandBarManager, "ToolBar", "Application.Refresh");

            if (appRefresh1 != null)
            {
                appRefresh1.Click -= new EventHandler(OnApplicationRefresh);
            }
            ICommandBarControl appRefresh2 = GetCommandbarControl(commandBarManager, "View", "Application.Refresh");

            if (appRefresh2 != null && appRefresh2 != appRefresh1)
            {
                appRefresh2.Click -= new EventHandler(OnApplicationRefresh);
            }
        }
コード例 #23
0
        /// <summary>
        /// Addin load method
        /// </summary>
        /// <param name="serviceProvider">Reflector service provider</param>
        public void Load(System.IServiceProvider serviceProvider)
        {
            PluginFactory.Register(new ReflectorPlugin(this));

            sp  = serviceProvider;
            wm  = GetService <IWindowManager>();
            ab  = GetService <IAssemblyBrowser>();
            cbm = GetService <ICommandBarManager>();
            am  = GetService <IAssemblyManager>();

            CheckFrameWorkVersion();

            // Main Window
            items          = new List <UIContext>();
            reflexilwindow = new Reflexil.Forms.ReflexilWindow();
            wm.Windows.Add(REFLEXIL_WINDOW_ID, reflexilwindow, REFLEXIL_WINDOW_TEXT);

            // Main button
            items.Add(new ButtonUIContext(cbm.CommandBars[REFLECTOR_TOOLS_ID]));
            items.Add(new ButtonUIContext(cbm.CommandBars[REFLECTOR_TOOLS_ID], REFLEXIL_BUTTON_TEXT, Button_Click, BasePlugin.ReflexilImage));

            using (ImageList browserimages = new ImageList())
            {
                browserimages.Images.AddStrip(PluginFactory.GetInstance().GetAllBrowserImages());
                browserimages.TransparentColor = Color.Green;

                using (ImageList barimages = new ImageList())
                {
                    barimages.Images.AddStrip(PluginFactory.GetInstance().GetAllBarImages());

                    // Menus
                    var typemenu        = AddMenu(REFLECTOR_TYPEDEC_ID);
                    var assemblymenu    = AddMenu(REFLECTOR_ASSEMBLY_ID);
                    var assemblyrefmenu = AddMenu(REFLECTOR_ASSEMBLYREF_ID);
                    var modulemenu      = AddMenu(REFLECTOR_MODULE_ID);
                    var methodmenu      = AddMenu(REFLECTOR_METHODDEC_ID);
                    var fieldmenu       = AddMenu(REFLECTOR_FIELDDEC_ID);
                    var propertymenu    = AddMenu(REFLECTOR_PROPERTYDEC_ID);
                    var eventmenu       = AddMenu(REFLECTOR_EVENTDEC_ID);
                    var resmenu         = AddMenu(REFLECTOR_RESOURCE_ID);

                    var allmenus     = new UIContext[] { typemenu, assemblymenu, assemblyrefmenu, modulemenu, methodmenu, fieldmenu, propertymenu, eventmenu, resmenu };
                    var membersmenus = new UIContext[] { assemblyrefmenu, typemenu, methodmenu, fieldmenu, propertymenu, eventmenu, resmenu };

                    // Type declaration menu
                    items.Add(new SubMenuUIContext(typemenu, "Inject inner class", (sender, e) => Inject(EInjectType.Class), browserimages.Images[(int)EBrowserImages.PublicClass]));
                    items.Add(new SubMenuUIContext(typemenu, "Inject inner interface", (sender, e) => Inject(EInjectType.Interface), browserimages.Images[(int)EBrowserImages.PublicInterface]));
                    items.Add(new SubMenuUIContext(typemenu, "Inject inner struct", (sender, e) => Inject(EInjectType.Struct), browserimages.Images[(int)EBrowserImages.PublicStructure]));
                    items.Add(new SubMenuUIContext(typemenu, "Inject inner enum", (sender, e) => Inject(EInjectType.Enum), browserimages.Images[(int)EBrowserImages.PublicEnum]));
                    items.Add(new SubMenuUIContext(typemenu));
                    items.Add(new SubMenuUIContext(typemenu, "Inject event", (sender, e) => Inject(EInjectType.Event), browserimages.Images[(int)EBrowserImages.PublicEvent]));
                    items.Add(new SubMenuUIContext(typemenu, "Inject field", (sender, e) => Inject(EInjectType.Field), browserimages.Images[(int)EBrowserImages.PublicField]));
                    items.Add(new SubMenuUIContext(typemenu, "Inject method", (sender, e) => Inject(EInjectType.Method), browserimages.Images[(int)EBrowserImages.PublicMethod]));
                    items.Add(new SubMenuUIContext(typemenu, "Inject constructor", (sender, e) => Inject(EInjectType.Constructor), browserimages.Images[(int)EBrowserImages.PublicConstructor]));
                    items.Add(new SubMenuUIContext(typemenu, "Inject property", (sender, e) => Inject(EInjectType.Property), browserimages.Images[(int)EBrowserImages.PublicProperty]));

                    // Shared subitems for Assembly/Module
                    foreach (MenuUIContext menu in new MenuUIContext[] { assemblymenu, modulemenu })
                    {
                        items.Add(new SubMenuUIContext(menu, "Inject class", (sender, e) => Inject(EInjectType.Class), browserimages.Images[(int)EBrowserImages.PublicClass]));
                        items.Add(new SubMenuUIContext(menu, "Inject interface", (sender, e) => Inject(EInjectType.Interface), browserimages.Images[(int)EBrowserImages.PublicInterface]));
                        items.Add(new SubMenuUIContext(menu, "Inject struct", (sender, e) => Inject(EInjectType.Struct), browserimages.Images[(int)EBrowserImages.PublicStructure]));
                        items.Add(new SubMenuUIContext(menu, "Inject enum", (sender, e) => Inject(EInjectType.Enum), browserimages.Images[(int)EBrowserImages.PublicEnum]));
                        items.Add(new SubMenuUIContext(menu, "Inject assembly reference", (sender, e) => Inject(EInjectType.AssemblyReference), browserimages.Images[(int)EBrowserImages.LinkedAssembly]));
                        items.Add(new SubMenuUIContext(menu, "Inject resource", (sender, e) => Inject(EInjectType.Resource), browserimages.Images[(int)EBrowserImages.Resources]));
                        items.Add(new SubMenuUIContext(menu));
                        items.Add(new SubMenuUIContext(menu, "Save as...", (sender, e) => AssemblyHelper.SaveAssembly(GetCurrentAssemblyDefinition(), GetCurrentModuleOriginalLocation()), barimages.Images[(int)EBarImages.Save]));
                        items.Add(new SubMenuUIContext(menu, "Obfuscator search...", (sender, e) => AssemblyHelper.SearchObfuscator(GetCurrentModuleOriginalLocation()), barimages.Images[(int)EBarImages.Search]));
                        items.Add(new SubMenuUIContext(menu, "Reload", ReloadAssembly, barimages.Images[(int)EBarImages.Reload]));
                        items.Add(new SubMenuUIContext(menu, "Rename...", RenameItem, barimages.Images[(int)EBarImages.New]));
                        items.Add(new SubMenuUIContext(menu, "Verify", (sender, e) => AssemblyHelper.VerifyAssembly(GetCurrentAssemblyDefinition(), GetCurrentModuleOriginalLocation()), barimages.Images[(int)EBarImages.Check]));
                    }

                    // Shared subitems for renaming/deleting
                    foreach (MenuUIContext menu in membersmenus)
                    {
                        if (menu == typemenu)
                        {
                            items.Add(new SubMenuUIContext(menu));
                        }
                        items.Add(new SubMenuUIContext(menu, "Rename...", RenameItem, barimages.Images[(int)EBarImages.New]));
                        items.Add(new SubMenuUIContext(menu, "Delete", DeleteMember, barimages.Images[(int)EBarImages.Delete]));
                    }

                    items.AddRange(allmenus);
                }
            }

            // Main events
            ab.ActiveItemChanged += this.ActiveItemChanged;
            am.AssemblyLoaded    += this.AssemblyLoaded;
            am.AssemblyUnloaded  += this.AssemblyUnloaded;

            PluginFactory.GetInstance().ReloadAssemblies(am.Assemblies);
            reflexilwindow.HandleItem(ab.ActiveItem);
        }
コード例 #24
0
        /// <summary>
        /// Addin load method
        /// </summary>
        /// <param name="serviceProvider">Reflector service provider</param>
        public void Load(IServiceProvider serviceProvider)
        {
            PluginFactory.Register(new ReflectorPlugin(this));

            _sp  = serviceProvider;
            _wm  = GetService <IWindowManager>();
            _ab  = GetService <IAssemblyBrowser>();
            _cbm = GetService <ICommandBarManager>();
            _am  = GetService <IAssemblyManager>();

            CheckPrerequisites();

            // Main Window
            _items         = new List <UIContext>();
            ReflexilWindow = new Forms.ReflexilWindow();
            _wm.Windows.Add(ReflexilWindowId, ReflexilWindow, ReflexilWindowText);

            // Main button
            _items.Add(new ButtonUIContext(_cbm.CommandBars[ReflectorToolsId]));
            _items.Add(new ButtonUIContext(_cbm.CommandBars[ReflectorToolsId], ReflexilButtonText, Button_Click, BasePlugin.ReflexilImage));

            using (var browserimages = new ImageList())
            {
                browserimages.Images.AddStrip(PluginFactory.GetInstance().GetAllBrowserImages());
                browserimages.TransparentColor = Color.Green;

                using (var barimages = new ImageList())
                {
                    barimages.Images.AddStrip(PluginFactory.GetInstance().GetAllBarImages());

                    // Menus
                    var typemenu        = AddMenu(ReflectorTypedecId);
                    var assemblymenu    = AddMenu(ReflectorAssemblyId);
                    var assemblyrefmenu = AddMenu(ReflectorAssemblyrefId);
                    var modulemenu      = AddMenu(ReflectorModuleId);
                    var methodmenu      = AddMenu(ReflectorMethoddecId);
                    var fieldmenu       = AddMenu(ReflectorFielddecId);
                    var propertymenu    = AddMenu(ReflectorPropertydecId);
                    var eventmenu       = AddMenu(ReflectorEventdecId);
                    var resmenu         = AddMenu(ReflectorResourceId);

                    var allmenus     = new UIContext[] { typemenu, assemblymenu, assemblyrefmenu, modulemenu, methodmenu, fieldmenu, propertymenu, eventmenu, resmenu };
                    var membersmenus = new UIContext[] { assemblyrefmenu, typemenu, methodmenu, fieldmenu, propertymenu, eventmenu, resmenu };

                    // Type declaration menu
                    _items.Add(new SubMenuUIContext(typemenu, "Inject inner class", (sender, e) => Inject(EInjectType.Class), browserimages.Images[(int)EBrowserImages.PublicClass]));
                    _items.Add(new SubMenuUIContext(typemenu, "Inject inner interface", (sender, e) => Inject(EInjectType.Interface), browserimages.Images[(int)EBrowserImages.PublicInterface]));
                    _items.Add(new SubMenuUIContext(typemenu, "Inject inner struct", (sender, e) => Inject(EInjectType.Struct), browserimages.Images[(int)EBrowserImages.PublicStructure]));
                    _items.Add(new SubMenuUIContext(typemenu, "Inject inner enum", (sender, e) => Inject(EInjectType.Enum), browserimages.Images[(int)EBrowserImages.PublicEnum]));
                    _items.Add(new SubMenuUIContext(typemenu));
                    _items.Add(new SubMenuUIContext(typemenu, "Inject event", (sender, e) => Inject(EInjectType.Event), browserimages.Images[(int)EBrowserImages.PublicEvent]));
                    _items.Add(new SubMenuUIContext(typemenu, "Inject field", (sender, e) => Inject(EInjectType.Field), browserimages.Images[(int)EBrowserImages.PublicField]));
                    _items.Add(new SubMenuUIContext(typemenu, "Inject method", (sender, e) => Inject(EInjectType.Method), browserimages.Images[(int)EBrowserImages.PublicMethod]));
                    _items.Add(new SubMenuUIContext(typemenu, "Inject constructor", (sender, e) => Inject(EInjectType.Constructor), browserimages.Images[(int)EBrowserImages.PublicConstructor]));
                    _items.Add(new SubMenuUIContext(typemenu, "Inject property", (sender, e) => Inject(EInjectType.Property), browserimages.Images[(int)EBrowserImages.PublicProperty]));

                    // Shared subitems for Assembly/Module
                    foreach (var menu in new[] { assemblymenu, modulemenu })
                    {
                        _items.Add(new SubMenuUIContext(menu, "Inject class", (sender, e) => Inject(EInjectType.Class), browserimages.Images[(int)EBrowserImages.PublicClass]));
                        _items.Add(new SubMenuUIContext(menu, "Inject interface", (sender, e) => Inject(EInjectType.Interface), browserimages.Images[(int)EBrowserImages.PublicInterface]));
                        _items.Add(new SubMenuUIContext(menu, "Inject struct", (sender, e) => Inject(EInjectType.Struct), browserimages.Images[(int)EBrowserImages.PublicStructure]));
                        _items.Add(new SubMenuUIContext(menu, "Inject enum", (sender, e) => Inject(EInjectType.Enum), browserimages.Images[(int)EBrowserImages.PublicEnum]));
                        _items.Add(new SubMenuUIContext(menu, "Inject assembly reference", (sender, e) => Inject(EInjectType.AssemblyReference), browserimages.Images[(int)EBrowserImages.LinkedAssembly]));
                        _items.Add(new SubMenuUIContext(menu, "Inject resource", (sender, e) => Inject(EInjectType.Resource), browserimages.Images[(int)EBrowserImages.Resources]));
                        _items.Add(new SubMenuUIContext(menu));
                        _items.Add(new SubMenuUIContext(menu, "Save as...", (sender, e) => AssemblyHelper.SaveAssembly(GetCurrentAssemblyDefinition(), GetCurrentModuleOriginalLocation()), barimages.Images[(int)EBarImages.Save]));
                        _items.Add(new SubMenuUIContext(menu, "Obfuscator search...", (sender, e) => AssemblyHelper.SearchObfuscator(GetCurrentModuleOriginalLocation()), barimages.Images[(int)EBarImages.Search]));
                        _items.Add(new SubMenuUIContext(menu, "Reload", ReloadAssembly, barimages.Images[(int)EBarImages.Reload]));
                        _items.Add(new SubMenuUIContext(menu, "Rename...", RenameItem, barimages.Images[(int)EBarImages.New]));
                        _items.Add(new SubMenuUIContext(menu, "Verify", (sender, e) => AssemblyHelper.VerifyAssembly(GetCurrentAssemblyDefinition(), GetCurrentModuleOriginalLocation()), barimages.Images[(int)EBarImages.Check]));
                    }

                    // Shared subitems for renaming/deleting
                    foreach (var uiContext in membersmenus)
                    {
                        var menu = (MenuUIContext)uiContext;
                        if (menu == typemenu)
                        {
                            _items.Add(new SubMenuUIContext(menu));
                        }

                        _items.Add(new SubMenuUIContext(menu, "Rename...", RenameItem, barimages.Images[(int)EBarImages.New]));
                        _items.Add(new SubMenuUIContext(menu, "Delete", DeleteMember, barimages.Images[(int)EBarImages.Delete]));
                    }

                    _items.AddRange(allmenus);
                }
            }

            // Main events
            _ab.ActiveItemChanged += ActiveItemChanged;
            _am.AssemblyLoaded    += AssemblyLoaded;
            _am.AssemblyUnloaded  += AssemblyUnloaded;

            PluginFactory.GetInstance().ReloadAssemblies(_am.Assemblies);
            ReflexilWindow.HandleItem(_ab.ActiveItem);
        }
コード例 #25
0
ファイル: ReflectorPackage.cs プロジェクト: zhanggvi/Reflexil
        public void Load(IServiceProvider serviceProvider)
        {
            PluginFactory.Register(new ReflectorPlugin(this));

            _sp  = serviceProvider;
            _wm  = GetService <IWindowManager>();
            _ab  = GetService <IAssemblyBrowser>();
            _cbm = GetService <ICommandBarManager>();
            _am  = GetService <IAssemblyManager>();

            // IAssemblyManager exposes HotReplaceAssembly, but we want to support older Reflector versions
            _hotReplaceAssemblyMethod = _am.GetType().GetMethod("HotReplaceAssembly", BindingFlags.Instance | BindingFlags.Public);

            // Main Window
            _items         = new List <UIContext>();
            ReflexilWindow = new Forms.ReflexilWindow();
            _wm.Windows.Add(ReflexilWindowId, ReflexilWindow, ReflexilWindowText);

            // Main button
            AddButtonSeparatorIfNeeded(ReflectorToolsId);
            _items.Add(new ButtonUIContext(_cbm.CommandBars[ReflectorToolsId], ReflexilButtonText, MainButtonClick, BasePlugin.ReflexilImage));

            AddButtonSeparatorIfNeeded(ReflectorToolBarId);
            _items.Add(new ButtonUIContext(_cbm.CommandBars[ReflectorToolBarId], ReflexilButtonText, MainButtonClick, BasePlugin.ReflexilImage));

            using (var browserimages = new ImageList())
            {
                browserimages.Images.AddStrip(PluginFactory.GetInstance().GetAllBrowserImages());
                browserimages.TransparentColor = Color.Green;

                using (var barimages = new ImageList())
                {
                    barimages.Images.AddStrip(PluginFactory.GetInstance().GetAllBarImages());

                    // Menus
                    var typemenu        = AddMenu(ReflectorTypedecId);
                    var assemblymenu    = AddMenu(ReflectorAssemblyId);
                    var assemblyrefmenu = AddMenu(ReflectorAssemblyrefId);
                    var modulemenu      = AddMenu(ReflectorModuleId);
                    var methodmenu      = AddMenu(ReflectorMethoddecId);
                    var fieldmenu       = AddMenu(ReflectorFielddecId);
                    var propertymenu    = AddMenu(ReflectorPropertydecId);
                    var eventmenu       = AddMenu(ReflectorEventdecId);
                    var resmenu         = AddMenu(ReflectorResourceId);

                    var allmenus = new[]
                    { typemenu, assemblymenu, assemblyrefmenu, modulemenu, methodmenu, fieldmenu, propertymenu, eventmenu, resmenu };
                    var membersmenus = new[]
                    { assemblyrefmenu, typemenu, methodmenu, fieldmenu, propertymenu, eventmenu, resmenu };

                    // Type declaration menu
                    _items.Add(new SubMenuUIContext(typemenu, "Inject constructor", (sender, e) => Inject(InjectType.Constructor),
                                                    browserimages.Images[(int)EBrowserImages.PublicConstructor]));
                    _items.Add(new SubMenuUIContext(typemenu, "Inject event", (sender, e) => Inject(InjectType.Event),
                                                    browserimages.Images[(int)EBrowserImages.PublicEvent]));
                    _items.Add(new SubMenuUIContext(typemenu, "Inject field", (sender, e) => Inject(InjectType.Field),
                                                    browserimages.Images[(int)EBrowserImages.PublicField]));
                    _items.Add(new SubMenuUIContext(typemenu, "Inject method", (sender, e) => Inject(InjectType.Method),
                                                    browserimages.Images[(int)EBrowserImages.PublicMethod]));
                    _items.Add(new SubMenuUIContext(typemenu, "Inject property", (sender, e) => Inject(InjectType.Property),
                                                    browserimages.Images[(int)EBrowserImages.PublicProperty]));
                    _items.Add(new SubMenuUIContext(typemenu));
                    _items.Add(new SubMenuUIContext(typemenu, "Inject inner class", (sender, e) => Inject(InjectType.Class),
                                                    browserimages.Images[(int)EBrowserImages.PublicClass]));
                    _items.Add(new SubMenuUIContext(typemenu, "Inject inner enum", (sender, e) => Inject(InjectType.Enum),
                                                    browserimages.Images[(int)EBrowserImages.PublicEnum]));
                    _items.Add(new SubMenuUIContext(typemenu, "Inject inner interface", (sender, e) => Inject(InjectType.Interface),
                                                    browserimages.Images[(int)EBrowserImages.PublicInterface]));
                    _items.Add(new SubMenuUIContext(typemenu, "Inject inner struct", (sender, e) => Inject(InjectType.Struct),
                                                    browserimages.Images[(int)EBrowserImages.PublicStructure]));

                    // Shared subitems for Assembly/Module
                    foreach (var menu in new[] { assemblymenu, modulemenu })
                    {
                        _items.Add(new SubMenuUIContext(menu, "Inject assembly reference",
                                                        (sender, e) => Inject(InjectType.AssemblyReference), browserimages.Images[(int)EBrowserImages.LinkedAssembly]));
                        _items.Add(new SubMenuUIContext(menu, "Inject class", (sender, e) => Inject(InjectType.Class),
                                                        browserimages.Images[(int)EBrowserImages.PublicClass]));
                        _items.Add(new SubMenuUIContext(menu, "Inject enum", (sender, e) => Inject(InjectType.Enum),
                                                        browserimages.Images[(int)EBrowserImages.PublicEnum]));
                        _items.Add(new SubMenuUIContext(menu, "Inject interface", (sender, e) => Inject(InjectType.Interface),
                                                        browserimages.Images[(int)EBrowserImages.PublicInterface]));
                        _items.Add(new SubMenuUIContext(menu, "Inject struct", (sender, e) => Inject(InjectType.Struct),
                                                        browserimages.Images[(int)EBrowserImages.PublicStructure]));
                        _items.Add(new SubMenuUIContext(menu, "Inject resource", (sender, e) => Inject(InjectType.Resource),
                                                        browserimages.Images[(int)EBrowserImages.Resources]));

                        _items.Add(new SubMenuUIContext(menu));
                        _items.Add(new SubMenuUIContext(menu, "Reload Reflexil object model", ReloadAssembly, barimages.Images[(int)EBarImages.Reload]));
                        if (_hotReplaceAssemblyMethod != null)
                        {
                            _items.Add(new SubMenuUIContext(menu, "Update Reflector object model", UpdateHostObjectModel, barimages.Images[(int)EBarImages.Reload]));
                        }

                        _items.Add(new SubMenuUIContext(menu));
                        _items.Add(new SubMenuUIContext(menu, "Obfuscator search...", SearchObfuscator, barimages.Images[(int)EBarImages.Search]));
                        _items.Add(new SubMenuUIContext(menu, "Rename...", RenameItem, barimages.Images[(int)EBarImages.New]));
                        _items.Add(new SubMenuUIContext(menu, "Save as...", SaveAssembly, barimages.Images[(int)EBarImages.Save]));
                        _items.Add(new SubMenuUIContext(menu, "Verify", VerifyAssembly, barimages.Images[(int)EBarImages.Check]));
                    }

                    // Shared subitems for renaming/deleting
                    foreach (var menu in membersmenus)
                    {
                        if (menu == typemenu)
                        {
                            _items.Add(new SubMenuUIContext(menu));
                        }

                        _items.Add(new SubMenuUIContext(menu, "Delete", DeleteItem, barimages.Images[(int)EBarImages.Delete]));
                        _items.Add(new SubMenuUIContext(menu, "Rename...", RenameItem, barimages.Images[(int)EBarImages.New]));

                        if (_hotReplaceAssemblyMethod != null)
                        {
                            _items.Add(new SubMenuUIContext(menu));
                            _items.Add(new SubMenuUIContext(menu, "Update Reflector object model", UpdateHostObjectModel, barimages.Images[(int)EBarImages.Reload]));
                        }
                    }

                    _items.AddRange(allmenus);
                }
            }

            // Main events
            _ab.ActiveItemChanged += ActiveItemChanged;
            _am.AssemblyLoaded    += AssemblyLoaded;
            _am.AssemblyUnloaded  += AssemblyUnloaded;

            ReflexilWindow.HandleItem(_ab.ActiveItem);
        }