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); }
// 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); }
/// <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); }
/// <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); } }
/// <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; }
/// <summary> /// Creates a new /// <see cref="SelectFieldListBoxRenderer"/> /// instance. /// </summary> /// <param name="modelElement">the model element</param> public SelectFieldListBoxRenderer(AbstractSelectField modelElement) : base(modelElement) { }