//--------------------------------------------------------------------------------- private void Picture_SetSpeciesAndSubSpecies(TaxonTreeNode _species, int _previousImageIndex) { _CurrentTaxonIsSpecies = true; TaxonBigVignette.Visible = true; TaxonBigVignette.CurrentTaxon = _species; TaxonBigVignette.Tag = _species; List <TaxonTreeNode> speciesList = new List <TaxonTreeNode>(); _species.GetAllChildrenWithImageRecursively(speciesList); //if (TaxonUtils.CurrentFilters.HasFilter(TaxonFilters.FilterAlive)) // speciesList = speciesList.Where(node => node.Desc.IsExtinct).ToList(); if (speciesList.Contains(_species)) { speciesList.Remove(_species); } else { _species = null; } _MultiImages.SetLists(speciesList, _species); _MultiImages.ScrollMode_UpdateOutputImages(); _MultiImages.Visible = true; }
//--------------------------------------------------------------------------------- private void Pictures_SetFamily(TaxonTreeNode _family, TaxonTreeNode _previousSelectedTaxon = null, List <TaxonTreeNode> _previousDisplayedTaxons = null) { _CurrentTaxonIsSpecies = false; TaxonBigVignette.Visible = true; TaxonBigVignette.CurrentTaxon = _family; TaxonBigVignette.Tag = _family; if (DisplayModeForOthers == DisplayModeForOthersEnum.AllWithScroll) { List <TaxonTreeNode> speciesList = new List <TaxonTreeNode>(); _family.GetAllChildrenWithImageRecursively(speciesList); //if (TaxonUtils.CurrentFilters.HasFilter(TaxonFilters.FilterAlive)) // speciesList = speciesList.Where(node => node.Desc.IsExtinct).ToList(); _MultiImages.SetOldList(speciesList); _MultiImages.ScrollMode_UpdateOutputImages(); } else { List <TaxonTreeNode> displayedTaxon = null; if (_previousSelectedTaxon != null) { if (_previousSelectedTaxon == _family) { displayedTaxon = _previousDisplayedTaxons; } /*else if (_previousSelectedTaxon.Desc.HasImage && _previousSelectedTaxon.IsChildOf(_family)) * displayedTaxon = new List<TaxonTreeNode>() { _previousSelectedTaxon };*/ } _MultiImages.ListTaxons = null; int newChildrenNeeded = _NumberInMultiImageControl; if (displayedTaxon != null) { newChildrenNeeded -= displayedTaxon.Count; } List <TaxonTreeNode> newChildren = null; if (newChildrenNeeded > 0) { // build list of taxon with images List <TaxonTreeNode> speciesList = new List <TaxonTreeNode>(); _family.GetAllChildrenWithImageRecursively(speciesList); //if (TaxonUtils.CurrentFilters.HasFilter(TaxonFilters.FilterAlive)) // speciesList = speciesList.Where(node => node.Desc.IsExtinct).ToList(); if (displayedTaxon != null) { foreach (TaxonTreeNode node in displayedTaxon) { speciesList.Remove(node); } } // get random taxons, sort and fill it with null if needed newChildren = TaxonUtils.RandomTaxon(speciesList, newChildrenNeeded); //newChildren.Sort(new Comparison<TaxonTreeNode>(TaxonTreeNode.Compare)); } if (displayedTaxon != null) { if (newChildren != null) { displayedTaxon.AddRange(newChildren); } newChildren = displayedTaxon; } newChildren.Sort(new Comparison <TaxonTreeNode>(TaxonTreeNode.Compare)); while (newChildren.Count < _NumberInMultiImageControl) { newChildren.Add(null); } _MultiImages.SetTaxonList(newChildren); } _MultiImages.Visible = true; }