Example #1
0
        private void FindBtnClick(object sender, EventArgs e)
        {
            double lengthFt;

            if (TryGetLength(out lengthFt) == false)
            {
                MessageBox.Show("Invalid runway length.");
                return;
            }

            var altn = new AlternateFinder(airportList)
                       .AltnInfo(icaoTxtbox.Text, (int)lengthFt);

            DataGrid.Columns.Clear();
            DataGrid.Rows.Clear();
            DataGrid.ColumnCount = 4;
            DataGrid.RowCount    = altn.Count;

            DataGrid.Columns[0].Name = "ICAO";
            DataGrid.Columns[1].Name = "Airport Name";
            DataGrid.Columns[2].Name = "Max RWY Length(" +
                                       lengthUnitComboBox.Text +
                                       ")";

            DataGrid.Columns[3].Name = "Distance";

            for (int i = 0; i < altn.Count; i++)
            {
                DataGrid[0, i].Value = altn[i].Icao;
                DataGrid[1, i].Value = altn[i].AirportName;
                DataGrid[2, i].Value = altn[i].LongestRwyLength;
                DataGrid[3, i].Value = altn[i].Distance;
            }

            if (lengthUnitComboBox.SelectedIndex == 0)
            {
                for (int i = 0; i < altn.Count; i++)
                {
                    DataGrid[2, i].Value = (int)Math.Round(
                        Convert.ToDouble(DataGrid[2, i].Value) * FtMeterRatio);
                }
            }

            DataGrid.Sort(DataGrid.Columns[3], ListSortDirection.Ascending);

            DataGrid.Columns[0].Width = 80;
            DataGrid.Columns[1].Width = 240;
            DataGrid.Columns[2].Width = 100;
            DataGrid.Columns[3].Width = 100;

            DataGrid.Columns[0].DefaultCellStyle.Alignment =
                DataGridViewContentAlignment.MiddleCenter;

            DataGrid.Columns[2].DefaultCellStyle.Alignment =
                DataGridViewContentAlignment.MiddleRight;

            DataGrid.Columns[3].DefaultCellStyle.Alignment =
                DataGridViewContentAlignment.MiddleRight;
        }
        /// <summary>
        /// If the ICAO is found and the minimum runway length is a valid number,
        /// update the list of alternates. Otherwise, clear the list of alternates.
        /// </summary>
        public void FindAlternates()
        {
            view.Alternates = new AlternateFinder.AlternateInfo[0];
            double?lengthFt = TryGetLengthFt();

            if (lengthFt == null)
            {
                return;
            }

            var icao = view.ICAO;

            if (airportList[icao] == null)
            {
                return;
            }

            var finder = new AlternateFinder(airportList);

            view.Alternates = new ReadOnlyCollection <AlternateFinder.AlternateInfo>(
                finder.AltnInfo(icao, (int)lengthFt));
        }