/// <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(); }
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; } }
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); } } }