Exemple #1
0
        CssBox CreateSelectBox(DomElement domE,
                               CssBox parentBox,
                               BoxSpec spec,
                               LayoutFarm.RootGraphic rootgfx, HtmlHost host)
        {
            //https://www.w3schools.com/html/html_form_elements.asp

            //1. as drop-down list
            //2. as list-box


            WebDom.Impl.HtmlElement htmlElem = ((WebDom.Impl.HtmlElement)domE);
            htmlElem.HasSpecialPresentation = true;
            //
            LayoutFarm.HtmlWidgets.HingeBox hingeBox = new LayoutFarm.HtmlWidgets.HingeBox(100, 30); //actual controller
            foreach (DomNode childNode in domE.GetChildNodeIterForward())
            {
                WebDom.Impl.HtmlElement childElem = childNode as WebDom.Impl.HtmlElement;
                if (childElem != null)
                {
                    //find a value
                    if (childElem.WellknownElementName == WellKnownDomNodeName.option)
                    {
                        DomAttribute domAttr = childElem.FindAttribute("value");
                        if (domAttr != null)
                        {
                            childElem.Tag = domAttr.Value;
                        }
                    }
                    hingeBox.AddItem(childElem);
                }
            }

            LayoutFarm.WebDom.Impl.HtmlElement hingeBoxDom = (LayoutFarm.WebDom.Impl.HtmlElement)hingeBox.GetPresentationDomNode((WebDom.Impl.HtmlDocument)domE.OwnerDocument);
            CssBox cssHingeBox = host.CreateBox(parentBox, hingeBoxDom, true); //create and append to the parentBox

            //
            hingeBoxDom.SetSubParentNode(domE);
            cssHingeBox.IsReplacement          = true;
            htmlElem.SpecialPresentationUpdate = (o) =>
            {
                if (hingeBox.NeedUpdateDom)
                {
                    cssHingeBox.Clear();
                    host.UpdateChildBoxes(hingeBoxDom, false);
                }
            };
#if DEBUG
            //cssHingeBox.dbugMark1 = 1;
#endif
            return(cssHingeBox);
        }