public override void AppendSubBuilder(ControlBuilder subBuilder)
        {
            DeviceSpecificChoiceTemplateBuilder tplBuilder =
                subBuilder as DeviceSpecificChoiceTemplateBuilder;

            if (tplBuilder != null)
            {
                // Called to add a template. Insert an intermediate control,
                // by creating and adding its builder.

                ListDictionary dict = new ListDictionary();

                // Add the template's name as a Name attribute for the control.
                dict["Name"] = tplBuilder.TemplateName;

                // 1 and "xxxx" are bogus filename/line number values.
                ControlBuilder container = ControlBuilder.CreateBuilderFromType(
                    Parser, this,
                    typeof(DeviceSpecificChoiceTemplateContainer),
                    "Templates",
                    null, dict, 1, "xxxx");
                base.AppendSubBuilder(container);

                // Now, append the template builder into the new intermediate builder.

                container.AppendSubBuilder(subBuilder);
            }
            else
            {
                base.AppendSubBuilder(subBuilder);
            }
        }
예제 #2
0
        public void Deny_Unrestricted()
        {
            ControlBuilder cb = new ControlBuilder();

            Assert.IsNull(cb.ControlType, "ControlType");
            Assert.IsFalse(cb.HasAspCode, "HasAspCode");
            cb.ID = "mono";
            Assert.AreEqual("mono", cb.ID, "ID");
            Assert.AreEqual(typeof(Control), cb.NamingContainerType, "NamingContainerType");
            Assert.IsNull(cb.TagName, "TagName");
            Assert.IsTrue(cb.AllowWhitespaceLiterals(), "AllowWhitespaceLiterals");
            cb.AppendLiteralString("mono");
            cb.AppendSubBuilder(cb);
            cb.CloseControl();
            Assert.IsNull(cb.GetChildControlType(null, null), "GetChildControlType");
            Assert.IsTrue(cb.HasBody(), "HasBody");
            Assert.IsFalse(cb.HtmlDecodeLiterals(), "HtmlDecodeLiterals");
            cb.Init(null, cb, typeof(TemplateBuilder), "span", "mono", null);
            Assert.IsFalse(cb.NeedsTagInnerText(), "NeedsTagInnerText");
            //cb.OnAppendToParentBuilder (null);
            cb.SetTagInnerText("mono");

            cb = ControlBuilder.CreateBuilderFromType(null, cb, typeof(TemplateBuilder), "span", "mono", null, 0, String.Empty);
            Assert.IsNotNull(cb, "CreateBuilderFromType");
        }
예제 #3
0
        public void AppendSubBuilder()
        {
            var bldr    = new MultiViewControlBuilder();
            var subbldr = new ControlBuilder();

            bldr.AppendSubBuilder(subbldr);

            subbldr = ControlBuilder.CreateBuilderFromType(null, null, typeof(TextBox), "TextBox", null, null, 0, "dummy");
            bldr.AppendSubBuilder(subbldr);

            subbldr = ControlBuilder.CreateBuilderFromType(null, null, typeof(View), "View", null, null, 0, "dummy");
            bldr.AppendSubBuilder(subbldr);

            subbldr = ControlBuilder.CreateBuilderFromType(null, null, typeof(string), "Literal", null, null, 0, "dummy");
            bldr.AppendSubBuilder(subbldr);
        }
예제 #4
0
 internal /*public*/ void AddDataBinding(ControlBuilder builder)
 {
     if (IsInTag)
     {
         TagInnerTextElements.Add(builder);
     }
     else
     {
         ControlBuilder newBuilder = ControlBuilder.CreateBuilderFromType(
             _parser, _parentBuilder,
             typeof(LiteralText), typeof(LiteralText).Name,
             null,
             GetPropertyDictionary(CurrentFormat, false, null),
             _lineNumber, _fileName);
         _parentBuilder.AppendSubBuilder(newBuilder);
         newBuilder.AppendSubBuilder(builder);
         OnAfterDataBoundLiteral();
     }
 }
예제 #5
0
        protected override void ProcessElement(LiteralElement element)
        {
            ControlBuilder subBuilder;

            switch (element.Type)
            {
            case LiteralElementType.Text:
                Debug.Assert(_tagInnerTextElements == null);
                subBuilder = ControlBuilder.CreateBuilderFromType(
                    _parser, _parentBuilder,
                    typeof(LiteralText), typeof(LiteralText).Name,
                    null,
                    GetPropertyDictionary(element.Format, element.BreakAfter, null),
                    _lineNumber, _fileName);
                break;

            case LiteralElementType.Anchor:
            {
                String linkUrl = (String)element.GetAttribute("href");
                subBuilder = ControlBuilder.CreateBuilderFromType(
                    _parser, _parentBuilder,
                    typeof(LiteralLink), typeof(LiteralLink).Name,
                    null,
                    GetPropertyDictionary(element.Format, element.BreakAfter, linkUrl),
                    _lineNumber, _fileName);
                AddTagInnerTextElements(subBuilder);
                break;
            }

            default:
                return;
            }

            _parentBuilder.AppendSubBuilder(subBuilder);

            if (element.Text != String.Empty)
            {
                subBuilder.AppendLiteralString(element.Text);
            }
        }