コード例 #1
0
        protected internal override IRenderer CreateFlatRenderer()
        {
            AbstractSelectField   selectField = (AbstractSelectField)modelElement;
            IList <IBlockElement> options     = selectField.GetOptions();
            Div optionsContainer = new Div();

            foreach (IBlockElement option in options)
            {
                optionsContainer.Add(option);
            }
            IRenderer rendererSubTree;

            if (optionsContainer.GetChildren().IsEmpty())
            {
                Paragraph pStub = new Paragraph("\u00A0").SetMargin(0);
                pStub.SetProperty(Property.OVERFLOW_X, OverflowPropertyValue.VISIBLE);
                pStub.SetProperty(Property.OVERFLOW_Y, OverflowPropertyValue.VISIBLE);
                pStub.SetProperty(Html2PdfProperty.FORM_FIELD_SELECTED, false);
                // applying this property for the sake of finding this element as option
                optionsContainer.Add(pStub);
                rendererSubTree = optionsContainer.CreateRendererSubTree();
            }
            else
            {
                rendererSubTree = optionsContainer.CreateRendererSubTree();
                IList <IRenderer> selectedOptions = GetSelectedOptions(rendererSubTree);
                foreach (IRenderer selectedOption in selectedOptions)
                {
                    ApplySelectedStyle(selectedOption);
                }
            }
            return(rendererSubTree);
        }
コード例 #2
0
        // TODO DEVSIX-1901
        private IRenderer CreateFlatRenderer(bool addAllOptionsToChildren)
        {
            AbstractSelectField   selectField = (AbstractSelectField)modelElement;
            IList <IBlockElement> options     = selectField.GetOptions();
            Div pseudoContainer = new Div();

            foreach (IBlockElement option in options)
            {
                pseudoContainer.Add(option);
            }
            IList <Paragraph> allOptions;
            IRenderer         pseudoRendererSubTree = pseudoContainer.CreateRendererSubTree();

            if (addAllOptionsToChildren)
            {
                allOptions = GetAllOptionsFlatElements(pseudoRendererSubTree);
            }
            else
            {
                allOptions = GetSingleSelectedOptionFlatRenderer(pseudoRendererSubTree);
            }
            if (allOptions.IsEmpty())
            {
                allOptions.Add(CreateComboBoxOptionFlatElement());
            }
            pseudoContainer.GetChildren().Clear();
            foreach (Paragraph option in allOptions)
            {
                pseudoContainer.Add(option);
            }
            AccessiblePropHelper.TrySetLangAttribute(pseudoContainer, GetLang());
            IRenderer rendererSubTree = pseudoContainer.CreateRendererSubTree();

            return(rendererSubTree);
        }
コード例 #3
0
 /// <summary>
 /// Creates a new
 /// <see cref="SelectFieldComboBoxRenderer"/>
 /// instance.
 /// </summary>
 /// <param name="modelElement">the model element</param>
 public SelectFieldComboBoxRenderer(AbstractSelectField modelElement)
     : base(modelElement)
 {
     SetProperty(Property.VERTICAL_ALIGNMENT, VerticalAlignment.MIDDLE);
     SetProperty(Property.OVERFLOW_X, OverflowPropertyValue.HIDDEN);
     SetProperty(Property.OVERFLOW_Y, OverflowPropertyValue.HIDDEN);
     minMaxWidthRenderer = CreateFlatRenderer(true);
 }
コード例 #4
0
 /// <summary>
 /// Creates a new
 /// <see cref="AbstractSelectFieldRenderer"/>
 /// instance.
 /// </summary>
 /// <param name="modelElement">the model element</param>
 public AbstractSelectFieldRenderer(AbstractSelectField modelElement)
     : base(modelElement)
 {
     AddChild(CreateFlatRenderer());
     if (!IsFlatten())
     {
         // TODO DEVSIX-1901
         ILog logger = LogManager.GetLogger(typeof(iText.Html2pdf.Attach.Impl.Layout.Form.Renderer.AbstractSelectFieldRenderer
                                                   ));
         logger.Warn(iText.Html2pdf.LogMessageConstant.ACROFORM_NOT_SUPPORTED_FOR_SELECT);
         SetProperty(Html2PdfProperty.FORM_FIELD_FLATTEN, true);
     }
 }
コード例 #5
0
 /// <summary>
 /// Creates a new
 /// <see cref="SelectTagWorker"/>
 /// instance.
 /// </summary>
 /// <param name="element">the element</param>
 /// <param name="context">the context</param>
 public SelectTagWorker(IElementNode element, ProcessorContext context) {
     String name = context.GetFormFieldNameResolver().ResolveFormName(element.GetAttribute(AttributeConstants.NAME
         ));
     bool multipleAttr = element.GetAttribute(AttributeConstants.MULTIPLE) != null;
     int? sizeAttr = CssUtils.ParseInteger(element.GetAttribute(AttributeConstants.SIZE));
     int size = GetSelectSize(sizeAttr, multipleAttr);
     if (size > 1 || multipleAttr) {
         selectElement = new ListBoxField(name, size, multipleAttr);
     }
     else {
         selectElement = new ComboBoxField(name);
     }
     String lang = element.GetAttribute(AttributeConstants.LANG);
     selectElement.SetProperty(Html2PdfProperty.FORM_ACCESSIBILITY_LANGUAGE, lang);
     selectElement.SetProperty(Html2PdfProperty.FORM_FIELD_FLATTEN, !context.IsCreateAcroForm());
     display = element.GetStyles() != null ? element.GetStyles().Get(CssConstants.DISPLAY) : null;
 }
コード例 #6
0
 /// <summary>
 /// Creates a new
 /// <see cref="SelectFieldListBoxRenderer"/>
 /// instance.
 /// </summary>
 /// <param name="modelElement">the model element</param>
 public SelectFieldListBoxRenderer(AbstractSelectField modelElement)
     : base(modelElement)
 {
 }