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

77 lines
3 KiB
C#

using System.Collections.Generic;
using System.Linq;
using UAF.Perforce;
using UAF.Perforce.Requests;
using UAF.WPF.Commands;
namespace DataFileAnalyzer.Commands
{
public class OpenForDeleteCommand : BaseCommand
{
public override bool CanExecute(object parameter)
{
DataFileAnalyzerModel model = parameter as DataFileAnalyzerModel;
if (model != null)
{
if (!model.IsPerforceEnabled)
return false;
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 && model.IsPerforceEnabled)
{
IEnumerable<string> filesToDelete = null;
string dataFolder = UAF.ProjectManager.Instance.CurrentProject.DataPath;
if (model.ActiveView == DataFileAnalyzerModel.FocusedView.FileView)
{
filesToDelete = model.SelectedFiles.Select(file => dataFolder + file.NormalizedPath);
}
else if (model.ActiveView == DataFileAnalyzerModel.FocusedView.ReferencedByMeView)
{
filesToDelete = model.SelectedFile.Children.Where(dependency => dependency.IsSelected).Select(dep => dataFolder + dep.Path.Replace('/', '\\'));
}
else if (model.ActiveView == DataFileAnalyzerModel.FocusedView.ReferencingMeView)
{
filesToDelete = model.SelectedFile.Parents.Where(dependency => dependency.IsSelected).Select(dep => dataFolder + dep.Path.Replace('/', '\\'));
}
if (filesToDelete != null)
{
PerforceDeleteRequest deleteRequest = new PerforceDeleteRequest();
deleteRequest.AddFiles(filesToDelete);
PerforceManager.Instance.SendRequest(deleteRequest);
}
}
}
}
}