public void RecordRemoved(IDataRecord record)
{
if (record == GraphData)
{
return;
}
List<GraphItemViewModel> removeList = new List<GraphItemViewModel>();
var filterItem = record as FilterItem;
if (filterItem != null)
{
var node = filterItem.Node;
if (node != null)
{
foreach (var item in GraphItems)
{
if (item.DataObject == node)
{
removeList.Add(item);
removeList.AddRange(item.Connectors.OfType<GraphItemViewModel>());
}
}
}
if (FilterItems.ContainsKey(filterItem.NodeId))
{
FilterItems.Remove(filterItem.NodeId);
}
}
else
{
for (int index = 0; index < GraphItems.Count; index++)
{
var item = GraphItems[index];
if (item.DataObject == record)
{
removeList.Add(item);
removeList.AddRange(item.Connectors.OfType<GraphItemViewModel>());
}
item.RecordRemoved(record);
}
}
foreach (var remove in removeList)
GraphItems.Remove(remove);
if (removeList.Count > 0)
RefreshConnectors();
}