67 lines
3.1 KiB
C#
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);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|