/// <summary> /// Handles a "Find Shortest Path" event. /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void uxFindPath_Click(object sender, EventArgs e) { if (!_map.ContainsNode(uxStartNode.Text)) { ShowError(uxStartNode.Text); } else if (!_map.ContainsNode(uxEndNode.Text)) { ShowError(uxEndNode.Text); } else { Dictionary <string, string> paths; decimal len = Math.Round(ShortestPath(uxStartNode.Text, uxEndNode.Text, _map, out paths), 1); uxNodeList.Items.Clear(); if (len < 0) { uxDistance.Text = ""; MessageBox.Show("No path found."); } else { uxDistance.Text = len + _distanceUnit; uxNodeList.BeginUpdate(); AddPath(uxStartNode.Text, uxEndNode.Text, paths, uxNodeList.Items); uxNodeList.EndUpdate(); } } }
/// <summary> /// Handles a Navigated event on the map. /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void uxMap_Navigated(object sender, WebBrowserNavigatedEventArgs e) { if (uxMap.Url.Host == _mapServerHost) { bool viewingNode = uxMap.Url.AbsolutePath.StartsWith(_nodePrefix) && _map.ContainsNode(uxMap.Url.AbsolutePath.Substring(_nodePrefix.Length)); uxSetStart.Enabled = viewingNode; uxSetEnd.Enabled = viewingNode; } else { uxSetStart.Enabled = false; uxSetEnd.Enabled = false; uxFindPath.Enabled = false; } }