コード例 #1
0
        /// <summary>
        /// Load all kerbals from KML Tree.
        /// </summary>
        /// <param name="master">The GuiTreeManager that manages the loaded tree</param>
        public void Load(GuiTreeManager master)
        {
            Kerbals.Clear();
            KerbalsList.Items.Clear();
            KerbalsDetails.Items.Clear();

            List <KmlKerbal> list = master.GetFlatList <KmlKerbal>();

            foreach (KmlKerbal kerbal in list)
            {
                if (kerbal.Origin == KmlKerbal.KerbalOrigin.Roster)
                {
                    Kerbals.Add(kerbal);
                }
            }

            // Sort the list
            Kerbals = Kerbals.OrderBy(x => x.Name).ToList();

            foreach (KmlKerbal kerbal in Kerbals)
            {
                GuiKerbalsNode node = new GuiKerbalsNode(kerbal);
                node.MouseDoubleClick += KerbalsNode_MouseDoubleClick;
                KerbalsList.Items.Add(node);
            }

            // Apply current filter and count visible items
            UpdateVisibility();
        }
コード例 #2
0
ファイル: GuiKebalsManager.cs プロジェクト: tophyr/KML
        private void KerbalsList_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            // Store currently selected attribute, in case we just unselect + select the current item to refresh
            if (KerbalsList.SelectedItem == null)
            {
                // We're unselcting, this is the old data we want to restore in future call of this event
                GuiTreeAttrib attrib = (KerbalsDetails.SelectedItem as GuiTreeAttrib);
                if (attrib == null)
                {
                    _oldSelectedAttrib         = null;
                    _alternativeSelectedAttrib = null;
                }
                else
                {
                    _oldSelectedAttrib = attrib.DataAttrib;
                    int i = KerbalsDetails.SelectedIndex;
                    if (i < KerbalsDetails.Items.Count - 1)
                    {
                        _alternativeSelectedAttrib = (KerbalsDetails.Items[i + 1] as GuiTreeAttrib).DataAttrib;
                    }
                    else if (i > 0)
                    {
                        _alternativeSelectedAttrib = (KerbalsDetails.Items[i - 1] as GuiTreeAttrib).DataAttrib;
                    }
                    else
                    {
                        _alternativeSelectedAttrib = null;
                    }
                }
            }

            KerbalsDetails.Items.Clear();
            if (KerbalsList.SelectedItem != null)
            {
                GuiKerbalsNode Node = (GuiKerbalsNode)KerbalsList.SelectedItem;
                KerbalsDetails.ContextMenu = Node.ContextMenu;
                foreach (KmlAttrib attrib in Node.DataKerbal.Attribs)
                {
                    KerbalsDetails.Items.Add(new GuiTreeAttrib(attrib));
                }
                _oldSelectedKerbal = Node.DataKerbal;

                // Restore attrib selection
                if (Node.DataKerbal == _oldSelectedKerbal && _oldSelectedAttrib != null)
                {
                    if (!Select(_oldSelectedAttrib))
                    {
                        Select(_alternativeSelectedAttrib);
                    }
                    if (KerbalsDetails.SelectedItem != null)
                    {
                        (KerbalsDetails.SelectedItem as ListViewItem).Focus();
                    }
                }
            }
            else
            {
                KerbalsDetails.ContextMenu = null;
            }
        }
コード例 #3
0
 private void KerbalsList_SelectionChanged(object sender, SelectionChangedEventArgs e)
 {
     KerbalsDetails.Items.Clear();
     if (KerbalsList.SelectedItem != null)
     {
         GuiKerbalsNode Node = (GuiKerbalsNode)KerbalsList.SelectedItem;
         foreach (KmlAttrib attrib in Node.DataKerbal.Attribs)
         {
             KerbalsDetails.Items.Add(attrib);
         }
     }
 }