public static TaxonIds Compute(TaxonTreeNode _node) { TaxonIds Data = new TaxonIds(); _node.ParseNodeDesc(CheckIds, Data); Data.BuildRanges(); return(Data); }
public static UInt32 GetUnusedTolId(TaxonTreeNode _node) { TaxonIds Data = new TaxonIds() { MaxTolId = FirstTolID }; _node.ParseNodeDesc(LastTolIds, Data); return(Data.MaxTolId + 1); }
void UpdateButtonID() { if (Edited.Desc.OTTID == 0) { buttonOTT.Text = "Create Id"; } else { buttonOTT.Text = TaxonIds.IdDesc(Edited.Desc.OTTID); } }
private static void LastTolIds(TaxonDesc _desc, object _data) { if (_desc.OTTID >= FirstTolID) { TaxonIds Data = _data as TaxonIds; if (_desc.OTTID > Data.MaxTolId) { Data.MaxTolId = _desc.OTTID; } } }
private static void CheckIds(TaxonDesc _desc, object _data) { if (_desc.OTTID == 0) { (_data as TaxonIds).NoIds.Add(_desc); return; } TaxonIds Data = _data as TaxonIds; if (_desc.OTTID >= FirstTolID) { if (Data.TolIds.ContainsKey(_desc.OTTID)) { Data.Duplicates.Add(new Tuple <TaxonDesc, TaxonDesc>(Data.TolIds[_desc.OTTID], _desc)); return; } Data.TolIds[_desc.OTTID] = _desc; if (_desc.OTTID > Data.MaxTolId) { Data.MaxTolId = _desc.OTTID; } if (_desc.OTTID < Data.MinTolId) { Data.MinTolId = _desc.OTTID; } } else { if (Data.Ids.ContainsKey(_desc.OTTID)) { Data.Duplicates.Add(new Tuple <TaxonDesc, TaxonDesc>(Data.Ids[_desc.OTTID], _desc)); return; } Data.Ids[_desc.OTTID] = _desc; if (_desc.OTTID > Data.MaxId) { Data.MaxId = _desc.OTTID; } if (_desc.OTTID < Data.MinId) { Data.MinId = _desc.OTTID; } } }
//--------------------------------------------------------------------------------- private void ButtonOTT_Click(object sender, EventArgs e) { if (Edited.Desc.OTTID == 0) { string message = "Create TOL ID for " + (string.IsNullOrEmpty(Edited.Desc.RefMultiName.Main) ? "that taxon" : Edited.Desc.RefMultiName.Main) + "?"; if (MessageBox.Show(message, "Create ID", MessageBoxButtons.OKCancel, MessageBoxIcon.Question) != DialogResult.OK) { return; } Edited.Desc.OTTID = TaxonIds.GetUnusedTolId(TaxonUtils.OriginalRoot); UpdateButtonID(); } else if (!TaxonIds.IsTolID(Edited.Desc.OTTID)) { string url = "https://tree.opentreeoflife.org/opentree/argus/ottol@" + Edited.Desc.OTTID.ToString(); Process.Start(url); } }