Beispiel #1
0
        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));
        }
Beispiel #2
0
        /// <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();
        }
Beispiel #3
0
        public override void ReloadUpdatedXML(string path)
        {
            WaitforFileIsReadable(path);
            RepositoryItemBase item = GetItemFromCacheByFileName(path);

            if (item != null)
            {
                NewRepositorySerializer.ReloadObjectFromFile(item);
                item.RefreshSourceControlStatus();
            }
        }