public IEnumerator AddGraphItems(IEnumerable<IDiagramNode> items)
{
var dictionary = new Dictionary<string, IFilterItem>();
foreach (var item in GraphData.CurrentFilter.FilterItems)
{
if (dictionary.ContainsKey(item.NodeId))
{
item.Repository.Remove(item);
continue;
}
dictionary.Add(item.NodeId, item);
}
FilterItems = dictionary;
IsLoading = true;
var connectors = new List<ConnectorViewModel>();
// var time = DateTime.Now;
foreach (var item in items)
{
// Get the ViewModel for the data
//InvertApplication.Log("B-A" + DateTime.Now.Subtract(time).TotalSeconds.ToString());
var mapping = InvertApplication.Container.RelationshipMappings[item.GetType(), typeof(ViewModel)];
if (mapping == null) continue;
var vm = Activator.CreateInstance(mapping, item, this) as GraphItemViewModel;
//var vm =
// InvertApplication.Container.ResolveRelation<ViewModel>(item.GetType(), item, this) as
// GraphItemViewModel;
//InvertApplication.Log("B-B" + DateTime.Now.Subtract(time).TotalSeconds.ToString());
if (vm == null)
{
if (InvertGraphEditor.Platform.MessageBox("Node Error", string.Format("Couldn't find view-model for {0} would you like to remove this item?", item.GetType()), "Yes", "No"))
{
CurrentRepository.Remove(item);
}
continue;
}
vm.DiagramViewModel = this;
GraphItems.Add(vm);
//// Clear the connections on the view-model
//vm.Connectors.Clear();
//vm.GetConnectors(vm.Connectors);
//connectors.AddRange(vm.Connectors);
yield return new TaskProgress(string.Format("Loading..."), 95f);
}
IsLoading = false;
RefreshConnectors();
//AddConnectors(connectors);
InvertApplication.SignalEvent<IGraphLoaded>(_=>_.GraphLoaded());
yield break;
}
public InspectorViewModel InspectorViewModel