Exemple #1
0
        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));
        }
Exemple #2
0
        private static void ApplyStartIndex(PrintElementList element, dynamic startIndex)
        {
            int startIndexInt;

            if (ConvertHelper.TryToInt(startIndex, out startIndexInt))
            {
                element.StartIndex = startIndexInt;
            }
        }
Exemple #3
0
        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(";");
     }
 }
Exemple #5
0
        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);
        }
Exemple #6
0
        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);
        }
Exemple #7
0
        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;
                }
            }
        }
Exemple #8
0
        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);
        }
Exemple #9
0
        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());
        }
Exemple #10
0
        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);
        }
Exemple #11
0
        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);
        }