public override void UpdateSelectItems() { SelectItems.Clear(); pathToSelectItemMap.Clear(); RuleEditingContext context = Parent.RuleEditingContext; if (context == null) { return; } IEnumerable <NamedRule> namedRules = context.GetNamedRuleActivities(); foreach (var namedRule in namedRules) { SelectItem newItem = new SelectItem(namedRule.Name, namedRule.DisplayName, namedRule); RulePoint parent = namedRule.Parent; // Build the hierarchy. HierarchicalSelectItem parentSelectItem = GetSelectItem(namedRule.Parent); parentSelectItem.Children.Add(newItem); } var ruleManager = context.GetRuleSignature().Owner; string rootPath = ruleManager.RootRulePoint.Path; if (pathToSelectItemMap.ContainsKey(rootPath)) { var rootItem = pathToSelectItemMap[rootPath]; foreach (var selectItem in rootItem.Children) { SelectItems.Add(selectItem); } } }
private HierarchicalSelectItem GetSelectItem(RuleBase rule) { if (pathToSelectItemMap.ContainsKey(rule.Path)) { return(pathToSelectItemMap[rule.Path]); } else { HierarchicalSelectItem selectItem = new HierarchicalSelectItem(rule.Name, rule.DisplayName, null); pathToSelectItemMap[rule.Path] = selectItem; if (rule.Parent != null) { HierarchicalSelectItem parentItem = GetSelectItem(rule.Parent); parentItem.Children.Add(selectItem); } return(selectItem); } }