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"); }
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; }); }
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"); }
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); }
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()); }
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"); }
public void Create(PrintElementNodeBuilder builder, ICollection <PrintElementNode> elements, PrintElementNode elementNode) { builder.BuildElement(elements, elementNode, elementNode.ElementMetadata, "PrintViewStyles"); builder.BuildElement(elements, elementNode, elementNode.ElementMetadata, "PrintViewBlocks"); }