예제 #1
0
        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));
                }
            }
        }
예제 #2
0
        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);
            }
        }
예제 #3
0
 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;
     }
 }
예제 #4
0
 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));
            }
        }
예제 #6
0
        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;
            }
        }