示例#1
0
        private List<TriggeringNodeDefinition> BuildTriggeringNodeDefsForStyle(Style s, TriggerCollection triggers)
        {
            List<TriggeringNodeDefinition> results = new List<TriggeringNodeDefinition>();
            TriggeringNodeDefinition tnd = null;

            foreach (XmlNodeInformation ni in s.GetProperties())
            {
                List<TriggeringNodeDefinition> thisNodetriggers =  triggers.WhatDoesThisNodeTrigger(ni, null, null);

                if ((thisNodetriggers != null) && (thisNodetriggers.Count > 0))
                {
                    foreach (TriggeringNodeDefinition etnd in thisNodetriggers)
                    {
                        if (etnd.GetDescriptors().Count > 1)
                            throw new InvalidOperationException(); // we weren't expecting this
                        EffectDescriptor td = etnd.GetDescriptors()[0].Clone();
                        if (ni.GetAttributeValue("val") == "0")
                            td.DefaultPolarity = false;
                        if (tnd != null)
                        {
                            if (tnd.ContentType == td.ContentType)
                                tnd.AddDescriptor(td);
                            else
                                tnd = null;
                        }

                        if (tnd == null)
                        {
                            AttributeFilter af = new ValueAttributeEqualityFilter(s.Id);
                            tnd = new TriggeringNodeDefinition(NamespaceId.w, s.GetReferenceNodeName(), af, td);
                            results.Add(tnd);
                        }
                    }
                }
            }

            return results;
        }
示例#2
0
        internal List<TriggeringNodeDefinition> GenerateStyleTriggers(TriggerCollection triggers)
        {
            triggers.UpdateStringsUsingNametable(CommonNamespaces.NameTable);

            List<TriggeringNodeDefinition> results = new List<TriggeringNodeDefinition>();

            foreach (Style s in m_styles.Values)
            {
                results.AddRange(BuildTriggeringNodeDefsForStyle(s, triggers));
            }


            return results;
        }