private void HandleFileChange(FileSystemEventArgs e) { if (IsRepositoryFile(e.FullPath)) { RepositoryItemBase item = null; switch (e.ChangeType) { case WatcherChangeTypes.Changed: WaitforFileIsReadable(e.FullPath); // reLoad the object to mem updating fields item = GetItemFromCacheByFileName(e.FullPath); NewRepositorySerializer.ReloadObjectFromFile(item); item.RefreshSourceControlStatus(); break; case WatcherChangeTypes.Deleted: //remove from cache and list item = GetItemFromCacheByFileName(e.FullPath); RemoveItemFromLists(item); break; case WatcherChangeTypes.Created: WaitforFileIsReadable(e.FullPath); // add item to cache and list T newItem = LoadItemfromFile <T>(e.FullPath, Path.GetDirectoryName(e.FullPath)); AddItemtoCache(e.FullPath, newItem); mFolderItemsList.Add(newItem); break; } } SolutionRepository.RefreshParentFoldersSoucerControlStatus(Path.GetDirectoryName(e.FullPath)); }
/// <summary> /// Save changes of exsiting Repository Item to file system /// </summary> /// <param name="repositoryItem"></param> public void SaveRepositoryItem(RepositoryItemBase repositoryItem) { if (String.IsNullOrEmpty(repositoryItem.ContainingFolder)) { throw new Exception("Cannot save item, there is no containing folder defined - " + repositoryItem.GetType().FullName + ", " + repositoryItem.GetNameForFileName()); } repositoryItem.UpdateBeforeSave(); string txt = RepositorySerializer.SerializeToString(repositoryItem); string filePath = CreateRepositoryItemFileName(repositoryItem); RepositoryFolderBase rf = GetItemRepositoryFolder(repositoryItem); rf.SaveRepositoryItem(filePath, txt); repositoryItem.FileName = filePath; repositoryItem.FilePath = filePath; repositoryItem.RefreshSourceControlStatus(); RefreshParentFoldersSoucerControlStatus(Path.GetDirectoryName(repositoryItem.FilePath)); if (repositoryItem.DirtyStatus != Common.Enums.eDirtyStatus.NoTracked) { repositoryItem.SetDirtyStatusToNoChange(); } repositoryItem.CreateBackup(); }
public override void ReloadUpdatedXML(string path) { WaitforFileIsReadable(path); RepositoryItemBase item = GetItemFromCacheByFileName(path); if (item != null) { NewRepositorySerializer.ReloadObjectFromFile(item); item.RefreshSourceControlStatus(); } }