예제 #1
0
        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);
        }
예제 #2
0
        /// <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();
        }
예제 #3
0
        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);
        }