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; } }; }
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); } }
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; } } }
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); } } } }
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]; }
private void AddIndexFolder(object param) { IndexedFile file = new IndexedFile(); file.FilePath = "C:\\"; file.OperationStatus = IndexedFile.Status.Add; this.AddIndexFolder(file); }
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); }