示例#1
0
 public DebuggerHook(DTE2 applicationObject, AddinController controller, IViewAdapter viewAdapter, IDsmSettingsManager settingsManager)
 {
     _settingsManager   = settingsManager;
     _viewAdapter       = viewAdapter;
     _controller        = controller;
     _applicationObject = applicationObject;
 }
示例#2
0
 public DebuggerHook(DTE2 applicationObject, AddinController controller, IViewAdapter viewAdapter, IDsmSettingsManager settingsManager)
 {
     _settingsManager = settingsManager;
       _viewAdapter = viewAdapter;
       _controller = controller;
       _applicationObject = applicationObject;
 }
示例#3
0
        public AddinController GetAddinController(DTE2 dteApplicationObject)
        {
            if (_addinController == null)
            _addinController = new AddinController(GetISessionManager(), GetIDsmSettingsManager(), GetIViewAdapter(dteApplicationObject),
              GetIDteAdapter(dteApplicationObject), GetIExceptionManager());

              return _addinController;
        }
示例#4
0
        public AddinController GetAddinController(DTE2 dteApplicationObject)
        {
            if (_addinController == null)
            {
                _addinController = new AddinController(GetISessionManager(), GetIDsmSettingsManager(), GetIViewAdapter(dteApplicationObject),
                                                       GetIDteAdapter(dteApplicationObject), GetIExceptionManager());
            }

            return(_addinController);
        }
