private void DeleteSourceExplorerResource(object state)
{
if (state is KeyValuePair<ITreeNode, IContextualResourceModel>)
{
var kvp = (KeyValuePair<ITreeNode, IContextualResourceModel>)state;
IContextualResourceModel model = kvp.Value;
List<IResourceModel> dependencies = ResourceDependencyService.GetUniqueDependencies(model);
bool openDependencyGraph;
bool shouldRemove = QueryDeleteExplorerResource(model.ResourceName, "Source",
dependencies != null && dependencies.Count > 0,
out openDependencyGraph);
if (shouldRemove)
{
if (!WizardEngine.IsWizard(model))
{
IContextualResourceModel wizard = WizardEngine.GetWizard(model);
if (wizard != null)
{
dynamic wizardData = ExecuteDeleteResource(wizard, "Source",
String.Join(",",
MainViewModel.SecurityContext.Roles));
if (wizardData.HasError)
{
HandleDeleteResourceError(wizardData, model.ResourceName, "Source");
return;
}
}
}
dynamic data = ExecuteDeleteResource(model, "Source",
String.Join(",", MainViewModel.SecurityContext.Roles));
if (data.HasError)
{
HandleDeleteResourceError(data, model.ResourceName, "Source");
}
else
{
RemoveExplorerResource(model, kvp.Key);
}
}
else if (openDependencyGraph)
{
MainViewModel.AddDependencyVisualizerDocument(model);
}
}
}