/// <summary> /// Triggers the NetworkChanged event. /// </summary> internal virtual void OnNetworkChanged(NetworkChangedEventArgs ea) { if (ChangeEventsEnabled) { if (_networkChanged != null) _networkChanged(this, ea); } }
/// <summary> /// Triggers the NetworkChanged event. /// </summary> public virtual void OnNetworkChanged(NetworkChangedEventArgs ea) { if (_ChangeEventsEnabled) { if (_NetworkChanged != null) _NetworkChanged(this, ea); } }
/// <summary> /// For internal use only. Adds <paramref name="newNode"/> to /// the network. Assumes newNode is NOT already in the network. /// </summary> /// <param name="newNode">The new IBasicNode to add to the network</param> internal void AddNewNode(IBasicNode newNode) { _nodes.Add(newNode); if (NodeData != null) NodeData.AddRow(newNode); if (ChangeEventsEnabled) { var arg = new NetworkChangedEventArgs(); arg.NodeAdded = newNode; OnNetworkChanged(arg); } }
public void RemoveNode(INode node) { if (node == null) throw new ArgumentNullException("node", string.Format("The node must not be null.")); if (!(node is IBasicNode)) throw new ArgumentException(string.Format("The node must be of type {0}.", typeof(IBasicNode).Name), "node"); if (node.Network != this) throw new ArgumentException(string.Format("The node must be in this network."), "node"); int nodeIndex = node.Index; IBasicNode basicNode = (IBasicNode)node; // 1) remove nodes at each end of the edge // 3) delete edge data row // 4) detatch the edge // 5) delete the edge int edgesRemoved = 0; if(basicNode.EdgeCount>0) { // edges now have no end nodes // clear edge data - do this BEFORE calling Detatch if(EdgeData!=null) { foreach (IEdge edge in node.Edges) { EdgeData.RemoveRow(edge); } } foreach (IBasicEdge edge in node.Edges) { _edges.Remove(edge); edgesRemoved++; } _edgesHaveBeenRemoved = true; } if (NodeData != null) NodeData.RemoveRow(basicNode); basicNode.Detatch(); // Detach() cleans up source and dest node eges _nodes.Remove(basicNode); _nodesHaveBeenRemoved = true; if (ChangeEventsEnabled) { var arg = new NetworkChangedEventArgs(); arg.NodeRemoved =basicNode; OnNetworkChanged(arg); } }
public void RemoveEdge(IEdge edge) { if (edge == null) throw new ArgumentNullException("edge", string.Format("The edge must not be null.")); if (!(edge is IBasicEdge)) throw new ArgumentException(string.Format("The edge must be of type {0}.", typeof(IBasicEdge).Name), "edge"); if (edge.Network != this) throw new ArgumentException(string.Format("The edge must be in this network."), "edge"); IBasicEdge basicEdge = (IBasicEdge)edge; int edgeIndex = basicEdge.Index; IBasicNode node = basicEdge.SourceNode as IBasicNode; node.RemoveEdge(edge); node = basicEdge.DestinationNode as IBasicNode; node.RemoveEdge(edge); if (EdgeData != null) EdgeData.RemoveRow(basicEdge); _edges.Remove(edge); basicEdge.Detatch(); _edgesHaveBeenRemoved = true; if (ChangeEventsEnabled) { var arg = new NetworkChangedEventArgs(); arg.EdgeRemoved = edge; OnNetworkChanged(arg); } }
public IEdge CreateEdge(INode source, INode destination) { IBasicEdge edge = new BasicEdge(this, source, destination, NextAvailableEdgeIndex++); ((IBasicNode)source).AddEdge(edge); ((IBasicNode)destination).AddEdge(edge); _edges.Add(edge); if (EdgeData != null) EdgeData.AddRow(edge); if(ChangeEventsEnabled) { var arg = new NetworkChangedEventArgs(); arg.EdgeAdded = edge; OnNetworkChanged(arg); } return edge; }
public void NetworkChanged_DummyHandler(INetwork sender, NetworkChangedEventArgs ea) { NetworkChanged_TimesCalled++; LastArgumentRecieved = ea; }