Beispiel #1
0
        /// <summary>
        /// Скрываем метод "Удалить ребро", чтобы переименовать его в "Удалить дугу"
        /// </summary>
        /// <param name="u"></param>
        /// <param name="v"></param>
        void IGraph.RemoveEdge(object u, object v)
        {
            Arc arc = Arcs.Find(a =>
                                a.Tail.Value == u && a.Head.Value == v);
            ModificationStatus status = arc != null ? ModificationStatus.Successful : ModificationStatus.NotExist;
            EdgesModifiedEventArgs eArgs = new EdgesModifiedEventArgs(status, arc);
            if (OnRemoveEdge != null)
                OnRemoveEdge(this, eArgs);

            if (eArgs.Status == ModificationStatus.Successful)
            Arcs.Remove(arc);
        }
Beispiel #2
0
 void tree_OnRemoveEdge(object sender, EdgesModifiedEventArgs e)
 {
     if (e.Status == ModificationStatus.Successful)
     {
         this.RemoveVertex((e.Edge as Arc).Head.Value);
     }
 }
Beispiel #3
0
 /// <summary>
 /// Скрываем метод "Добавить ребро", чтобы переименовать его в "Добавить дугу"
 /// </summary>
 /// <param name="u"></param>
 /// <param name="v"></param>
 void IGraph.AddEdge(object u, object v)
 {
     ModificationStatus status = !Arcs.Exists(a => a.Tail == u && a.Head == v) ? ModificationStatus.Successful : ModificationStatus.AlreadyExist;
     Arc arc = new Arc(this, u, v);
     EdgesModifiedEventArgs e = new EdgesModifiedEventArgs(status, arc);
     if (OnAddEdge != null)
         OnAddEdge(this, e);
     if (e.Status == ModificationStatus.Successful)
         Arcs.Add(arc);
 }
Beispiel #4
0
        void tree_OnAddEdge(object sender, EdgesModifiedEventArgs e)
        {
            if (e.Status == ModificationStatus.Successful)
            {
                TreeGraphNode head = (e.Edge as Arc).Head as TreeGraphNode;
                TreeGraphNode tail = (e.Edge as Arc).Tail as TreeGraphNode;

                if (head.IsRoot() || ! (head.Parent.Equals(tail) && tail.IsChild(head)) )
                {
                    e.Status = ModificationStatus.Error;
                }
            }
        }