private static Func <PrintElementNode, bool> InsertTableColumn(PrintElementNodeBuilder builder,
                                                                       ICollection <PrintElementNode> elements, PrintElementNode parentElementNode)
        {
            // Добавление столбца добавляет ячейку во все строки таблицы

            var getTableRowsFunc = GetTableRows(parentElementNode);
            var insertChildFunc  = BuildHelper.InsertChildToCollection(builder, elements, parentElementNode, "Columns",
                                                                       false);

            return(columnElementNode =>
            {
                if (insertChildFunc(columnElementNode))
                {
                    var rows = getTableRowsFunc();

                    if (rows != null)
                    {
                        foreach (var row in rows)
                        {
                            row.InsertChild.TryInvoke(new PrintElementNode(row, "TableCell", new DynamicWrapper()));
                        }
                    }

                    return true;
                }

                return false;
            });
        }
        public void Create(PrintElementNodeBuilder builder, ICollection <PrintElementNode> elements,
                           PrintElementNode elementNode)
        {
            elementNode.CanCut = BuildHelper.CanCut(elementNode);
            elementNode.Cut    = BuildHelper.Cut(elementNode);

            elementNode.CanCopy = BuildHelper.CanCopy(elementNode);
            elementNode.Copy    = BuildHelper.Copy(elementNode);
        }
        public void Create(PrintElementNodeBuilder builder, ICollection <PrintElementNode> elements,
                           PrintElementNode elementNode)
        {
            elementNode.CanCut = BuildHelper.CanCut(elementNode);
            elementNode.Cut    = BuildHelper.Cut(elementNode);

            elementNode.CanCopy = BuildHelper.CanCopy(elementNode);
            elementNode.Copy    = BuildHelper.Copy(elementNode);

            builder.BuildElement(elements, elementNode, elementNode.ElementMetadata, "TableColumns");
            builder.BuildElement(elements, elementNode, elementNode.ElementMetadata, "TableRows");
        }
Esempio n. 4
0
        public void Create(PrintElementNodeBuilder builder, ICollection <PrintElementNode> elements,
                           PrintElementNode elementNode)
        {
            elementNode.CanCut = BuildHelper.CanCut(elementNode);
            elementNode.Cut    = BuildHelper.Cut(elementNode);

            elementNode.CanCopy = BuildHelper.CanCopy(elementNode);
            elementNode.Copy    = BuildHelper.Copy(elementNode);

            builder.BuildElement(elements, elementNode, elementNode.ElementMetadata, "ListItems");
            builder.BuildElement(elements, elementNode, elementNode.ElementMetadata, "ListItemTemplate");
        }
        private static Func <PrintElementNode, bool> InsertTableRow(PrintElementNodeBuilder builder,
                                                                    ICollection <PrintElementNode> elements, PrintElementNode parentElementNode)
        {
            // Добавление строки добавляет в нее недостающие ячейки или удаляет из нее лишние

            var getColumnCountFunc  = GetTableColumnCount(parentElementNode);
            var getLastTableRowFunc = GetLastTableRow(parentElementNode);
            var insertChildFunc     = BuildHelper.InsertChildToCollection(builder, elements, parentElementNode, "Rows",
                                                                          false);

            return(rowElementNode =>
            {
                if (insertChildFunc(rowElementNode))
                {
                    var insertedRow = getLastTableRowFunc();

                    if (insertedRow != null)
                    {
                        var columnCount = getColumnCountFunc();
                        var insertedRowCellCount = insertedRow.Nodes.Count;

                        // Добавление недостающих ячеек
                        if (insertedRowCellCount < columnCount)
                        {
                            for (var i = insertedRowCellCount; i < columnCount; ++i)
                            {
                                var cellNode = new PrintElementNode(insertedRow, "TableCell", new DynamicWrapper());

                                insertedRow.InsertChild.TryInvoke(cellNode);
                            }
                        }
                        // Удаление лишних ячеек
                        else if (insertedRowCellCount > columnCount)
                        {
                            for (var i = insertedRowCellCount - 1; i >= columnCount; --i)
                            {
                                var cellNode = insertedRow.Nodes[i];

                                insertedRow.DeleteChild.TryInvoke(cellNode, false);
                            }
                        }
                    }

                    return true;
                }

                return false;
            });
        }
