Esempio n. 1
0
        /// <summary>
        /// Create an element descriptor for the given element.
        /// </summary>
        private static ElementDescriptor CreateElementDescriptor(AttrsXmlParser parser, LayoutXmlParser layoutParser, LayoutElement element)
        {
            var result = new ElementDescriptor(element.Name);
            while (element != null)
            {
                // Get attributes for this element
                var attrs = parser.FindElementDescriptor(element.Name);
                if (attrs != null)
                {
                    foreach (var a in attrs.Attributes)
                    {
                        result.Add(a);
                    }
                }

                // Get super class
                if (string.IsNullOrEmpty(element.SuperClassName))
                    break;
                element = layoutParser.FindElement(element.SuperClassName);
            }

            // Add ViewGroup_Layout
            var extraAttrs = parser.FindElementDescriptor("ViewGroup_Layout");
            if (extraAttrs != null)
                result.AddRange(extraAttrs.Attributes);
            // Add ViewGroup_MarginLayout
            extraAttrs = parser.FindElementDescriptor("ViewGroup_MarginLayout");
            if (extraAttrs != null)
                result.AddRange(extraAttrs.Attributes);

            return result;
        }
Esempio n. 2
0
        /// <summary>
        /// Create an element descriptor.
        /// </summary>
        private static ElementDescriptor CreateDescriptor(AttrsXmlParser parser, string descriptorName, string shortName)
        {
            var source = parser.FindElementDescriptor(descriptorName);
            var result = new ElementDescriptor(shortName);

            if (source != null)
            {
                result.AddRange(source.Attributes);
            }
            return(result);
        }
Esempio n. 3
0
        /// <summary>
        /// Default ctor
        /// </summary>
        internal MenuDescriptors(AttrsXmlParser parser)
        {
            menuDescriptor  = CreateDescriptor(parser, "Menu", "menu");
            itemDescriptor  = CreateDescriptor(parser, "MenuItem", "item");
            groupDescriptor = CreateDescriptor(parser, "MenuGroup", "group");

            menuDescriptor.Add(itemDescriptor);
            menuDescriptor.Add(groupDescriptor);
            itemDescriptor.Add(menuDescriptor);
            groupDescriptor.Add(itemDescriptor);
        }
Esempio n. 4
0
        /// <summary>
        /// Lookup an element descriptor by the given short name.
        /// </summary>
        /// <returns>Null if not found</returns>
        private ElementDescriptor LoadElementDescriptor(string shortName)
        {
            var element = document.Root.Elements("declare-styleable").FirstOrDefault(x => GetName(x) == shortName);

            if (element == null)
            {
                return(null);
            }
            var result = new ElementDescriptor(shortName);

            foreach (var attr in element.Elements("attr"))
            {
                result.Add(ParseAttr(attr));
            }
            return(result);
        }
Esempio n. 5
0
        /// <summary>
        /// Create an element descriptor for the given element.
        /// </summary>
        private static ElementDescriptor CreateElementDescriptor(AttrsXmlParser parser, LayoutXmlParser layoutParser, LayoutElement element)
        {
            var result = new ElementDescriptor(element.Name);

            while (element != null)
            {
                // Get attributes for this element
                var attrs = parser.FindElementDescriptor(element.Name);
                if (attrs != null)
                {
                    foreach (var a in attrs.Attributes)
                    {
                        result.Add(a);
                    }
                }

                // Get super class
                if (string.IsNullOrEmpty(element.SuperClassName))
                {
                    break;
                }
                element = layoutParser.FindElement(element.SuperClassName);
            }

            // Add ViewGroup_Layout
            var extraAttrs = parser.FindElementDescriptor("ViewGroup_Layout");

            if (extraAttrs != null)
            {
                result.AddRange(extraAttrs.Attributes);
            }
            // Add ViewGroup_MarginLayout
            extraAttrs = parser.FindElementDescriptor("ViewGroup_MarginLayout");
            if (extraAttrs != null)
            {
                result.AddRange(extraAttrs.Attributes);
            }

            return(result);
        }
Esempio n. 6
0
 /// <summary>
 /// Add the given element as possible child element for this element.
 /// </summary>
 internal void Add(ElementDescriptor child)
 {
     children[child.Name] = child;
 }
 /// <summary>
 /// Create completions for attribute names.
 /// </summary>
 private IEnumerable<XmlResourceCompletion> CreateAttributeCompletions(ElementDescriptor elementDescriptor)
 {
     var provider = DescriptorProvider;
     if (provider == null)
         return Enumerable.Empty<XmlResourceCompletion>();
     var names = elementDescriptor.Attributes.Select(x => x.Name);
     var prefix = "android";
     return names.OrderBy(x => x).Select(x => new XmlResourceCompletion(glyphService, x, string.Format("{0}:{1}=\"\"", prefix, x), x, 1, XmlResourceCompletionType.Attribute));
 }
Esempio n. 8
0
 /// <summary>
 /// Add the given element as possible child element for this element.
 /// </summary>
 internal void Add(ElementDescriptor child)
 {
     children[child.Name] = child;
 }
Esempio n. 9
0
 /// <summary>
 /// Lookup an element descriptor by the given short name.
 /// </summary>
 /// <returns>Null if not found</returns>
 private ElementDescriptor LoadElementDescriptor(string shortName)
 {
     var element = document.Root.Elements("declare-styleable").FirstOrDefault(x => GetName(x) == shortName);
     if (element == null)
         return null;
     var result = new ElementDescriptor(shortName);
     foreach (var attr in element.Elements("attr"))
     {
         result.Add(ParseAttr(attr));
     }
     return result;
 }