private static void unToggleEventsThatAreTooClose(DateTime time) { for (int i = 0; i < toggledNodes.Count; i++) { ToggleButton button = toggledNodes[i]; if (button.GetType() == typeof(Node.Node)) { Node.Node node = (Node.Node)button; DateTime nodesTime = node.GetBlockTime(); if (EventIsTooClose(nodesTime, time)) { node.ToggleBlock(); toggledNodes.Remove(node); i--; } } else if (button.GetType() == typeof(StackedNodes)) { StackedNodes node = (StackedNodes)button; DateTime nodesTime = node.GetBlockTime(); if (EventIsTooClose(nodesTime, time)) { node.ToggleBlock(); toggledNodes.Remove(node); i--; } } } }
/// <summary> /// Gets all nodes that have the same EventTime out of a list that gets passed into the method and returns them in a list of StackedNodes. /// The list that gets passed in has the nodes that would stack deleted from it. /// </summary> /// <param name="nodesCluster">a list of nodes</param> /// <returns>list of StackedNodes and modifies the list of nodes that gets passed in</returns> private List <StackedNodes> GetStackedNodes(List <Node.Node> nodesCluster) { List <StackedNodes> stackedNodesList = new List <StackedNodes>(); Node.Node previousNode = nodesCluster[0]; int i = 1; while (i < nodesCluster.Count) { if (previousNode.aEvent.EventTime.Equals(nodesCluster[i].aEvent.EventTime)) { StackedNodes stackedNodes = new StackedNodes(); stackedNodes.events.Add(previousNode.aEvent); stackedNodes.blocks.Add(previousNode.block); while (i < nodesCluster.Count && previousNode.aEvent.EventTime.Equals(nodesCluster[i].aEvent.EventTime)) { stackedNodes.events.Add(nodesCluster[i].aEvent); stackedNodes.blocks.Add(nodesCluster[i].block); previousNode = nodesCluster[i]; stackedNodes.nodes.Add(nodesCluster.ElementAt(i - 1)); nodesCluster.RemoveAt(i - 1); } stackedNodesList.Add(stackedNodes); if (i < nodesCluster.Count) // If haven't reached the end of the list. { previousNode = nodesCluster[i]; stackedNodes.nodes.Add(nodesCluster.ElementAt(i - 1)); nodesCluster.RemoveAt(i - 1); } else { stackedNodes.nodes.Add(nodesCluster.ElementAt(i - 1)); nodesCluster.RemoveAt(i - 1); } } else { previousNode = nodesCluster[i]; i++; } } return(stackedNodesList); }