77 lines
3 KiB
C#
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);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|