using System; using System.Collections.Generic; using System.Linq; using System.Text; using DataFileAnalyzer; using UAF.WPF.Commands; namespace DataFileAnalyzer.Commands { public class GoToFileCommand : BaseCommand { public override bool CanExecute(object parameter) { DataFileAnalyzerModel model = parameter as DataFileAnalyzerModel; if (model != null) { if (model.SelectedFile != null) { switch (model.ActiveView) { case DataFileAnalyzerModel.FocusedView.FileView: return true; case DataFileAnalyzerModel.FocusedView.ReferencedByMeView: if (model.SelectedFile.Children.Where(dependency => dependency.IsSelected).Count() > 0) return true; else return false; case DataFileAnalyzerModel.FocusedView.ReferencingMeView: if (model.SelectedFile.Parents.Where(dependency => dependency.IsSelected).Count() > 0) return true; else return false; default: return false; } } } return false; } public override void Execute(object parameter) { DataFileAnalyzerModel model = parameter as DataFileAnalyzerModel; if (model != null && model.SelectedFile != null) { string fileToSelect = null; string dataFolder = UAF.ProjectManager.Instance.CurrentProject.DataPath; if (model.ActiveView == DataFileAnalyzerModel.FocusedView.FileView) { fileToSelect = dataFolder + model.SelectedFile.FilePath.Replace('/', '\\'); } else if (model.ActiveView == DataFileAnalyzerModel.FocusedView.ReferencedByMeView) { fileToSelect = model.SelectedFile.Children.Where(dependency => dependency.IsSelected).Select(dep => dataFolder + dep.Path.Replace('/', '\\')).FirstOrDefault(); } else if (model.ActiveView == DataFileAnalyzerModel.FocusedView.ReferencingMeView) { fileToSelect = model.SelectedFile.Parents.Where(dependency => dependency.IsSelected).Select(dep => dataFolder + dep.Path.Replace('/', '\\')).FirstOrDefault(); } if (fileToSelect != null) { System.Diagnostics.ProcessStartInfo pfi = new System.Diagnostics.ProcessStartInfo("Explorer.exe", String.Format("/Select, \"{0}\"", fileToSelect)); System.Diagnostics.Process.Start(pfi); } } } } }