/// <summary> /// Defines node's state. /// </summary> /// <param name="node"></param> /// <param name="child"></param> static void DefineState(FeatureNode node, FeatureNode child) { child.Enabled = node.Checked; if (node.Checked) { child.State = child.Mandatory ? FeatureState.Mandatory : FeatureState.Optional; if (child.Mandatory) { child.Check(true, false); } } else { child.Check(false, false); child.State = FeatureState.Undefined; } }
/// <summary> /// Selects child features. /// </summary> /// <param name="node"></param> /// <param name="features"></param> static void SelectFeatures(FeatureNode node, IList <Feature> features) { node.Check(features.Contains(node.Feature), false); foreach (FeatureNode child in node.Nodes) { DefineState(node, child); SelectFeatures(child, features); } }