private static PrintElementBuildContext CreateItemContext(PrintElementList element, PrintElementBuildContext buildContext) { var contentWidth = (element.Border != null) ? BuildHelper.CalcContentWidth(buildContext.ElementWidth, element.Margin, element.Padding, element.Border.Thickness, new PrintElementThickness(element.MarkerOffsetSize)) : BuildHelper.CalcContentWidth(buildContext.ElementWidth, element.Margin, element.Padding, new PrintElementThickness(element.MarkerOffsetSize)); return(buildContext.Create(contentWidth)); }
private static void ApplyStartIndex(PrintElementList element, dynamic startIndex) { int startIndexInt; if (ConvertHelper.TryToInt(startIndex, out startIndexInt)) { element.StartIndex = startIndexInt; } }
private static void MarkerOffsetStyle(PrintElementList element, dynamic markerOffsetSize, dynamic markerOffsetSizeUnit) { double markerOffset; if (BuildHelper.TryToSizeInPixels(markerOffsetSize, markerOffsetSizeUnit, out markerOffset)) { element.MarkerOffsetSize = markerOffset; } }
public static void ApplyListStyles(this TextWriter result, PrintElementList element) { if (element.MarkerStyle != null) { result.Write("list-style-type:"); result.Write(GetMarkerStyle(element.MarkerStyle.Value)); result.Write(";"); } }
public void ShouldApplyStartIndex() { // Given dynamic elementMetadata = new DynamicWrapper(); elementMetadata.StartIndex = 5; // When PrintElementList element = BuildTestHelper.BuildList(elementMetadata); // Then Assert.IsNotNull(element); Assert.AreEqual(5, element.StartIndex); }
public void ShouldApplyMarkerStyle() { // Given dynamic elementMetadata = new DynamicWrapper(); elementMetadata.MarkerStyle = "Decimal"; // When PrintElementList element = BuildTestHelper.BuildList(elementMetadata); // Then Assert.IsNotNull(element); Assert.AreEqual(PrintElementListMarkerStyle.Decimal, element.MarkerStyle); }
private static void ApplyMarkerStyle(PrintElementList element, dynamic markerStyle) { string markerStyleString; if (ConvertHelper.TryToNormString(markerStyle, out markerStyleString)) { switch (markerStyleString) { case "none": element.MarkerStyle = PrintElementListMarkerStyle.None; break; case "disc": element.MarkerStyle = PrintElementListMarkerStyle.Disc; break; case "circle": element.MarkerStyle = PrintElementListMarkerStyle.Circle; break; case "square": element.MarkerStyle = PrintElementListMarkerStyle.Square; break; case "box": element.MarkerStyle = PrintElementListMarkerStyle.Box; break; case "lowerroman": element.MarkerStyle = PrintElementListMarkerStyle.LowerRoman; break; case "upperroman": element.MarkerStyle = PrintElementListMarkerStyle.UpperRoman; break; case "lowerlatin": element.MarkerStyle = PrintElementListMarkerStyle.LowerLatin; break; case "upperlatin": element.MarkerStyle = PrintElementListMarkerStyle.UpperLatin; break; case "decimal": element.MarkerStyle = PrintElementListMarkerStyle.Decimal; break; } } }
public void ShouldApplyMarkerOffsetSize() { // Given dynamic elementMetadata = new DynamicWrapper(); elementMetadata.MarkerOffsetSize = 10; elementMetadata.MarkerOffsetSizeUnit = "Px"; // When PrintElementList element = BuildTestHelper.BuildList(elementMetadata); // Then Assert.IsNotNull(element); Assert.AreEqual(10, element.MarkerOffsetSize); }
public void ShouldBuildList() { // Given var context = HtmlBuilderTestHelper.CreateHtmlBuilderContext(); var element = new PrintElementList(); var result = new TextWriterWrapper(); var item1 = new PrintElementRun { Text = "Item1" }; var item2 = new PrintElementRun { Text = "Item2" }; var item3 = new PrintElementRun { Text = "Item3" }; var par1 = new PrintElementParagraph(); var par2 = new PrintElementParagraph(); var par3 = new PrintElementParagraph(); par1.Inlines.Add(item1); par2.Inlines.Add(item2); par3.Inlines.Add(item3); var section1 = new PrintElementSection(); var section2 = new PrintElementSection(); var section3 = new PrintElementSection(); section1.Blocks.Add(par1); section2.Blocks.Add(par2); section3.Blocks.Add(par3); element.Items.Add(section1); element.Items.Add(section2); element.Items.Add(section3); element.MarkerStyle = PrintElementListMarkerStyle.LowerLatin; element.StartIndex = 24; // When context.Build(element, result.Writer); // Then Assert.AreEqual(Resources.ResultTestShouldBuildList, result.GetText()); }
public void ShouldBuildItems() { // Given dynamic run1 = new DynamicWrapper(); run1.Run = new DynamicWrapper(); run1.Run.Text = "Item1"; dynamic run2 = new DynamicWrapper(); run2.Run = new DynamicWrapper(); run2.Run.Text = "Item2"; dynamic item1 = new DynamicWrapper(); item1.Paragraph = new DynamicWrapper(); item1.Paragraph.Inlines = new[] { run1 }; dynamic item2 = new DynamicWrapper(); item2.Paragraph = new DynamicWrapper(); item2.Paragraph.Inlines = new[] { run2 }; dynamic elementMetadata = new DynamicWrapper(); elementMetadata.Items = new[] { item1, item2 }; // When PrintElementList element = BuildTestHelper.BuildList(elementMetadata); // Then Assert.IsNotNull(element); Assert.IsNotNull(element.Items); Assert.AreEqual(2, element.Items.Count); Assert.AreEqual("Item1", ((PrintElementRun)((PrintElementParagraph)element.Items[0].Blocks[0]).Inlines[0]).Text); Assert.AreEqual("Item2", ((PrintElementRun)((PrintElementParagraph)element.Items[1].Blocks[0]).Inlines[0]).Text); }
public object Create(PrintElementBuildContext buildContext, dynamic elementMetadata) { var element = new PrintElementList { Margin = BuildHelper.DefaultMargin, Padding = BuildHelper.DefaultPadding, MarkerStyle = PrintElementListMarkerStyle.None }; BuildHelper.ApplyTextProperties(element, buildContext.ElementStyle); BuildHelper.ApplyTextProperties(element, elementMetadata); BuildHelper.ApplyBlockProperties(element, buildContext.ElementStyle); BuildHelper.ApplyBlockProperties(element, elementMetadata); ApplyStartIndex(element, elementMetadata.StartIndex); ApplyMarkerStyle(element, elementMetadata.MarkerStyle); MarkerOffsetStyle(element, elementMetadata.MarkerOffsetSize, elementMetadata.MarkerOffsetSizeUnit); var itemContext = CreateItemContext(element, buildContext); // Генерация явно объявленных элементов списка var staticItems = buildContext.ElementBuilder.BuildElements(itemContext, elementMetadata.Items); if (staticItems != null) { foreach (var staticItem in staticItems) { var listItem = new PrintElementSection(); listItem.Blocks.Add(staticItem); element.Items.Add(listItem); } } // Генерация элементов списка по данным источника var listItemTemplate = elementMetadata.ItemTemplate; var listSource = buildContext.ElementSourceValue; if (listItemTemplate != null) { if (ConvertHelper.ObjectIsCollection(listSource)) { foreach (var itemSource in (IEnumerable)listSource) { itemContext.ElementSourceValue = itemSource; var dynamicItem = buildContext.ElementBuilder.BuildElement(itemContext, listItemTemplate); if (dynamicItem is PrintElementBlock) { var listItem = new PrintElementSection(); listItem.Blocks.Add(dynamicItem); element.Items.Add(listItem); } } } else if (buildContext.IsDesignMode) { // Отображение шаблона элемента в дизайнере itemContext.ElementSourceValue = null; var dynamicItem = buildContext.ElementBuilder.BuildElement(itemContext, listItemTemplate); if (dynamicItem is PrintElementBlock) { var listItem = new PrintElementSection(); listItem.Blocks.Add(dynamicItem); element.Items.Add(listItem); } } } BuildHelper.PostApplyTextProperties(element, buildContext.ElementStyle); BuildHelper.PostApplyTextProperties(element, elementMetadata); return(element); }