using System; using System.IO; using System.Collections.Generic; using System.Linq; using System.Text; using UAF.WPF.Commands; namespace DataFileAnalyzer.Commands { public class OpenFileCommand : BaseCommand { public override bool CanExecute(object parameter) { DataFileAnalyzerModel model = parameter as DataFileAnalyzerModel; if (model != null && model.SelectedFile != null) { switch (model.ActiveView) { case DataFileAnalyzerModel.FocusedView.FileView: return model.SelectedFile != null && File.Exists(UAF.PathUtils.MakeAbsolute(model.SelectedFile.FilePath, UAF.ProjectManager.Instance.CurrentProject.DataPath)); case DataFileAnalyzerModel.FocusedView.ReferencedByMeView: return model.SelectedFile != null && model.SelectedFile.Children.Any(file => file.IsSelected && File.Exists(UAF.PathUtils.MakeAbsolute(file.Path, UAF.ProjectManager.Instance.CurrentProject.DataPath))); case DataFileAnalyzerModel.FocusedView.ReferencingMeView: return model.SelectedFile != null && model.SelectedFile.Parents.Any(file => file.IsSelected && File.Exists(UAF.PathUtils.MakeAbsolute(file.Path, UAF.ProjectManager.Instance.CurrentProject.DataPath))); } } return false; } public override void Execute(object parameter) { DataFileAnalyzerModel model = parameter as DataFileAnalyzerModel; if (model != null) { DataFile fileToOpen = null; switch (model.ActiveView) { case DataFileAnalyzerModel.FocusedView.FileView: fileToOpen = model.SelectedFile; break; case DataFileAnalyzerModel.FocusedView.ReferencedByMeView: { if (model.SelectedFile != null) { DataFileDependency dependency = model.SelectedFile.Children.FirstOrDefault(file => file.IsSelected); fileToOpen = model.Library.GetFile(dependency.Key); } } break; case DataFileAnalyzerModel.FocusedView.ReferencingMeView: { if (model.SelectedFile != null) { DataFileDependency dependency = model.SelectedFile.Parents.FirstOrDefault(file => file.IsSelected); fileToOpen = model.Library.GetFile(dependency.Key); } } break; } if (fileToOpen != null) { string fileToOpenPath = UAF.PathUtils.MakeAbsolute(fileToOpen.FilePath, UAF.ProjectManager.Instance.CurrentProject.DataPath); if(File.Exists(fileToOpenPath)) System.Diagnostics.Process.Start(fileToOpenPath); } } } } }