in DiagManager/DiagClasses/DiagTreeMgr.cs [146:248]
public static void PopulateTree<T> (TreeView tree, List<T> treelist, UserSetting setting)
{
TreeNodeCollection tc = tree.Nodes;
tree.AfterCheck -= OnCheck;
tree.AfterCheck += OnCheck;
if (tc.Count > 0)
{
tree.Nodes.Clear();
}
//sort the list for tree display
treelist.Sort();
foreach (T obj in treelist)
{
DiagCategory cat = obj as DiagCategory;
TreeNode catNode = new TreeNode();
catNode.Name = cat.TreeNodeName;
catNode.Text = cat.TreeNodeText;
catNode.Tag = cat;
if (cat.DiagEventList.Count <=0)
{
continue;
}
cat.DiagEventList.Sort();
bool anyChildChecked = false;
foreach (DiagItem evt in cat.DiagEventList)
{
TreeNode evtNode = new TreeNode();
evtNode.Name = evt.TreeNodeText;
evtNode.Text = evt.TreeNodeText;
bool IsVersionEnabled = false;
bool IsFeatureEanbled = false;
bool IsAnyTemplateEnabled = false;
if (null != evt.EnabledVersions.Find(x => x.Name == setting["Version"] && x.Enabled == true))
{
IsVersionEnabled = true;
}
if (null != evt.EnabledFeatures.Find(x => x.Name == setting["Feature"] && x.Enabled == true))
{
IsFeatureEanbled = true;
}
//foreach (string temp in setting.GetDefaultChoiceByFeatureVersion (setting.Feature, setting.Version).ScenarioList)
foreach (string temp in setting.UserChosenScenarioList)
{
if (null != evt.EnabledTemplate.Find(x => x.Name == temp))
{
IsAnyTemplateEnabled = true;
break;
}
}
if (IsVersionEnabled == true && IsFeatureEanbled == true && IsAnyTemplateEnabled == true)
{
anyChildChecked = true;
evtNode.Checked = true;
}
evtNode.Tag = evt;
if (IsVersionEnabled && IsFeatureEanbled)
{
catNode.Nodes.Add(evtNode);
(evtNode.Tag as DiagItem).IsChecked = evtNode.Checked;
}
}
//don't add if the feature or version doesn't event support any of the events in this event category
if (anyChildChecked == true)
{
catNode.Checked = anyChildChecked;
}
//only add the node if it's for this feature and version
//regardless of template
SetCategoryColor(catNode);
if (catNode.Nodes.Count > 0)
{
(catNode.Tag as DiagItem).IsChecked = catNode.Checked;
tree.Nodes.Add(catNode);
}
}
tree.Refresh();
}