/// <summary>Implements the OnDisconnection method of the IDTExtensibility2 interface. Receives notification that the Add-in is being unloaded.</summary> /// <param term='disconnectMode'>Describes how the Add-in is being unloaded.</param> /// <param term='custom'>Array of parameters that are host application specific.</param> /// <seealso class='IDTExtensibility2' /> public void OnDisconnection(ext_DisconnectMode disconnectMode, ref Array custom) { manager.ApplicationExit(false /* true */); customizator.Destroy(); manager = null; customizator = null; }
public void AddInManager_CallInitializeOnceForAction() { var a1 = CreatePackageActionForManager(); var a2 = CreatePackageActionForManager(); var dte = CreateDTE(); var addIn = CreateAddIn(); mock.ReplayAll(); var manager = new CustomAddInManager(dte, addIn, null, Assembly.GetExecutingAssembly()); Trace.WriteLine("Addin two actions."); manager.Add(a1); manager.Add(a2); // initialize actions - only the first one should be executed // the rest should be discarded by the manager itself: Trace.WriteLine("Calling application init of AddIn manager for the first time."); manager.ApplicationInit(true); Trace.WriteLine("Calling for the second time."); manager.ApplicationInit(true); // release manager's resources: Trace.WriteLine("Calling application exit."); manager.ApplicationExit(true); // check if the initialization has been called at most 2-times: Trace.WriteLine("Validating number of calls."); ThrowCounterException(2); }
/// <summary>Implements the OnConnection method of the IDTExtensibility2 interface. Receives notification that the Add-in is being loaded.</summary> /// <param term='application'>Root object of the host application.</param> /// <param term='connectMode'>Describes how the Add-in is being loaded.</param> /// <param term='addInInst'>Object representing this Add-in.</param> /// <seealso class='IDTExtensibility2' /> public void OnConnection(object application, ext_ConnectMode connectMode, object addInInst, ref Array custom) { if (manager == null) { customizator = new TytanCustomizator(); manager = new CustomAddInManager((DTE2)application, (AddIn)addInInst, customizator, Assembly.GetExecutingAssembly()); //if (connectMode != ext_ConnectMode.ext_cm_UISetup) customizator.Initialize(manager); // register all known refactoring IPackageActions: manager.Add(new InitConstructorRefactor()); manager.Add(new ExtractPropertyRefactor()); //manager.Add(new ExpandEnumRefactor()); // manager.Add(new ExtractResourceRefactor()); manager.Add(new AssignReorderRefactor()); manager.Add(new MultiRenameRefactor()); manager.Add(new InsertionGuidRefactor()); manager.Add(new InsertionClassNameAction()); manager.Add(new InsertionPathRefactor()); manager.Add(new InsertionDatabaseRefactor()); if (manager.Version == ShellVersions.VS2005) { manager.Add(new OpenWindowsExplorer()); } manager.Add(new VisualStudioCloseQuestion()); manager.Add(new ReferenceProjectAction()); // manager.Add(new NativeImagePreviewPackageTool()); manager.Add(new CommandViewPackageTool()); manager.Add(new RegistryViewPackageTool()); manager.Add(new EnvironmentVarsPackageTool()); manager.Add(new DebugViewPackageTool()); manager.Add(new AboutBoxAction()); } // initialize VS IDE commands: manager.ApplicationInit(true /* connectMode == ext_ConnectMode.ext_cm_UISetup */); customizator.AfterApplicationInit(true); }
/// <summary> /// Initialize customizator and associate with given manager. /// </summary> public void Initialize(CustomAddInManager m) { IMenuCreator mc = m.MenuCreator; // read the global settings for an add-in: config = ObjectFactory.LoadConfiguration(null); // configure the management objects: manager = m; tytanToolbar = mc.AddToolbar(ToolbarName); tytanAuxTools = mc.AddPopup(tytanToolbar, AuxiliaryToolsName, null, false, -1); tytanRefactors = mc.AddPopup(tytanToolbar, RefactorMenu, null, true, -1); refactors = new List <CommandBar>(); if (tytanRefactors != null) { refactors.Add(tytanRefactors.CommandBar); } refactors.Add(mc.GetMainMenuCommandBar(RefactorMenu)); refactors.Add(mc.GetCodeWindowCommandBar(RefactorMenu)); }