private void DumpMenus(ICommandBarManager commandBarManager) { foreach (ICommandBar cb in commandBarManager.CommandBars) { DumpCommandBar(cb, 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)); }
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); }
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); }
/// <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)); } }
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); }
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)); }
/// <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); }
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)); }
// 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)); }
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)); }
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); }
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); }
/// <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."); }
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)); }
/// <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; } }
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); }
/// <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); }
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)); }
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)); }
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); }
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); } }
/// <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); }
/// <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); }
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); }