Пример #1
0
        private void RegisterSrcMLService()
        {
            ISrcMLGlobalService srcMLService = ServiceLocator.Resolve<ISrcMLGlobalService>();

            srcMLService.DirectoryAdded += (sender, e) =>
            {

                IndexedFile file = new IndexedFile();
                file.FilePath = e.Directory;
                file.OperationStatus = IndexedFile.Status.Normal;

                Application.Current.Dispatcher.BeginInvoke(new Action(delegate()
                {
                    bool equals = false;
                    foreach (IndexedFile currentFile in this.IndexedFiles)
                    {

                        if (IsPathEqual(currentFile.FilePath, file.FilePath))
                        {
                            equals = true;
                            break;
                        }

                    }

                    if (!equals)
                    {
                        this.AddIndexFolder(file);
                    }

                }), null);

            };

            srcMLService.DirectoryRemoved += (sender, e) =>
            {
                Application.Current.Dispatcher.BeginInvoke(new Action(delegate()
                {

                    IndexedFile toRemoveFile = null;

                    foreach (IndexedFile file in this.IndexedFiles)
                    {

                        if (IsPathEqual(file.FilePath, e.Directory))
                        {
                            toRemoveFile = file;
                            break;
                        }

                    }

                    if (null != toRemoveFile)
                    {
                        this.IndexedFiles.Remove(toRemoveFile);
                        toRemoveFile = this.ModifiedIndexedFile.Find((f) => f.GUID == toRemoveFile.GUID);
                        if (null != toRemoveFile)
                        {
                            this.ModifiedIndexedFile.Remove(toRemoveFile);
                        }

                        if (this.IndexedFiles.Count == 0)
                        {
                            this.CurrentIndexedFile = null;
                        }

                    }

                }), null);
            };

            srcMLService.UpdateArchivesStarted += (sender, args) =>
            {
                this.ProgressBarVisibility = Visibility.Visible;
            };

            srcMLService.UpdateArchivesCompleted += (sender, args) =>
            {
                var srcMLArchiveEventsHandlers = ServiceLocator.Resolve<SrcMLArchiveEventsHandlers>();
                if (!srcMLArchiveEventsHandlers.HaveTasks)
                {
                    this.ProgressBarVisibility = Visibility.Collapsed;
                }
            };
        }
Пример #2
0
        private void RemoveIndexFolder(object param)
        {
            if (null != this.SelectedIndexedFile)
            {

                IndexedFile file = this.ModifiedIndexedFile.Find((f) => this.SelectedIndexedFile.GUID == f.GUID);
                if (null != file)
                {
                    file.OperationStatus = IndexedFile.Status.Remove;
                }

                int index = this.IndexedFiles.IndexOf(this.SelectedIndexedFile);

                if (index > 0)
                {
                    if (index != this.IndexedFiles.Count - 1)
                    {
                        this.SelectedIndexedFile = this.IndexedFiles[index + 1];
                    }
                    else
                    {
                        this.SelectedIndexedFile = this.IndexedFiles[index - 1];
                    }

                    this.CurrentIndexedFile = this.IndexedFiles[0];
                }
                else if (index == 0)
                {
                    this.SelectedIndexedFile = null;
                    this.CurrentIndexedFile = null;
                }

                this.IndexedFiles.RemoveAt(index);
            }
        }
Пример #3
0
        private void RegisterSolutionEvents()
        {
            var dte = ServiceLocator.Resolve<DTE2>();
            if (dte != null)
            {
                _solutionEvents = dte.Events.SolutionEvents;
                _solutionEvents.BeforeClosing += () =>
                {

                    Application.Current.Dispatcher.Invoke(new Action(delegate()
                    {

                        //clear the state
                        this.IndexedFiles.Clear();
                        this.ModifiedIndexedFile.Clear();
                        this.SelectedIndexedFile = null;
                        this.CurrentIndexedFile = null;
                        this.IsIndexFileEnabled = false;

                    }));

                };

                _solutionEvents.Opened += () =>
                {
                    Application.Current.Dispatcher.Invoke(new Action(delegate()
                    {

                        this.IsIndexFileEnabled = true;

                    }));
                };

                if (dte.Solution.IsOpen)
                {
                    this.IsIndexFileEnabled = true;
                }
            }
        }
Пример #4
0
        private void InitializeIndexedFile()
        {
            ISrcMLGlobalService srcMLService = ServiceLocator.Resolve<ISrcMLGlobalService>();

            if (null != srcMLService.MonitoredDirectories)
            {
                foreach (String filePath in srcMLService.MonitoredDirectories)
                {
                    bool isEqual = false;
                    foreach (IndexedFile indexedFile in this.IndexedFiles)
                    {

                        if (IsPathEqual(indexedFile.FilePath, filePath))
                        {
                            isEqual = true;
                            break;
                        }

                    }

                    if (!isEqual)
                    {
                        IndexedFile file = new IndexedFile();
                        file.FilePath = filePath.TrimEnd("\\".ToCharArray());
                        file.OperationStatus = IndexedFile.Status.Normal;
                        this.AddIndexFolder(file);
                    }

                }
            }
        }
Пример #5
0
        private void AddIndexFolder(IndexedFile file)
        {
            this.IndexedFiles.Add(file);
            this.SelectedIndexedFile = file;

            IndexedFile backupFile = new IndexedFile();
            backupFile.FilePath = this.SelectedIndexedFile.FilePath;
            backupFile.OperationStatus = this.SelectedIndexedFile.OperationStatus;
            backupFile.GUID = this.SelectedIndexedFile.GUID;
            this.ModifiedIndexedFile.Add(backupFile);

            this.CurrentIndexedFile = this.IndexedFiles[0];
        }
Пример #6
0
        private void AddIndexFolder(object param)
        {
            IndexedFile file = new IndexedFile();
            file.FilePath = "C:\\";
            file.OperationStatus = IndexedFile.Status.Add;

            this.AddIndexFolder(file);
        }
Пример #7
0
        private void AddDirectoryToMonitor(ISrcMLGlobalService srcMlService, IndexedFile file)
        {
            List<IndexedFile> indexFilesThatFailedToAdd = new List<IndexedFile>();

            foreach (IndexedFile addFile in this.IndexedFiles)
            {

                if (addFile.GUID == file.GUID)
                {
                    try
                    {
                        srcMlService.AddDirectoryToMonitor(addFile.FilePath);
                    }
                    catch (DirectoryScanningMonitorSubDirectoryException cantAdd)
                    {
                        MessageBox.Show("Sub-directories of existing directories cannot be added - " + cantAdd.Message,
                            "Invalid Directory", MessageBoxButton.OK, MessageBoxImage.Warning);
                        indexFilesThatFailedToAdd.Add(addFile);
                    }
                    catch (ForbiddenDirectoryException cantAdd)
                    {
                        MessageBox.Show(cantAdd.Message, "Invalid Directory", MessageBoxButton.OK,
                            MessageBoxImage.Warning);
                        indexFilesThatFailedToAdd.Add(addFile);
                    }
                }

            }
            foreach (var indexedFile in indexFilesThatFailedToAdd)
                this.IndexedFiles.Remove(indexedFile);
        }