示例#5
0
        /// <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)
        {
            try
            {
                if ((disconnectMode == ext_DisconnectMode.ext_dm_HostShutdown) || (disconnectMode == ext_DisconnectMode.ext_dm_UserClosed))
                {
                    if (_debugHook != null)
                    {
                        _debugHook.UnHook();
                    }

                    AddinController.NotifyPluginUnloaded();

                    foreach (var control in _controlsCreated)
                    {
                        try
                        {
                            control.Delete(true);
                        }
                        catch
                        {
                        }
                    }

                    if (managerToolbar != null)
                    {
                        try
                        {
                            if (managerToolbar.Position != null)
                            {
                                _settingsManager.DsmSettings.ToolBarPosition = managerToolbar.Position.ToString();
                            }
                            _settingsManager.DsmSettings.ToolBarRowIndex = managerToolbar.RowIndex;
                            _settingsManager.DsmSettings.ToolBarVisible  = managerToolbar.Visible;
                            _settingsManager.DsmSettings.ToolBarTop      = managerToolbar.Top;
                            _settingsManager.DsmSettings.ToolBarLeft     = managerToolbar.Left;
                            //_settingsManager.DsmSettings.ToolBarWidth = managerToolbar.Width;
                            //_settingsManager.DsmSettings.ToolBarHeight = managerToolbar.Height;

                            _settingsManager.SaveSettings();
                        }
                        finally
                        {
                            managerToolbar.Delete();
                            managerToolbar = null;
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                _exceptionManager.HandleException(ex);
            }
        }
示例#6
0
        /// <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)
        {
            try
            {
                _applicationObject = (DTE2)application;

                _addInInstance = (AddIn)addInInst;

                var container = new Container();

                _exceptionManager = container.GetIExceptionManager();

                _controller = container.GetAddinController(_applicationObject);

                _debugHook = container.GetDebugHook(_applicationObject);
                _debugHook.Hook();

                _settingsManager = container.GetIDsmSettingsManager();

                if ((connectMode == ext_ConnectMode.ext_cm_Startup) || (connectMode == ext_ConnectMode.ext_cm_AfterStartup))
                {
                    //_settings = Settings.Default;
                    //_settings.Reload();

                    CommandBars commandBars = (CommandBars)_applicationObject.CommandBars;

                    // Create a toolbar for this app
                    string managerToolbarName = "Document Session Manager";
                    managerToolbar = null;
                    //try
                    //{
                    //  managerToolbar = ((Microsoft.VisualStudio.CommandBars.CommandBars)this._applicationObject.CommandBars)[managerToolbarName];
                    //}
                    //catch (ArgumentException)
                    //{
                    //}

                    if (managerToolbar == null)
                    {
                        managerToolbar = (CommandBar)commandBars.Add(managerToolbarName, MsoBarPosition.msoBarTop, System.Type.Missing, true);

                        _settingsManager.LoadSettings();
                        managerToolbar.Position = (MsoBarPosition)Enum.Parse(typeof(MsoBarPosition),
                                                                             _settingsManager.DsmSettings.ToolBarPosition ?? MsoBarPosition.msoBarTop.ToString());
                        managerToolbar.RowIndex = _settingsManager.DsmSettings.ToolBarRowIndex;
                        managerToolbar.Visible  = _settingsManager.DsmSettings.ToolBarVisible;

                        if (_settingsManager.DsmSettings.ToolBarTop != -1)
                        {
                            managerToolbar.Top = _settingsManager.DsmSettings.ToolBarTop;
                        }
                        if (_settingsManager.DsmSettings.ToolBarLeft != -1)
                        {
                            managerToolbar.Left = _settingsManager.DsmSettings.ToolBarLeft;
                        }
                        //if (_settingsManager.DsmSettings.ToolBarWidth != -1)
                        //  managerToolbar.Width = _settingsManager.DsmSettings.ToolBarWidth;
                        //if (_settingsManager.DsmSettings.ToolBarHeight != -1)
                        //  managerToolbar.Height = _settingsManager.DsmSettings.ToolBarHeight;
                    }

                    object controlCreated;

                    _controlsCreated.Clear();

                    //PictureManager.CommandButtons.Clear();

                    AddCommand(managerToolbar, "DsmSessionList", "DsmSessionList",
                               "Sessions", vsCommandControlType.vsCommandControlTypeDropDownCombo, 1,
                               vsCommandStyle.vsCommandStyleComboCaseSensitive, 0, out controlCreated);

                    CommandBarComboBox combo = controlCreated as CommandBarComboBox;
                    if (combo != null)
                    {
                        combo.Width = 200;
                    }

                    AddCommand(managerToolbar, "DsmLoadSession", "DsmLoadSession",
                               "Load session", vsCommandControlType.vsCommandControlTypeButton, 1,
                               vsCommandStyle.vsCommandStylePict, 2, out controlCreated);

                    AddCommand(managerToolbar, "DsmSaveSessionAs", "DsmSaveSessionAs",
                               "Save session as", vsCommandControlType.vsCommandControlTypeButton, 2,
                               vsCommandStyle.vsCommandStylePict, 6, out controlCreated);

                    AddCommand(managerToolbar, "DsmSaveSession", "DsmSaveSession",
                               "Save session", vsCommandControlType.vsCommandControlTypeButton, 3,
                               vsCommandStyle.vsCommandStylePict, 5, out controlCreated);

                    AddCommand(managerToolbar, "DsmDeleteSessions", "DsmDeleteSessions",
                               "Delete sessions", vsCommandControlType.vsCommandControlTypeButton, 4,
                               vsCommandStyle.vsCommandStylePict, 1, out controlCreated);

                    AddCommand(managerToolbar, "DsmReloadSession", "DsmReloadSession",
                               "Reload session", vsCommandControlType.vsCommandControlTypeButton, 5,
                               vsCommandStyle.vsCommandStylePict, 4, out controlCreated);

                    AddCommand(managerToolbar, "DsmRecentlyClosed", "DsmRecentlyClosed",
                               "Recently closed documents", vsCommandControlType.vsCommandControlTypeButton, 6,
                               vsCommandStyle.vsCommandStylePict, 3, out controlCreated);
                }
            }
            catch (Exception ex)
            {
                _exceptionManager.HandleException(ex);
            }
        }
示例#7
0
        public void TestFillDocumentsInSession()
        {
            const string DOCUMENT_TO_ADD1 = "documentToAdd1";
              const string DOCUMENT_TO_ADD2 = "documentToAdd2";
              const string DOCUMENT_TO_ADD3 = "documentToAdd3";
              const string DOCUMENT_DUPLICATED = "documentDuplicated";

              var session = new SessionBuilder().StartDefault().Build();
              session.AddDocument(new SessionDocumentBuilder().StartDefault("documentToRemove").Build());
              session.AddDocument(new SessionDocumentBuilder().StartDefault(DOCUMENT_DUPLICATED).Build());

              var dteWindowAdapterMock1 = new Mock<IDteWindowAdapter>();
              dteWindowAdapterMock1.Setup(dwa => dwa.FullPath).Returns(DOCUMENT_TO_ADD1);
              dteWindowAdapterMock1.Setup(dwa => dwa.DocumentType).Returns(DocumentType.Text);

              var dteWindowAdapterMock2 = new Mock<IDteWindowAdapter>();
              dteWindowAdapterMock2.Setup(dwa => dwa.FullPath).Returns(DOCUMENT_TO_ADD2);
              dteWindowAdapterMock2.Setup(dwa => dwa.DocumentType).Returns(DocumentType.Text);

              var dteWindowAdapterMock3 = new Mock<IDteWindowAdapter>();
              dteWindowAdapterMock3.Setup(dwa => dwa.FullPath).Returns(DOCUMENT_TO_ADD3);
              dteWindowAdapterMock3.Setup(dwa => dwa.DocumentType).Returns(DocumentType.Text);

              var dteWindowAdapterMock4 = new Mock<IDteWindowAdapter>();
              dteWindowAdapterMock4.Setup(dwa => dwa.FullPath).Returns(DOCUMENT_DUPLICATED);
              dteWindowAdapterMock4.Setup(dwa => dwa.DocumentType).Returns(DocumentType.Text);

              var dteAdapterMock = new Mock<IDteAdapter>();
              dteAdapterMock.Setup(da => da.GetWindowsForValidDocuments()).Returns(
            new List<IDteWindowAdapter>()
            {
              dteWindowAdapterMock1.Object,
              dteWindowAdapterMock2.Object,
              dteWindowAdapterMock3.Object,
              dteWindowAdapterMock4.Object
            });

              var sessionManagerMock = new Mock<ISessionManager>();
              sessionManagerMock.Setup(sm => sm.CurrentSession).Returns((Session)null);

              var controller = new AddinController(sessionManagerMock.Object, null, null, dteAdapterMock.Object, null);
              controller.FillDocumentsInSession(session);

              IEnumerable<SessionDocument> documentsInSession = session.GetDocuments();

              Assert.AreEqual(4, documentsInSession.Count());
              Assert.AreEqual(1, documentsInSession.Where(d => d.Path.Equals(DOCUMENT_TO_ADD1)).Count());
              Assert.AreEqual(1, documentsInSession.Where(d => d.Path.Equals(DOCUMENT_TO_ADD2)).Count());
              Assert.AreEqual(1, documentsInSession.Where(d => d.Path.Equals(DOCUMENT_TO_ADD3)).Count());
              Assert.AreEqual(1, documentsInSession.Where(d => d.Path.Equals(DOCUMENT_DUPLICATED)).Count());
        }
示例#8
0
        public void TestDeleteSessions()
        {
            var sessionToDelete = new SessionBuilder().StartDefault().Build();

              var sessionManagerMock = new Mock<ISessionManager>();
              sessionManagerMock.Setup(sm => sm.GetSessions()).Returns(new List<Session>());
              sessionManagerMock.Setup(sm => sm.GetSession(It.IsAny<string>())).Returns(sessionToDelete);
              sessionManagerMock.Setup(sm => sm.CurrentSession).Returns(sessionToDelete);

              var viewAdapterMock = new Mock<IViewAdapter>();
              viewAdapterMock.Setup(va => va.GetSessionsForDelete(It.IsAny<IList<SessionDto>>()))
            .Returns(new List<SessionDto>()
            {
              new SessionDto()
            });

              var controller = new AddinController(sessionManagerMock.Object, null, viewAdapterMock.Object,
            null, null);
              controller.DeleteSessions();

              sessionManagerMock.Verify(sm => sm.RemoveSession(sessionToDelete), Times.Once());
              sessionManagerMock.Verify(sm => sm.Persist(), Times.Once());
        }
示例#9
0
        public void TestShowRecentlyClosedDocuments()
        {
            const int ELEMENTS_TO_ADD = 5;

              var elementsToAdd = new List<SessionDocument>();
              addDocumentsToList(ELEMENTS_TO_ADD, elementsToAdd);

              var sessionManagerMock = new Mock<ISessionManager>();

              var viewAdapterMock = new Mock<IViewAdapter>();

              var controller = new AddinController(sessionManagerMock.Object, null, viewAdapterMock.Object, null, null);
              controller.AddDocumentsToRecentlyClosedList(elementsToAdd);
              controller.ShowRecentlyClosedDocuments();

              viewAdapterMock.Verify(va => va.ShowRecentlyClosedDocuments(It.Is<List<SessionDocumentDto>>(x => x.Count == ELEMENTS_TO_ADD)));
        }
示例#10
0
        public void TestSaveSessionAsWithReplace()
        {
            const string SESSION_TO_REPLACE_NAME = "SESSION_TO_REPLACE_NAME";

              var sessionToReplace = new SessionBuilder().StartDefault(SESSION_TO_REPLACE_NAME).Build();
              var sessions = new List<Session>() { sessionToReplace };

              var sessionManagerMock = new Mock<ISessionManager>();
              sessionManagerMock.Setup(sm => sm.GetSessions()).Returns(sessions);
              sessionManagerMock.Setup(sm => sm.GetSession(SESSION_TO_REPLACE_NAME)).Returns(sessionToReplace);
              Session sessionToSave = null;
              sessionManagerMock.SetupSet(sm => sm.CurrentSession).Callback(delegate(Session s)
                                                                    {
                                                                      sessionToSave = s;
                                                                    });
              sessionManagerMock.Setup(sm => sm.CurrentSession).Returns(delegate()
                                                                {
                                                                  return sessionToSave;
                                                                });

              var viewAdapterMock = new Mock<IViewAdapter>();
              viewAdapterMock.Setup(va => va.GetSessionForSaveAs(It.IsAny<IList<SessionDto>>()))
            .Returns((IList<SessionDto> dtoList) => dtoList[0]); //<-- first session (sessionToReplace)

              var dteAdapterMock = new Mock<IDteAdapter>();
              dteAdapterMock.Setup(da => da.GetWindowsForValidDocuments()).Returns(new List<IDteWindowAdapter>());

              var controller = new AddinController(sessionManagerMock.Object, null, viewAdapterMock.Object, dteAdapterMock.Object, null);
              controller.SaveSessionAs();

              sessionManagerMock.VerifySet(sm => sm.CurrentSession = sessionToSave, Times.Once());
              sessionManagerMock.Verify(sm => sm.Persist(), Times.Once());
        }
示例#11
0
        public void TestSaveSession()
        {
            var sessionToSave = new SessionBuilder().StartDefault().Build();

              var sessionManagerMock = new Mock<ISessionManager>();
              sessionManagerMock.Setup(sm => sm.CurrentSession).Returns(sessionToSave);

              var dsmSettings = new DsmSettingsBuilder().StartDefault().Build();
              var settingsManagerMock = new Mock<IDsmSettingsManager>();
              settingsManagerMock.Setup(st => st.DsmSettings).Returns(dsmSettings);

              var dteAdapterMock = new Mock<IDteAdapter>();
              dteAdapterMock.Setup(da => da.GetWindowsForValidDocuments()).Returns(new List<IDteWindowAdapter>());

              var controller = new AddinController(sessionManagerMock.Object, settingsManagerMock.Object, null, dteAdapterMock.Object, null);
              controller.SaveSession();

              sessionManagerMock.Verify(sm => sm.Persist(), Times.Once());
        }
示例#12
0
        public void TestRefreshCurrentSession()
        {
            var sessionManagerMock = new Mock<ISessionManager>();

              var controller = new AddinController(sessionManagerMock.Object, null, null,
            null, null);
              controller.RefreshCurrentSession();

              sessionManagerMock.Verify(sm => sm.SetCurrentSessionByName(It.IsAny<string>()));
        }
示例#13
0
        public void TestLoadSession()
        {
            var sessionToLoad = new SessionBuilder().StartDefault().Build();

              var sessionManagerMock = new Mock<ISessionManager>();
              sessionManagerMock.Setup(sm => sm.GetSessions()).Returns(new List<Session>());
              sessionManagerMock.Setup(sm => sm.GetSession(It.IsAny<string>())).Returns(sessionToLoad);

              var viewAdapterMock = new Mock<IViewAdapter>();
              viewAdapterMock.Setup(va => va.GetSessionForLoading(It.IsAny<IList<SessionDto>>())).Returns(new SessionDto());

              var dteAdapterMock = new Mock<IDteAdapter>();
              dteAdapterMock.Setup(da => da.GetWindowsForValidDocuments()).Returns(new List<IDteWindowAdapter>());

              var controller = new AddinController(sessionManagerMock.Object, null, viewAdapterMock.Object,
            dteAdapterMock.Object, null);
              controller.LoadSession();

              sessionManagerMock.VerifySet(sm => sm.CurrentSession = sessionToLoad, Times.Once());
        }
示例#14
0
        public void TestLoadDocumentsFromSession_NonExistentDocument()
        {
            const string NON_EXISTENT_DOCUMENT = "NON_EXISTENT_DOCUMENT";

              var sessionWithDocumentsToLoad = new SessionBuilder().StartDefault().Build();

              var nonExistentDocument = new SessionDocumentBuilder().StartDefault(NON_EXISTENT_DOCUMENT).Build();
              sessionWithDocumentsToLoad.AddDocument(nonExistentDocument);

              var dteAdapterMock = new Mock<IDteAdapter>();
              dteAdapterMock.Setup(da => da.GetWindowsForValidDocuments()).Returns(new List<IDteWindowAdapter>());

              dteAdapterMock.Setup(da => da.FileExists(It.IsAny<string>())).Returns(false);

              var viewAdapterMock = new Mock<IViewAdapter>();

              var sessionManagerMock = new Mock<ISessionManager>();
              sessionManagerMock.Setup(sm => sm.CurrentSession).Returns((Session)null);

              var controller = new AddinController(sessionManagerMock.Object, null, viewAdapterMock.Object,
            dteAdapterMock.Object, null);
              controller.LoadDocumentsFromSession(sessionWithDocumentsToLoad);

              dteAdapterMock.Verify(da => da.OpenFile(It.IsAny<string>(), It.IsAny<DocumentType>()), Times.Never());
              dteAdapterMock.Verify(da => da.FileExists(It.IsAny<string>()), Times.Once());
              viewAdapterMock.Verify(va => va.ShowLongMessage(It.IsAny<string>(), It.IsAny<string>(), It.IsAny<string>()), Times.Once());
        }
示例#15
0
        public void TestLoadDocumentsFromSession()
        {
            const string DOCUMENT_IN_SESSION_AND_IN_THE_IDE = "d1";
              const string DOCUMENT_IN_SESSION = "d2";
              const string DOCUMENT_IN_THE_IDE = "d3";

              var sessionWithDocumentsToLoad = new SessionBuilder().StartDefault().Build();

              var documentInSessionAndInTheIDE = new SessionDocumentBuilder().StartDefault(DOCUMENT_IN_SESSION_AND_IN_THE_IDE).Build();
              sessionWithDocumentsToLoad.AddDocument(documentInSessionAndInTheIDE);

              var documentInSession = new SessionDocumentBuilder().StartDefault(DOCUMENT_IN_SESSION).Build();
              sessionWithDocumentsToLoad.AddDocument(documentInSession);

              var dteWindowAdapterMock1 = new Mock<IDteWindowAdapter>();
              dteWindowAdapterMock1.Setup(dwa => dwa.FullPath).Returns(DOCUMENT_IN_SESSION_AND_IN_THE_IDE);
              dteWindowAdapterMock1.Setup(dwa => dwa.DocumentMatches(documentInSessionAndInTheIDE)).Returns(true);

              var dteWindowAdapterMock2 = new Mock<IDteWindowAdapter>();
              dteWindowAdapterMock2.Setup(dwa => dwa.FullPath).Returns(DOCUMENT_IN_THE_IDE);
              dteWindowAdapterMock2.Setup(dwa => dwa.DocumentMatches(It.IsAny<SessionDocument>())).Returns(false);
              dteWindowAdapterMock2.Setup(dwa => dwa.Close(It.Is<SaveChanges>(x => x == SaveChanges.Prompt))).Returns(true);

              var dteAdapterMock = new Mock<IDteAdapter>();
              dteAdapterMock.Setup(da => da.GetWindowsForValidDocuments()).Returns(new List<IDteWindowAdapter>()
              {
            dteWindowAdapterMock1.Object,
            dteWindowAdapterMock2.Object,
              });

              dteAdapterMock.Setup(da => da.FileExists(It.IsAny<string>())).Returns(true);

              var viewAdapterMock = new Mock<IViewAdapter>();

              var sessionManagerMock = new Mock<ISessionManager>();
              sessionManagerMock.Setup(sm => sm.CurrentSession).Returns((Session)null);

              var controller = new AddinController(sessionManagerMock.Object, null, viewAdapterMock.Object,
            dteAdapterMock.Object, null);
              controller.LoadDocumentsFromSession(sessionWithDocumentsToLoad);

              dteAdapterMock.Verify(da => da.OpenFile(It.IsAny<string>(), It.IsAny<DocumentType>()), Times.Once());
        }
示例#16
0
        /// <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)
        {
            try
              {
            _applicationObject = (DTE2)application;

            _addInInstance = (AddIn)addInInst;

            var container = new Container();

            _exceptionManager = container.GetIExceptionManager();

            _controller = container.GetAddinController(_applicationObject);

            _debugHook = container.GetDebugHook(_applicationObject);
            _debugHook.Hook();

            _settingsManager = container.GetIDsmSettingsManager();

            if ((connectMode == ext_ConnectMode.ext_cm_Startup) || (connectMode == ext_ConnectMode.ext_cm_AfterStartup))
            {
              //_settings = Settings.Default;
              //_settings.Reload();

              CommandBars commandBars = (CommandBars)_applicationObject.CommandBars;

              // Create a toolbar for this app
              string managerToolbarName = "Document Session Manager";
              managerToolbar = null;
              //try
              //{
              //  managerToolbar = ((Microsoft.VisualStudio.CommandBars.CommandBars)this._applicationObject.CommandBars)[managerToolbarName];
              //}
              //catch (ArgumentException)
              //{
              //}

              if (managerToolbar == null)
              {
            managerToolbar = (CommandBar)commandBars.Add(managerToolbarName, MsoBarPosition.msoBarTop, System.Type.Missing, true);

            _settingsManager.LoadSettings();
            managerToolbar.Position = (MsoBarPosition)Enum.Parse(typeof(MsoBarPosition),
              _settingsManager.DsmSettings.ToolBarPosition ?? MsoBarPosition.msoBarTop.ToString());
            managerToolbar.RowIndex = _settingsManager.DsmSettings.ToolBarRowIndex;
            managerToolbar.Visible = _settingsManager.DsmSettings.ToolBarVisible;

            if (_settingsManager.DsmSettings.ToolBarTop != -1)
              managerToolbar.Top = _settingsManager.DsmSettings.ToolBarTop;
            if (_settingsManager.DsmSettings.ToolBarLeft != -1)
              managerToolbar.Left = _settingsManager.DsmSettings.ToolBarLeft;
            //if (_settingsManager.DsmSettings.ToolBarWidth != -1)
            //  managerToolbar.Width = _settingsManager.DsmSettings.ToolBarWidth;
            //if (_settingsManager.DsmSettings.ToolBarHeight != -1)
            //  managerToolbar.Height = _settingsManager.DsmSettings.ToolBarHeight;

              }

              object controlCreated;

              _controlsCreated.Clear();

              //PictureManager.CommandButtons.Clear();

              AddCommand(managerToolbar, "DsmSessionList", "DsmSessionList",
            "Sessions", vsCommandControlType.vsCommandControlTypeDropDownCombo, 1,
            vsCommandStyle.vsCommandStyleComboCaseSensitive, 0, out controlCreated);

              CommandBarComboBox combo = controlCreated as CommandBarComboBox;
              if (combo != null)
            combo.Width = 200;

              AddCommand(managerToolbar, "DsmLoadSession", "DsmLoadSession",
            "Load session", vsCommandControlType.vsCommandControlTypeButton, 1,
            vsCommandStyle.vsCommandStylePict, 2, out controlCreated);

              AddCommand(managerToolbar, "DsmSaveSessionAs", "DsmSaveSessionAs",
            "Save session as", vsCommandControlType.vsCommandControlTypeButton, 2,
            vsCommandStyle.vsCommandStylePict, 6, out controlCreated);

              AddCommand(managerToolbar, "DsmSaveSession", "DsmSaveSession",
            "Save session", vsCommandControlType.vsCommandControlTypeButton, 3,
            vsCommandStyle.vsCommandStylePict, 5, out controlCreated);

              AddCommand(managerToolbar, "DsmDeleteSessions", "DsmDeleteSessions",
            "Delete sessions", vsCommandControlType.vsCommandControlTypeButton, 4,
            vsCommandStyle.vsCommandStylePict, 1, out controlCreated);

              AddCommand(managerToolbar, "DsmReloadSession", "DsmReloadSession",
            "Reload session", vsCommandControlType.vsCommandControlTypeButton, 5,
            vsCommandStyle.vsCommandStylePict, 4, out controlCreated);

              AddCommand(managerToolbar, "DsmRecentlyClosed", "DsmRecentlyClosed",
            "Recently closed documents", vsCommandControlType.vsCommandControlTypeButton, 6,
            vsCommandStyle.vsCommandStylePict, 3, out controlCreated);

            }
              }
              catch (Exception ex)
              {
            _exceptionManager.HandleException(ex);
              }
        }