Esempio n. 6
0
        public void Create(PrintElementNodeBuilder builder, ICollection <PrintElementNode> elements,
                           PrintElementNode elementNode)
        {
            elementNode.ElementChildrenTypes = TableCells;
            elementNode.CanInsertChild       = BuildHelper.CanInsertChild(elementNode);
            elementNode.InsertChild          = BuildHelper.InsertChildToContainer(builder, elements, elementNode, "Header", false);

            elementNode.CanDeleteChild = BuildHelper.CanDeleteChild(elementNode);
            elementNode.DeleteChild    = BuildHelper.DeleteChildFromContainer(elements, elementNode, "Header", false);

            elementNode.CanPaste = BuildHelper.CanPaste(elementNode);
            elementNode.Paste    = BuildHelper.Paste(elementNode);

            builder.BuildElement(elements, elementNode, elementNode.ElementMetadata.Header, "TableCell");
        }
Esempio n. 7
0
        public void Create(PrintElementNodeBuilder builder, ICollection <PrintElementNode> elements,
                           PrintElementNode elementNode)
        {
            elementNode.ElementChildrenTypes = BuildHelper.BlockTypes;
            elementNode.CanInsertChild       = BuildHelper.CanInsertChild(elementNode);
            elementNode.InsertChild          = BuildHelper.InsertChildToContainer(builder, elements, elementNode, "ItemTemplate");

            elementNode.CanDeleteChild = BuildHelper.CanDeleteChild(elementNode);
            elementNode.DeleteChild    = BuildHelper.DeleteChildFromContainer(elements, elementNode, "ItemTemplate");

            elementNode.CanPaste = BuildHelper.CanPaste(elementNode);
            elementNode.Paste    = BuildHelper.Paste(elementNode);

            builder.BuildElement(elements, elementNode, elementNode.ElementMetadata.ItemTemplate);
        }
Esempio n. 8
0
        public void Create(PrintElementNodeBuilder builder, ICollection <PrintElementNode> elements,
                           PrintElementNode elementNode)
        {
            elementNode.ElementChildrenTypes = BuildHelper.BlockTypes;
            elementNode.CanInsertChild       = BuildHelper.CanInsertChild(elementNode);
            elementNode.InsertChild          = BuildHelper.InsertChildToCollection(builder, elements, elementNode, "Blocks");

            elementNode.CanDeleteChild = BuildHelper.CanDeleteChild(elementNode);
            elementNode.DeleteChild    = BuildHelper.DeleteChildFromCollection(elements, elementNode, "Blocks");

            elementNode.CanMoveChild = BuildHelper.CanMoveChild(elementNode);
            elementNode.MoveChild    = BuildHelper.MoveChildInCollection(elementNode, "Blocks");

            elementNode.CanPaste = BuildHelper.CanPaste(elementNode);
            elementNode.Paste    = BuildHelper.Paste(elementNode);

            builder.BuildElements(elements, elementNode, elementNode.ElementMetadata.Blocks);
        }
        public void Create(PrintElementNodeBuilder builder, ICollection <PrintElementNode> elements,
                           PrintElementNode elementNode)
        {
            elementNode.ElementChildrenTypes = TableColumns;
            elementNode.CanInsertChild       = BuildHelper.CanInsertChild(elementNode);
            elementNode.InsertChild          = InsertTableColumn(builder, elements, elementNode);

            elementNode.CanDeleteChild = BuildHelper.CanDeleteChild(elementNode);
            elementNode.DeleteChild    = DeleteTableColumn(elements, elementNode);

            elementNode.CanMoveChild = BuildHelper.CanMoveChild(elementNode);
            elementNode.MoveChild    = MoveTableColumn(elementNode);

            elementNode.CanPaste = BuildHelper.CanPaste(elementNode);
            elementNode.Paste    = BuildHelper.Paste(elementNode);

            builder.BuildElements(elements, elementNode, elementNode.ElementMetadata.Columns, "TableColumn");
        }
        static PrintViewTreeBuilder()
        {
            ElementBuilder = new PrintElementNodeBuilder();

            // Blocks
            ElementBuilder.Register("Section", Resources.Section, new PrintElementSectionNodeFactory());
            ElementBuilder.Register("Paragraph", Resources.Paragraph, new PrintElementParagraphNodeFactory());
            ElementBuilder.Register("List", Resources.List, new PrintElementListNodeFactory());
            ElementBuilder.Register("ListItemTemplate", Resources.ListItemTemplate,
                                    new PrintElementListItemTemplateNodeFactory());
            ElementBuilder.Register("ListItems", Resources.ListItems, new PrintElementListItemsNodeFactory());
            ElementBuilder.Register("Table", Resources.Table, new PrintElementTableNodeFactory());
            ElementBuilder.Register("TableColumns", Resources.TableColumns, new PrintElementTableColumnsNodeFactory());
            ElementBuilder.Register("TableColumn", Resources.TableColumn, new PrintElementTableColumnNodeFactory());
            ElementBuilder.Register("TableColumnHeader", Resources.TableColumnHeader,
                                    new PrintElementTableColumnHeaderNodeFactory());
            ElementBuilder.Register("TableColumnCellTemplate", Resources.TableColumnCellTemplate,
                                    new PrintElementTableColumnCellTemplateNodeFactory());
            ElementBuilder.Register("TableRows", Resources.TableRows, new PrintElementTableRowsNodeFactory());
            ElementBuilder.Register("TableRow", Resources.TableRow, new PrintElementTableRowNodeFactory());
            ElementBuilder.Register("TableCell", Resources.TableCell, new PrintElementTableCellNodeFactory());
            ElementBuilder.Register("Line", Resources.Line, new PrintElementLineNodeFactory());
            ElementBuilder.Register("PageBreak", Resources.PageBreak, new PrintElementPageBreakNodeFactory());

            // Inlines
            ElementBuilder.Register("Span", Resources.Span, new PrintElementSpanNodeFactory());
            ElementBuilder.Register("Bold", Resources.Bold, new PrintElementBoldNodeFactory());
            ElementBuilder.Register("Italic", Resources.Italic, new PrintElementItalicNodeFactory());
            ElementBuilder.Register("Underline", Resources.Underline, new PrintElementUnderlineNodeFactory());
            ElementBuilder.Register("Hyperlink", Resources.Hyperlink, new PrintElementHyperlinkNodeFactory());
            ElementBuilder.Register("LineBreak", Resources.LineBreak, new PrintElementLineBreakNodeFactory());
            ElementBuilder.Register("Run", Resources.Run, new PrintElementRunNodeFactory());
            ElementBuilder.Register("Image", Resources.Image, new PrintElementImageNodeFactory());
            ElementBuilder.Register("BarcodeEan13", Resources.BarcodeEan13, new PrintElementBarcodeEan13NodeFactory());
            ElementBuilder.Register("BarcodeQr", Resources.BarcodeQr, new PrintElementBarcodeQrNodeFactory());

            // Views
            ElementBuilder.Register("PrintView", Resources.PrintView, new PrintViewNodeFactory());
            ElementBuilder.Register("PrintViewStyles", Resources.PrintViewStyles, new PrintViewStylesNodeFactory());
            ElementBuilder.Register("PrintViewStyle", Resources.PrintViewStyle, new PrintViewStyleNodeFactory());
            ElementBuilder.Register("PrintViewBlocks", Resources.PrintViewBlocks, new PrintViewBlocksNodeFactory());
        }
