/// <summary> /// Create menu listing all indictors with click events. /// - Indicators having category existed in indicatorCat table are grouped to that category /// - Indicators having category NOT existed in indicatorCat are placed under the category menus /// </summary> /// <param name="Metas">Meta infomation of plug-in indicators</param> /// <param name="toMenu">Menu where indicator menus are added</param> /// <param name="ShowIndicatorHandler">Function fired on Click Event</param> private static void CreateIndicatorMenu(common.DictionaryList Metas, ToolStripMenuItem toMenu, System.EventHandler ShowIndicatorHandler) { for (int idx1 = 0; idx1 < Data.myIndicatorCatList.Count; idx1++) { Meta[] tmpMetas = Libs.FindMetaByCat(Metas, Data.myIndicatorCatList[idx1].Code); if (tmpMetas == null || tmpMetas.Length == 0) { continue; } ToolStripMenuItem catMenuItem = new ToolStripMenuItem(); catMenuItem.Name = toMenu.Name + "-group-" + Data.myIndicatorCatList[idx1].Code; catMenuItem.Text = Data.myIndicatorCatList[idx1].Description; toMenu.DropDownItems.Add(catMenuItem); for (int idx2 = 0; idx2 < tmpMetas.Length; idx2++) { ToolStripMenuItem menuItem = new ToolStripMenuItem(); menuItem.Name = toMenu.Name + "-" + tmpMetas[idx2].ClassType.Name; menuItem.Tag = tmpMetas[idx2].ClassType.Name; menuItem.Text = tmpMetas[idx2].Name; menuItem.Click += new System.EventHandler(ShowIndicatorHandler); catMenuItem.DropDownItems.Add(menuItem); } } Meta meta; for (int idx2 = 0; idx2 < Metas.Values.Length; idx2++) { meta = (Meta)Metas.Values[idx2]; if (Data.myIndicatorCatList.Find(meta.Category.Trim()) != null) { continue; } ToolStripMenuItem menuItem = new ToolStripMenuItem(); menuItem.Name = toMenu.Name + "-group-" + meta.ClassType.Name; menuItem.Tag = meta.ClassType.Name; menuItem.Text = meta.Name; toMenu.DropDownItems.Add(menuItem); menuItem.Click += new System.EventHandler(ShowIndicatorHandler); } }
/// <summary> /// Find/Get all indicator of the same category /// </summary> /// <param name="name">What category to find/get</param> /// <returns></returns> public static Meta[] FindMetaByCat(string name) { return(Libs.FindMetaByCat(Data.Metas, name)); }
/// <summary> /// Find/Get indicator by name. Return null if not found /// </summary> /// <param name="name">Indicator name to find</param>/// /// <returns></returns> public static Meta FindMetaByName(string name) { return(Libs.FindMetaByName(Data.Metas, name)); }