private void LoadComplexControlEntries(XmlNode complexControlEntriesNode, ComplexControlBody complexBody) { using (this.StackFrame(complexControlEntriesNode)) { int entryIndex = 0; foreach (XmlNode n in complexControlEntriesNode.ChildNodes) { if (MatchNodeName(n, XmlTags.ComplexEntryNode)) { ComplexControlEntryDefinition cced = LoadComplexControlEntryDefinition(n, entryIndex++); if (cced == null) { //Error at XPath {0} in file {1}: {2} failed to load. this.ReportError(StringUtil.Format(FormatAndOutXmlLoadingStrings.LoadTagFailed, ComputeCurrentXPath(), FilePath, XmlTags.ComplexEntryNode)); complexBody.defaultEntry = null; return; // fatal error } // determine if we have a default entry and if it's already set if (cced.appliesTo == null) { if (complexBody.defaultEntry == null) { complexBody.defaultEntry = cced; } else { //Error at XPath {0} in file {1}: There cannot be more than one default {2}. this.ReportError(StringUtil.Format(FormatAndOutXmlLoadingStrings.TooManyDefaultShapeEntry, ComputeCurrentXPath(), FilePath, XmlTags.ComplexEntryNode)); complexBody.defaultEntry = null; return; // fatal error } } else { complexBody.optionalEntryList.Add(cced); } } else { this.ProcessUnknownNode(n); } } if (complexBody.defaultEntry == null) { //Error at XPath {0} in file {1}: There must be at least one default {2}. this.ReportError(StringUtil.Format(FormatAndOutXmlLoadingStrings.NoDefaultShapeEntry, ComputeCurrentXPath(), FilePath, XmlTags.ComplexEntryNode)); } } }
private ComplexControlEntryDefinition LoadComplexControlEntryDefinition(XmlNode complexControlEntryNode, int index) { using (this.StackFrame(complexControlEntryNode, index)) { bool appliesToNodeFound = false; // cardinality 0..1 bool bodyNodeFound = false; // cardinality 1 ComplexControlEntryDefinition cced = new ComplexControlEntryDefinition(); foreach (XmlNode n in complexControlEntryNode.ChildNodes) { if (MatchNodeName(n, XmlTags.EntrySelectedByNode)) { if (appliesToNodeFound) { this.ProcessDuplicateNode(n); return(null); //fatal } appliesToNodeFound = true; // optional section cced.appliesTo = LoadAppliesToSection(n, true); } else if (MatchNodeName(n, XmlTags.ComplexItemNode)) { if (bodyNodeFound) { this.ProcessDuplicateNode(n); return(null); //fatal } bodyNodeFound = true; cced.itemDefinition.formatTokenList = LoadComplexControlTokenListDefinitions(n); } else { this.ProcessUnknownNode(n); } } if (cced.itemDefinition.formatTokenList == null) { //MissingNode=Error at XPath {0} in file {1}: Missing Node {2}. this.ReportError(StringUtil.Format(FormatAndOutXmlLoadingStrings.MissingNode, ComputeCurrentXPath(), FilePath, XmlTags.ComplexItemNode)); return(null); } return(cced); } }
private ComplexControlEntryDefinition LoadComplexControlEntryDefinition(System.Xml.XmlNode complexControlEntryNode, int index) { using (base.StackFrame(complexControlEntryNode, index)) { bool flag = false; bool flag2 = false; ComplexControlEntryDefinition definition = new ComplexControlEntryDefinition(); foreach (System.Xml.XmlNode node in complexControlEntryNode.ChildNodes) { if (base.MatchNodeName(node, "EntrySelectedBy")) { if (flag) { base.ProcessDuplicateNode(node); return null; } flag = true; definition.appliesTo = this.LoadAppliesToSection(node, true); } else if (base.MatchNodeName(node, "CustomItem")) { if (flag2) { base.ProcessDuplicateNode(node); return null; } flag2 = true; definition.itemDefinition.formatTokenList = this.LoadComplexControlTokenListDefinitions(node); } else { base.ProcessUnknownNode(node); } } if (definition.itemDefinition.formatTokenList == null) { base.ReportError(StringUtil.Format(FormatAndOutXmlLoadingStrings.MissingNode, new object[] { base.ComputeCurrentXPath(), base.FilePath, "CustomItem" })); return null; } return definition; } }
private ComplexControlEntryDefinition LoadComplexControlEntryDefinitionFromObjectModel(CustomControlEntry entry, int viewIndex, string typeName) { var cced = new ComplexControlEntryDefinition(); if (entry.SelectedBy != null) { cced.appliesTo = LoadAppliesToSectionFromObjectModel(entry.SelectedBy.TypeNames, entry.SelectedBy.SelectionCondition); } foreach (var item in entry.CustomItems) { cced.itemDefinition.formatTokenList.Add(LoadFormatTokenFromObjectModel(item, viewIndex, typeName)); } return cced; }
internal CustomControlEntry(ComplexControlEntryDefinition entry) { if (entry.appliesTo != null) { SelectedBy = EntrySelectedBy.Get(entry.appliesTo.referenceList); } CustomItems = new List<CustomItemBase>(); foreach (var tok in entry.itemDefinition.formatTokenList) { CustomItems.Add(CustomItemBase.Create(tok)); } }
private void ExecuteFormatControlBody(TraversalInfo level, PSObject so, ComplexControlBody complexBody, List <FormatValue> formatValueList) { ComplexControlEntryDefinition activeComplexControlEntryDefinition = this.GetActiveComplexControlEntryDefinition(complexBody, so); this.ExecuteFormatTokenList(level, so, activeComplexControlEntryDefinition.itemDefinition.formatTokenList, formatValueList); }
private ComplexControlEntryDefinition LoadComplexControlEntryDefinition(XmlNode complexControlEntryNode, int index) { using (this.StackFrame(complexControlEntryNode, index)) { bool appliesToNodeFound = false; // cardinality 0..1 bool bodyNodeFound = false; // cardinality 1 ComplexControlEntryDefinition cced = new ComplexControlEntryDefinition(); foreach (XmlNode n in complexControlEntryNode.ChildNodes) { if (MatchNodeName(n, XmlTags.EntrySelectedByNode)) { if (appliesToNodeFound) { this.ProcessDuplicateNode(n); return null; //fatal } appliesToNodeFound = true; // optional section cced.appliesTo = LoadAppliesToSection(n, true); } else if (MatchNodeName(n, XmlTags.ComplexItemNode)) { if (bodyNodeFound) { this.ProcessDuplicateNode(n); return null; //fatal } bodyNodeFound = true; cced.itemDefinition.formatTokenList = LoadComplexControlTokenListDefinitions(n); } else { this.ProcessUnknownNode(n); } } if (cced.itemDefinition.formatTokenList == null) { //MissingNode=Error at XPath {0} in file {1}: Missing Node {2}. this.ReportError(StringUtil.Format(FormatAndOutXmlLoadingStrings.MissingNode, ComputeCurrentXPath(), FilePath, XmlTags.ComplexItemNode)); return null; } return cced; } }