/// <summary> /// Renders <paramref name="controls"/> to a document. /// </summary> /// <param name="controls">The controls to be rendered.</param> /// <param name="factory">The renderer factory.</param> /// <param name="level">The depth down the control tree being rendered (affects indenting).</param> /// <param name="allControls">The complete control list.</param> internal void Render(ControlList controls, ControlRendererFactory factory, int level, ControlList allControls) { IEnumerable<Control> orderedControls = controls.Where(c => this.controlsAccess.FirstOrDefault(a => a.ControlId == c.Id).AccessLevel == AccessLevel.Write).OrderBy(c => c.Position); foreach (Control control in orderedControls) { var renderer = factory.GetControlRenderer(control); renderer.Render(this.document, control, level, allControls); } }
/// <summary> /// Creates the document to be saved. /// </summary> /// <param name="product">The product to create a PDF for.</param> /// <param name="controlsAccess">The control access list.</param> private void CreateDocument(ProductDefinition product, List<ControlAccess> controlsAccess) { this.document = this.CreateDocument(product.Name); ControlListRenderer listRenderer = new ControlListRenderer(this.document, controlsAccess); ControlRendererFactory rendererFactory = new ControlRendererFactory(this.document, listRenderer); this.document.Styles.AddStyle(PdfResources.StyleNameMandatory, StyleNames.Normal); this.document.Styles[PdfResources.StyleNameMandatory].Font.Color = Colors.Red; foreach (var page in product.FormDefinition.Pages.Where(p => p.PageType == PageType.UserDefined)) { if (product.FormDefinition.Pages.Count > 1) { this.document.LastSection.AddParagraph(page.PageTitle, StyleNames.Heading1); } listRenderer.Render(page.Controls, rendererFactory, 0, product.FormDefinition.Pages.AllControls); } }
/// <summary> /// Initializes a new instance of the <see cref="LikertControlRenderer"/> class. /// </summary> /// <param name="listRenderer">The control list renderer instance.</param> /// <param name="factory">The control renderer factory.</param> public LikertControlRenderer(ControlListRenderer listRenderer, ControlRendererFactory factory) : base(listRenderer, factory) { }
/// <summary> /// Initializes a new instance of the <see cref="RepeaterOptionControlRenderer"/> class. /// </summary> /// <param name="listRenderer">The control list renderer instance.</param> /// <param name="factory">The control renderer factory.</param> public RepeaterOptionControlRenderer(ControlListRenderer listRenderer, ControlRendererFactory factory) : base(listRenderer, factory) { }
/// <summary> /// Initializes a new instance of the <see cref="ContainerControlRenderer"/> class. /// </summary> /// <param name="listRenderer">The control list renderer instance.</param> /// <param name="factory">The control renderer factory.</param> public ContainerControlRenderer(ControlListRenderer listRenderer, ControlRendererFactory factory) { this.ListRenderer = listRenderer; this.Factory = factory; }
/// <summary> /// Initializes a new instance of the <see cref="GroupControlRenderer"/> class. /// </summary> /// <param name="listRenderer">The control list renderer instance.</param> /// <param name="factory">The control renderer factory.</param> public GroupControlRenderer(ControlListRenderer listRenderer, ControlRendererFactory factory) : base(listRenderer, factory) { }