/// <summary> /// Called by ProjectDocumentTracker when a scc-capable project is opened /// </summary> /// <param name="project">The loaded project</param> /// <param name="added">The project was added after opening</param> protected override void OnProjectOpened(SccProjectData data, bool added) { if (data.IsStoredInSolution) { if (IsSolutionManaged) { // We let them follow the solution settings (See OnSolutionOpen() for the not added case if (added && data.IsSolutionInfrastructure) { data.SetManaged(true); } } // Solution folders are projects without Scc state data.NotifyGlyphsChanged(); } data.OnOpened(); _syncMap = true; // Don't take the focus from naming the folder. The rename will perform the .Load() // and dirty check if (added && data.IsSolutionInfrastructure) { return; } if (added && !string.IsNullOrEmpty(SolutionFilename)) { DocumentTracker.CheckDirty(SolutionFilename); } RegisterForSccCleanup(); }
protected virtual void OnProjectDirectoryRemoved(SccProjectData data, string directoryname) { // a directory can be added like a folder but with an ending '\' string dir = directoryname.TrimEnd('\\') + '\\'; data.RemovePath(dir); }
protected virtual void OnProjectClosed(SccProjectData data, bool removed) { ThreadHelper.ThrowIfNotOnUIThread(); data.OnClose(); ProjectMap.RemoveProject(data.SccProject); }
protected virtual void OnProjectFileRenamed(SccProjectData project, string oldName, string newName) { project.CheckProjectRename(oldName, newName); // Just to be sure (should be handled by other event) project.RemovePath(oldName); project.AddPath(newName); }
public void EnsureSccProject(IVsSccProject2 rawProject, out SccProjectData projectData) { if (!TryGetSccProject(rawProject, out projectData)) { // This method is called before the OpenProject calls AddProject(rawProject, projectData = new SccProjectData(this, rawProject)); } }
/// <summary> /// Initializes a new instance of the <see cref="WrapProjectInfo"/> class. /// </summary> /// <param name="data">The data.</param> public WrapProjectInfo(SccProjectData data) { if (data == null) { throw new ArgumentNullException("data"); } _data = data; }
/// <summary> /// This method is called by projects that are under source control /// when they are first opened to register project settings. /// </summary> protected override void OnRegisterSccProject(SccProjectData data, string pszProvider) { base.OnRegisterSccProject(data, pszProvider); data.IsManaged = (pszProvider == AnkhId.SubversionSccName); _syncMap = true; RegisterForSccCleanup(); }
/// <summary> /// Called by ProjectDocumentTracker when a scc-capable project is closed /// </summary> /// <param name="project">The project.</param> /// <param name="removed">if set to <c>true</c> the project is being removed or unloaded from the solution.</param> protected override void OnProjectClosed(SccProjectData data, bool removed) { base.OnProjectClosed(data, removed); if (removed) { if (!string.IsNullOrEmpty(SolutionFilename)) { DocumentTracker.CheckDirty(SolutionFilename); } } }
protected override void OnProjectRenamed(SccProjectData data) { if (string.IsNullOrEmpty(SolutionFilename)) { return; } // Mark the sln file edited, so it shows up in Pending Changes/Commit if (!string.IsNullOrEmpty(SolutionFilename)) { DocumentTracker.CheckDirty(SolutionFilename); } base.OnProjectRenamed(data); }
bool MapProject(IVsHierarchy pHierarchy, out string slnLocation, out SccProjectData data) { ThreadHelper.ThrowIfNotOnUIThread(); IVsSccProject2 sccProject = pHierarchy as IVsSccProject2; if (sccProject != null && ProjectMap.TryGetSccProject(sccProject, out data)) { // data valid } else if (sccProject != null) { data = new SccProjectData(ProjectMap, sccProject); } else { data = null; } string projectLocation = null; try { if (data != null && !string.IsNullOrEmpty(data.ProjectLocation)) { projectLocation = data.ProjectLocation; return(true); } IVsSolution2 sln = GetService <IVsSolution2>(typeof(SVsSolution)); if (sln != null && VSErr.Succeeded(pHierarchy.GetCanonicalName(VSItemId.Root, out projectLocation))) { return(!string.IsNullOrEmpty(projectLocation)); } projectLocation = null; return(false); } finally { if (projectLocation == null || !_trueNameMap.TryGetValue(projectLocation, out slnLocation)) { slnLocation = projectLocation; } } }
/// <summary> /// Called when a directory is added to a project /// </summary> /// <param name="project">The project.</param> /// <param name="directoryname">The directoryname.</param> /// <param name="origin">The origin or null.</param> protected override void OnProjectDirectoryAdded(SccProjectData project, string directoryname, string origin) { base.OnProjectDirectoryAdded(project, directoryname, origin); if (!IsActive) { return; } if (!project.WebLikeFileHandling) { // Do nothing } else { // Websites don't contain a real file mapping; reload to load new files // and directories recursively project.Reload(); } }
protected override bool TrackProjectChanges(SccProjectData data, out bool trackCopies) { trackCopies = true; if (data.WebLikeFileHandling) { int busy; if (BuildManager != null && VSErr.Succeeded(BuildManager.QueryBuildManagerBusy(out busy)) && busy != 0) { trackCopies = false; } } else if (_syncMap) { data.Load(); } return(data.TrackProjectChanges()); // Allows temporary disabling changes }
protected virtual void OnProjectFileRemoved(SccProjectData data, string oldName) { data.RemovePath(oldName); }
protected virtual void OnProjectFileAdded(SccProjectData data, string filename) { data.AddPath(filename); }
protected virtual void OnProjectRenamed(SccProjectData data) { data.Reload(); // Reload project name, etc. }
protected virtual void OnProjectBeforeUnload(SccProjectData data) { }
protected virtual void OnProjectDirectoryAdded(SccProjectData data, string directory, string origin) { }
protected virtual void OnProjectClosed(SccProjectData data, bool removed) { data.OnClose(); ProjectMap.RemoveProject(data.SccProject); }
internal protected abstract Selection.SccProject CreateProject(SccProjectData sccProjectData);
protected virtual void OnProjectOpened(SccProjectData project, bool added) { }
protected virtual void OnUnregisterSccProject(SccProjectData data) { data.IsRegistered = false; data.IsManaged = false; }
protected virtual void OnProjectDirectoryRenamed(SccProjectData project, string oldName, string newName) { }
public bool TryGetSccProject(IVsSccProject2 project, out SccProjectData data) { return(_projectMap.TryGetValue(project, out data)); }
/// <summary> /// Called by ProjectDocumentTracker when a scc-capable project is loaded /// </summary> /// <param name="data"></param> protected override void OnProjectLoaded(SccProjectData data) { base.OnProjectLoaded(data); }
protected virtual void OnProjectFileAdded(SccProjectData project) { }
void AddProject(IVsSccProject2 sccProject, SccProjectData sccProjectData) { _projectMap.Add(sccProject, sccProjectData); }
protected virtual void OnRegisterSccProject(SccProjectData data, string pszProvider) { data.IsRegistered = true; }
protected override void OnProjectBeforeUnload(SccProjectData data) { Monitor.ScheduleMonitor(data.GetAllFiles()); // Keep track of changes in files of unloaded project }
protected virtual bool TrackProjectChanges(SccProjectData data, out bool trackCopies) { trackCopies = true; return(data.TrackProjectChanges()); }
protected virtual void OnProjectLoaded(SccProjectData project) { }