JD2022-TU1/main/tools/apps/DataFileAnalyzer/Commands/OpenFileCommand.cs

67 lines
3.1 KiB
C#

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);
}
}
}
}
}