Esempio n. 1
0
 /// <summary>
 /// Triggers the NetworkChanged event.
 /// </summary>
 internal virtual void OnNetworkChanged(NetworkChangedEventArgs ea)
 {
     if (ChangeEventsEnabled)
     {
         if (_networkChanged != null)
             _networkChanged(this, ea);
     }
 }
Esempio n. 2
0
 /// <summary>
 /// Triggers the NetworkChanged event.
 /// </summary>
 public virtual void OnNetworkChanged(NetworkChangedEventArgs ea)
 {
     if (_ChangeEventsEnabled)
     {
         if (_NetworkChanged != null)
             _NetworkChanged(this, ea);
     }
 }
Esempio n. 3
0
 /// <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);
     }
 }
Esempio n. 4
0
        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);
            }
        }
Esempio n. 5
0
        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);
            }
        }
Esempio n. 6
0
        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;
 }