/// <summary>
 /// Update vertex information from the tag window.
 /// </summary>
 private void FormVertexTag_buttonSave_Click_UpdateVertex(object sender, EventArgs e)
 {
     if (formVertexTag.submitSuccessful)
     {
         char inputVertexNameChar = Convert.ToChar(formVertexTag.textBoxVertexName.Text);
         if (inputVertexNameChar != vTagChanged.GetName())
         {
             vertexNameUsed[inputVertexNameChar - 'A']    = true;
             vertexNameUsed[vTagChanged.GetNumberIndex()] = false;
             if (vTagChanged.GetNumberIndex() < defaultVertexNameCounter - 'A')
             {
                 defaultVertexNameCounter = Convert.ToChar(vTagChanged.GetNumberIndex() + 'A');
             }
             for (int i = 0; i < mapMatrix.GetSize(); i++)
             {
                 mapMatrix.SetDirectedEdge((int)(inputVertexNameChar - 'A'), i, mapMatrix.GetEdge(vTagChanged.GetNumberIndex(), i));
                 mapMatrix.SetDirectedEdge(i, (int)(inputVertexNameChar - 'A'), mapMatrix.GetEdge(i, vTagChanged.GetNumberIndex()));
             }
             mapMatrix.RemoveVertex(vTagChanged.GetNumberIndex());
             for (int i = 0; i < mapList.GetSize(); i++)
             {
                 mapList.SetDirectedEdge((int)(inputVertexNameChar - 'A'), i, mapList.GetEdge(vTagChanged.GetNumberIndex(), i));
                 mapList.SetDirectedEdge(i, (int)(inputVertexNameChar - 'A'), mapList.GetEdge(i, vTagChanged.GetNumberIndex()));
             }
             mapList.RemoveVertex(vTagChanged.GetNumberIndex());
             vTagChanged.SetName(inputVertexNameChar);
         }
         for (int i = 0; i < formVertexTag.edgeControls.Count; i++)
         {
             if (formVertexTag.edgeControls[i].GetTextBoxWeight().Enabled)
             {
                 int    finishingVertex = Convert.ToChar(formVertexTag.edgeControls[i].GetLabelFinishingVertex().Name.Trim("label".ToCharArray())) - 'A';
                 double weight          = Convert.ToDouble(formVertexTag.edgeControls[i].GetTextBoxWeight().Text);
                 foreach (Vertex v in vertices)
                 {
                     if (v.GetNumberIndex() == finishingVertex)
                     {
                         vTagChanged.SetEdge(v, weight);
                         break;
                     }
                 }
                 mapMatrix.SetDirectedEdge((int)(inputVertexNameChar - 'A'), finishingVertex, weight);
                 mapList.SetDirectedEdge((int)(inputVertexNameChar - 'A'), finishingVertex, weight);
             }
             else
             {
                 int finishingVertex = Convert.ToChar(formVertexTag.edgeControls[i].GetLabelFinishingVertex().Name.Trim("label".ToCharArray())) - 'A';
                 foreach (Vertex v in vertices)
                 {
                     if (v.GetNumberIndex() == finishingVertex)
                     {
                         vTagChanged.RemoveEdge(v);
                         break;
                     }
                 }
                 mapMatrix.RemoveDirectedEdge((int)(inputVertexNameChar - 'A'), finishingVertex);
                 mapList.RemoveDirectedEdge((int)(inputVertexNameChar - 'A'), finishingVertex);
             }
         }
         formVertexTag.Close();
         ResetBoard();
     }
 }