private void AddItemsToListView(ListView listView, bool addColumns, bool rebuildArray)
        {
            if (listView != null)
            {
                listView.BeginUpdate();
            }

            if (rebuildArray)
            {
                if (Exoplanets.ExoplanetsArray != null)
                {
                    Exoplanets.ExoplanetsArray.Clear();
                }

                Exoplanets.ExoplanetsArray = ReadXML.Read(XmlFileName);
            }
            else
            {
                if (ExoplanetListView != null)
                {
                    for (int index = ExoplanetListView.Items.Count - 1; index >= 0; --index)
                    {
                        ExoplanetListView.Items.RemoveAt(index);
                    }
                }
            }

            if (addColumns)
            {
                AddColumnsToListView(listView);
            }

            List <ListViewItem> items = new List <ListViewItem> ();

            if (Exoplanets.ExoplanetsArray != null)
            {
                foreach (Exoplanet exoplanet in Exoplanets.ExoplanetsArray)
                {
                    if (Queries.CurrentQueries != null)
                    {
                        if (!Queries.CurrentQueries.MatchesQuery(exoplanet))
                        {
                            continue;
                        }
                    }

                    ListViewItem item = new ListViewItem(exoplanet.Name, 0);

                    item.SubItems.Add(Helper.Format(exoplanet.DetectionType));
                    item.SubItems.Add(Helper.Format(Habitability.GetHabitability(exoplanet).ToString()));
                    item.SubItems.Add(Helper.Format(exoplanet.Mass));
                    item.SubItems.Add(Helper.Format(exoplanet.Radius));
                    item.SubItems.Add(Helper.Format(exoplanet.OrbitalPeriod));
                    item.SubItems.Add(Helper.Format(exoplanet.SemiMajorAxis));
                    item.SubItems.Add(Helper.Format(exoplanet.Eccentricity));
                    item.SubItems.Add(Helper.Format(exoplanet.AngularDistance));
                    item.SubItems.Add(Helper.Format(exoplanet.Inclination));
                    item.SubItems.Add(Helper.Format(exoplanet.Omega));
                    item.SubItems.Add(Helper.Format(exoplanet.VelocitySemiamplitude));

                    item.SubItems.Add(Helper.Format(exoplanet.Discovered));
                    item.SubItems.Add(Helper.Format(exoplanet.Updated));

                    item.SubItems.Add(Helper.Format(exoplanet.Star.Name));
                    item.SubItems.Add(Helper.Format(exoplanet.Star.Property.SPType));
                    item.SubItems.Add(Helper.Format(exoplanet.Star.Property.Mass));
                    item.SubItems.Add(Helper.Format(exoplanet.Star.Property.Radius));
                    item.SubItems.Add(Helper.Format(exoplanet.Star.Property.Distance));
                    item.SubItems.Add(Helper.Format(exoplanet.Star.Property.Age));
                    item.SubItems.Add(Helper.FormatHMS(exoplanet.Star.RightAccession));
                    item.SubItems.Add(Helper.FormatHMS(exoplanet.Star.Declination));
                    item.Tag = exoplanet;

                    items.Add(item);
                }
            }

            Text = "Exoplanet Library" + (XmlFileName.Length > 0 ? " - " + XmlFileName : string.Empty);

            if (listView != null)
            {
                listView.Items.AddRange(items.ToArray());
                listView.EndUpdate();
            }
        }