protected GeneratorContext(GeneratorContext context)
 {
     Name = context.Name;
     FullName = context.FullName;
     Metadata = context.Metadata;
     HtmlAttributes = new RouteValueDictionary(context.HtmlAttributes);
 }
        public virtual IEnumerable<NestedTagBuilder> GenerateForEnum(GeneratorContext context)
        {
            Setup(context);


            var tags = new List<NestedTagBuilder>();
            foreach (var enumName in Enum.GetNames(Context.Metadata.ModelType))
            {
                var tagBuilder = CreatePrimaryTag("input");
                tagBuilder.MergeAttribute("type", "radio", true);
                if (!string.IsNullOrEmpty(Context.Metadata.Description))
                    tagBuilder.MergeAttribute("title", Context.Metadata.Description);


                if (GetValue() == enumName)
                    tagBuilder.MergeAttribute("checked", "checked");


                var label = new NestedTagBuilder("label");
                var title = new NestedTagBuilder("span");
                title.SetInnerText(LocalizedStringProvider.GetEnumString(Context.Metadata.ModelType, enumName));
                label.AddChild(tagBuilder);
                label.AddChild(title);

                tags.Add(label);
            }

            return tags;
        }
        public virtual IEnumerable<NestedTagBuilder> GenerateForEnum(GeneratorContext context)
        {
            Setup(context);

            var selectTag = CreatePrimaryTag("select");
            if (!string.IsNullOrEmpty(Context.Metadata.Description))
                selectTag.MergeAttribute("title", Context.Metadata.Description);

            foreach (var enumName in Enum.GetNames(Context.Metadata.ModelType))
            {
                var tagBuilder = new NestedTagBuilder("option");
                tagBuilder.MergeAttribute("value", enumName, true);
                if (GetValue() == enumName)
                    tagBuilder.MergeAttribute("selected", "selected");


                var title = LocalizedStringProvider.GetEnumString(Context.Metadata.ModelType, enumName);
                tagBuilder.SetInnerText(title);

                selectTag.AddChild(tagBuilder);
            }

            return new[] {selectTag};
        }
 /// <summary>
 /// I know, really. Setup/Init methods are a pain and spawn of satan and all that. But I couldn't figure out a  better solution.
 /// </summary>
 /// <param name="context"></param>
 protected virtual void Setup(GeneratorContext context)
 {
     Context = context;
 }
 /// <summary>
 /// Generate HTML tags for a property
 /// </summary>
 /// <param name="context">Context specific information</param>
 /// <returns>Generated HTML tags</returns>
 public IEnumerable<NestedTagBuilder> Generate(GeneratorContext context)
 {
     Setup(context);
     return GenerateTags();
 }
 /// <summary>
 /// Initializes a new instance of the <see cref="SelectContext"/> class.
 /// </summary>
 /// <param name="context">Base context.</param>
 /// <param name="formatter"><see cref="Formatter"/></param>
 /// <param name="listItems"><seealso cref="ListItems"/></param>
 public SelectContext(GeneratorContext context, ISelectItemFormatter formatter, IEnumerable listItems) : base(context)
 {
     Formatter = formatter;
     ListItems = listItems;
 }
 /// <summary>
 /// Initializes a new instance of the <see cref="SelectContext"/> class.
 /// </summary>
 /// <param name="context">Base context.</param>
 /// <param name="formatter"><see cref="Formatter"/></param>
 /// <param name="listItems"><seealso cref="ListItems"/></param>
 public SelectContext(GeneratorContext context, ISelectItemFormatter formatter, IEnumerable listItems)
     : base(context)
 {
     Formatter = formatter;
     ListItems = listItems;
 }