private void HookList() { if (_manager != null || Context == null) { return; } _manager = Context.GetService <IPendingChangesManager>(); if (_manager == null) { return; } UI.Items = _manager.PendingChanges; if (pendingCommits != null) { if (pendingCommits.SmallImageList == null) { IFileIconMapper mapper = Context.GetService <IFileIconMapper>(); pendingCommits.SmallImageList = mapper.ImageList; } _manager.IsActiveChanged += OnPendingChangesActiveChanged; _manager.BatchUpdateStarted += new EventHandler <BatchStartedEventArgs>(OnBatchUpdateStarted); } _manager.PendingChanges.ItemChanged += OnPendingChangesChanged; if (!_manager.IsActive) { _manager.IsActive = true; _manager.FullRefresh(false); } AnkhServiceEvents ev = Context.GetService <AnkhServiceEvents>(); ev.SolutionClosed += new EventHandler(OnSolutionRefresh); ev.SolutionOpened += new EventHandler(OnSolutionRefresh); OnSolutionRefresh(this, EventArgs.Empty); }
/// <summary> /// Called by ProjectDocumentTracker when a solution is opened /// </summary> protected override void OnSolutionOpened(bool onLoad) { base.OnSolutionOpened(onLoad); if (!IsActive) { IAnkhCommandStates states = GetService <IAnkhCommandStates>(); if (states == null || states.OtherSccProviderActive) { return; } } if (!IsSolutionManaged) { string dir = SolutionDirectory; if (!string.IsNullOrEmpty(dir) && Directory.Exists(dir)) { if (!SvnTools.IsBelowManagedPath(dir)) { return; // Not for us } if (!IsActive) { RegisterAsPrimarySccProvider(); // Set us active; we know there is a .svn } // BH: Many users seem to have .load and .noload files checked in // so we can't just remove them without issues. } } if (!IsActive) { return; } foreach (SccProjectData data in ProjectMap.AllSccProjects) { if (data.IsSolutionInfrastructure) { // Solution folders don't save their Scc management state // We let them follow the solution settings if (IsSolutionManaged) { data.SetManaged(true); } } if (data.IsStoredInSolution) { // Flush the glyph cache of solution folders // (Well known VS bug: Initially clear) data.NotifyGlyphsChanged(); } } IPendingChangesManager mgr = GetService <IPendingChangesManager>(); if (mgr != null && mgr.IsActive) { mgr.FullRefresh(false); } UpdateSolutionGlyph(); }
private void HookList() { if (_manager != null || Context == null) return; if (pendingCommits.SmallImageList == null) { IFileIconMapper mapper = Context.GetService<IFileIconMapper>(); pendingCommits.SmallImageList = mapper.ImageList; } _manager = Context.GetService<IPendingChangesManager>(); if (_manager == null) return; _manager.Added += new EventHandler<PendingChangeEventArgs>(OnPendingChangeAdded); _manager.Removed += new EventHandler<PendingChangeEventArgs>(OnPendingChangeRemoved); _manager.Changed += new EventHandler<PendingChangeEventArgs>(OnPendingChangesChanged); _manager.InitialUpdate += new EventHandler<PendingChangeEventArgs>(OnPendingChangesInitialUpdate); _manager.IsActiveChanged += new EventHandler<PendingChangeEventArgs>(OnPendingChangesActiveChanged); _manager.ListFlushed += new EventHandler<PendingChangeEventArgs>(OnPendingChangesListFlushed); if (!_manager.IsActive) { _manager.IsActive = true; _manager.FullRefresh(false); } else PerformInitialUpdate(_manager); AnkhServiceEvents ev = Context.GetService<AnkhServiceEvents>(); ev.SolutionClosed += new EventHandler(OnSolutionRefresh); ev.SolutionOpened += new EventHandler(OnSolutionRefresh); OnSolutionRefresh(this, EventArgs.Empty); }