Esempio n. 11
0
        public void Create(PrintElementNodeBuilder builder, ICollection <PrintElementNode> elements,
                           PrintElementNode elementNode)
        {
            elementNode.ElementChildrenTypes = TableCells;
            elementNode.CanInsertChild       = CanInsertTableRowCell(elementNode);
            elementNode.InsertChild          = BuildHelper.InsertChildToCollection(builder, elements, elementNode, "Cells", false);

            elementNode.CanDeleteChild = CanDeleteTableRowCell(elementNode);
            elementNode.DeleteChild    = BuildHelper.DeleteChildFromCollection(elements, elementNode, "Cells", false);

            elementNode.CanMoveChild = BuildHelper.CanMoveChild(elementNode);
            elementNode.MoveChild    = BuildHelper.MoveChildInCollection(elementNode, "Cells", false);

            elementNode.CanCut = BuildHelper.CanCut(elementNode);
            elementNode.Cut    = BuildHelper.Cut(elementNode);

            elementNode.CanCopy = BuildHelper.CanCopy(elementNode);
            elementNode.Copy    = BuildHelper.Copy(elementNode);

            elementNode.CanPaste = BuildHelper.CanPaste(elementNode);
            elementNode.Paste    = BuildHelper.Paste(elementNode);

            builder.BuildElements(elements, elementNode, elementNode.ElementMetadata.Cells, "TableCell");
        }
Esempio n. 12
0
 public void Create(PrintElementNodeBuilder builder, ICollection <PrintElementNode> elements,
                    PrintElementNode elementNode)
 {
     builder.BuildElement(elements, elementNode, elementNode.ElementMetadata, "PrintViewStyles");
     builder.BuildElement(elements, elementNode, elementNode.ElementMetadata, "PrintViewBlocks");
 }