public virtual void CalculateColumnWidthsNotPointValue()
        {
            PdfDocument pdfDoc    = new PdfDocument(new PdfWriter(new ByteArrayOutputStream()));
            Document    doc       = new Document(pdfDoc);
            Rectangle   layoutBox = new Rectangle(0, 0, 1000, 100);
            Table       table     = new Table(UnitValue.CreatePercentArray(new float[] { 10, 10, 80 }));

            // Set margins and paddings in percents, which is not expected
            table.SetProperty(Property.MARGIN_RIGHT, UnitValue.CreatePercentValue(7));
            table.SetProperty(Property.MARGIN_LEFT, UnitValue.CreatePercentValue(7));
            table.SetProperty(Property.PADDING_RIGHT, UnitValue.CreatePercentValue(7));
            table.SetProperty(Property.PADDING_LEFT, UnitValue.CreatePercentValue(7));
            // Fill the table somehow. The layout area is wide enough to calculate the widths as expected
            for (int i = 0; i < 3; i++)
            {
                table.AddCell("Hello");
            }
            // Create a TableRenderer, the instance of which will be used to test the application of margins and paddings
            TableRenderer tableRenderer = (TableRenderer)table.CreateRendererSubTree().SetParent(doc.GetRenderer());

            tableRenderer.bordersHandler = (TableBorders) new SeparatedTableBorders(tableRenderer.rows, 3, tableRenderer
                                                                                    .GetBorders(), 0);
            tableRenderer.ApplyMarginsAndPaddingsAndCalculateColumnWidths(layoutBox);
            // Specify that the render is not original in order not to recalculate the column widths
            tableRenderer.isOriginalNonSplitRenderer = false;
            MinMaxWidth minMaxWidth = tableRenderer.GetMinMaxWidth();

            // TODO DEVSIX-3676: currently margins and paddings are still applied as if they are in points. After the mentioned ticket is fixed, the expected values should be updated.
            NUnit.Framework.Assert.AreEqual(minMaxWidth.GetMaxWidth(), 332.46f, 0.001);
            NUnit.Framework.Assert.AreEqual(minMaxWidth.GetMinWidth(), 332.46f, 0.001);
        }
Beispiel #2
0
        public override CommandResultCode Execute(IExecutionContext context, CommandArguments args)
        {
            ISettingsHandler handler = Application as ISettingsHandler;
            if (handler == null) {
                Error.WriteLine("The application doesn't support settings.");
                return CommandResultCode.ExecutionFailed;
            }

            if (args.MoveNext())
                return CommandResultCode.SyntaxError;

            VarColumns[0].ResetWidth();
            VarColumns[1].ResetWidth();

            TableRenderer table = new TableRenderer(VarColumns, Out);
            table.EnableHeader = true;
            table.EnableFooter = true;
            foreach(KeyValuePair<string, string> setting in handler.Settings) {
                if (setting.Key == ApplicationSettings.SpecialLastCommand)
                    continue;

                ColumnValue[] row = new ColumnValue[4];
                row[0] = new ColumnValue(setting.Key);
                row[1] = new ColumnValue(setting.Value);
                table.AddRow(row);
            }

            table.CloseTable();
            Error.WriteLine();

            return CommandResultCode.Success;
        }
Beispiel #3
0
        private static Image GetWatermarkedImage(PdfDocument pdfDocument, Image img)
        {
            float width  = img.GetImageScaledWidth();
            float height = img.GetImageScaledHeight();

            Table table = InitTable(width);

            TableRenderer renderer = (TableRenderer)table.CreateRendererSubTree();

            renderer.SetParent(new DocumentRenderer(new Document(pdfDocument)));

            // Simulate the positioning of the renderer to find out how much space the table will occupy.
            LayoutResult result = renderer.Layout(new LayoutContext(new LayoutArea(
                                                                        1, new Rectangle(10000, 10000))));

            PdfFormXObject template = new PdfFormXObject(new Rectangle(width, height));

            new Canvas(template, pdfDocument)
            .Add(img)
            .Close();

            float left   = 0;
            float bottom = height - result.GetOccupiedArea().GetBBox().GetHeight();

            new Canvas(template, pdfDocument)
            .Add(table.SetFixedPosition(left, bottom, width))
            .Close();

            return(new Image(template));
        }
        public virtual void SpecialScriptPreLayoutProcessing()
        {
            PdfDocument  pdfDocument           = new PdfDocument(new PdfWriter(new MemoryStream()));
            Document     document              = new Document(pdfDocument);
            int          thaiTextSplitPosition = THAI_TEXT.Length / 2;
            PdfFont      font = PdfFontFactory.CreateFont(THAI_FONT, PdfEncodings.IDENTITY_H);
            TextRenderer textRendererFirstPart = new TextRenderer(new Text(THAI_TEXT.JSubstring(0, thaiTextSplitPosition
                                                                                                )));

            textRendererFirstPart.SetProperty(Property.FONT, font);
            textRendererFirstPart.SetText(THAI_TEXT.JSubstring(0, thaiTextSplitPosition));
            TextRenderer textRendererSecondPart = new TextRenderer(new Text(THAI_TEXT.Substring(thaiTextSplitPosition)
                                                                            ));

            textRendererSecondPart.SetProperty(Property.FONT, font);
            textRendererSecondPart.SetText(THAI_TEXT.Substring(thaiTextSplitPosition));
            TableRenderer floatingNonTextRenderer = new TableRenderer(new Table(3));

            floatingNonTextRenderer.SetProperty(Property.FLOAT, FloatPropertyValue.RIGHT);
            TableRenderer regularNonTextRenderer = new TableRenderer(new Table(3));
            LineRenderer  lineRenderer           = new LineRenderer();

            lineRenderer.SetParent(document.GetRenderer());
            lineRenderer.AddChild(textRendererFirstPart);
            lineRenderer.AddChild(floatingNonTextRenderer);
            lineRenderer.AddChild(textRendererSecondPart);
            lineRenderer.AddChild(regularNonTextRenderer);
            LineRenderer.SpecialScriptsContainingTextRendererSequenceInfo info = lineRenderer.GetSpecialScriptsContainingTextRendererSequenceInfo
                                                                                     (0);
            int         numberOfSequentialTextRenderers = info.numberOfSequentialTextRenderers;
            String      sequentialTextContent           = info.sequentialTextContent;
            IList <int> indicesOfFloating = info.indicesOfFloating;

            NUnit.Framework.Assert.AreEqual(3, numberOfSequentialTextRenderers);
            NUnit.Framework.Assert.AreEqual(THAI_TEXT, sequentialTextContent);
            NUnit.Framework.Assert.AreEqual(1, indicesOfFloating.Count);
            NUnit.Framework.Assert.AreEqual(1, (int)indicesOfFloating[0]);
            IList <int> possibleBreaks = new List <int>(JavaUtil.ArraysAsList(3, 8, 10, 12, 15, 20, 23, 26, 28, 30, 36));

            lineRenderer.DistributePossibleBreakPointsOverSequentialTextRenderers(0, numberOfSequentialTextRenderers,
                                                                                  possibleBreaks, indicesOfFloating);
            IList <int> possibleBreaksFirstPart = textRendererFirstPart.GetSpecialScriptsWordBreakPoints();

            NUnit.Framework.Assert.IsNotNull(possibleBreaksFirstPart);
            IList <int> possibleBreaksSecondPart = textRendererSecondPart.GetSpecialScriptsWordBreakPoints();

            NUnit.Framework.Assert.IsNotNull(possibleBreaksSecondPart);
            int         indexOfLastPossibleBreakInTheFirstRenderer = 4;
            IList <int> expectedPossibleBreaksFirstPart            = possibleBreaks.SubList(0, indexOfLastPossibleBreakInTheFirstRenderer
                                                                                            + 1);
            IList <int> expectedPossibleBreaksSecondPart = possibleBreaks.SubList(indexOfLastPossibleBreakInTheFirstRenderer
                                                                                  + 1, possibleBreaks.Count);

            NUnit.Framework.Assert.AreEqual(expectedPossibleBreaksFirstPart, possibleBreaksFirstPart);
            for (int i = 0; i < expectedPossibleBreaksSecondPart.Count; i++)
            {
                expectedPossibleBreaksSecondPart[i] = expectedPossibleBreaksSecondPart[i] - thaiTextSplitPosition;
            }
            NUnit.Framework.Assert.AreEqual(expectedPossibleBreaksSecondPart, possibleBreaksSecondPart);
        }
Beispiel #5
0
        public override CommandResultCode Execute(IExecutionContext context, CommandArguments args)
        {
            PropertyRegistry properties = Properties;
            if (properties == null) {
                Application.Error.WriteLine("the current context does not support properties.");
                return CommandResultCode.ExecutionFailed;
            }

            if (args.MoveNext()) {
                string name = args.Current;
                PropertyHolder holder = properties.GetProperty(name);
                if (holder == null)
                    return CommandResultCode.ExecutionFailed;

                PrintDescription(name, holder, Application.Error);
                return CommandResultCode.Success;
            }

            ProperiesColumns[0].ResetWidth();
            ProperiesColumns[1].ResetWidth();
            TableRenderer table = new TableRenderer(ProperiesColumns, Application.Out);
            foreach(KeyValuePair<string, PropertyHolder> entry in properties) {
                ColumnValue[] row = new ColumnValue[3];
                PropertyHolder holder = entry.Value;
                row[0] = new ColumnValue(entry.Key);
                row[1] = new ColumnValue(holder.Value);
                row[2] = new ColumnValue(holder.ShortDescription);
                table.AddRow(row);
            }
            table.CloseTable();
            return CommandResultCode.Success;
        }
        public virtual void MultipleFloatsFollowedByUnfittingThaiRenderer()
        {
            PdfDocument  pdfDocument  = new PdfDocument(new PdfWriter(new MemoryStream()));
            Document     document     = new Document(pdfDocument);
            LineRenderer lineRenderer = new LineRenderer();

            lineRenderer.SetParent(document.GetRenderer());
            PdfFont font = PdfFontFactory.CreateFont(THAI_FONT, PdfEncodings.IDENTITY_H);
            IDictionary <int, LayoutResult> specialScriptLayoutResults = new Dictionary <int, LayoutResult>();
            int indexOfThaiRenderer = 3;

            for (int i = 0; i < indexOfThaiRenderer; i++)
            {
                TableRenderer tableRenderer = new TableRenderer(new Table(3));
                tableRenderer.SetProperty(Property.FLOAT, FloatPropertyValue.LEFT);
                lineRenderer.AddChild(tableRenderer);
            }
            TextRenderer textRenderer = new TextRenderer(new Text(""));

            textRenderer.SetProperty(Property.FONT, font);
            textRenderer.SetText(THAI_WORD);
            textRenderer.SetSpecialScriptsWordBreakPoints(new List <int>(JavaUtil.ArraysAsList(THAI_WORD.Length)));
            lineRenderer.AddChild(textRenderer);
            LayoutArea layoutArea = new LayoutArea(1, new Rectangle(0, 0, 0, 100));

            specialScriptLayoutResults.Put(indexOfThaiRenderer, new LayoutResult(LayoutResult.NOTHING, layoutArea, null
                                                                                 , null));
            LineRenderer.LastFittingChildRendererData lastFittingChildRendererData = lineRenderer.GetIndexAndLayoutResultOfTheLastRendererToRemainOnTheLine
                                                                                         (indexOfThaiRenderer, specialScriptLayoutResults, false, new List <IRenderer>());
            NUnit.Framework.Assert.AreEqual(indexOfThaiRenderer, lastFittingChildRendererData.childIndex);
            NUnit.Framework.Assert.AreEqual(LayoutResult.NOTHING, lastFittingChildRendererData.childLayoutResult.GetStatus
                                                ());
        }
Beispiel #7
0
        public void TableRendererTest1()
        {
            var pointList = new List <Point>
            {
                new Point(1, 2),
                new Point(3, 4)
            };

            var tableIn = new Collection <Collection <object> >
            {
                new Collection <object> {
                    "y", "x"
                }
            };

            var renderer    = new TableRenderer <Point>(GetTableValues);
            var resultTable = renderer.MakeTableTable(pointList, tableIn);

            Assert.AreEqual(3, resultTable.Count);
            var header = resultTable[0] as Collection <object>;

            Assert.IsNotNull(header);
            Assert.AreEqual("report:Y", header[0]);
            Assert.AreEqual("report:X", header[1]);
            var row1 = resultTable[1] as Collection <object>;

            Assert.IsNotNull(row1);
            Assert.AreEqual(2, row1[0]);
            Assert.AreEqual(1, row1[1]);
        }
Beispiel #8
0
        public static void Main()
        {
            //var renderer = new TableRenderer<User>(new[] { "User Id", "Name", "Birthdate", "Location" }, user => user.Id, user => user.Name, user => user.DateOfBirth, user => string.Format("{0:00.00} : {1:00.00}", user.Location.Lat, user.Location.Lon));
            var renderer = new TableRenderer<User>();

            var rnd = new Random();

            while (true)
            {
                var users = new List<User>();
                var max = rnd.Next(5, 10);
                for (var x = 0; x <= max; x++)
                {
                    var user =
                        new User
                        {
                            Id = Guid.NewGuid(),
                            DateOfBirth = DateTimeOffset.Now.AddDays(rnd.Next(-6000, -3000)),
                            Location = new Location
                            {
                                Lat = rnd.Next(0, 90),
                                Lon = rnd.Next(-180, 180)
                            },
                            Name = "Test User"
                        };
                    users.Add(user);
                }
                renderer.Content = users;
                Thread.Sleep(1000);
            }
        }
        /// <summary>Table interface, providing full details about the comparison</summary>
        public Collection <object> DoTable(Collection <Collection <object> > tableIn)
        {
            var renderer    = new TableRenderer <IMeasurementComparison>(GetTableValues);
            var resultTable = renderer.MakeTableTable(Result.Values, tableIn);

            return(resultTable);
        }
Beispiel #10
0
        public virtual void TestProcessCellPointWidthValue()
        {
            Table table = new Table(UnitValue.CreatePercentArray(2)).UseAllAvailableWidth();

            table.SetMarginTop(5);
            for (int i = 0; i < 4; i++)
            {
                Cell cell = new Cell().Add(new Paragraph("smth" + i));
                cell.SetProperty(Property.WIDTH, UnitValue.CreatePointValue(250));
                table.AddCell(cell);
            }
            TableRenderer tableRenderer = new TableRenderer(table);

            CellRenderer[] row1 = new CellRenderer[] { new CellRenderer(table.GetCell(0, 0)), new CellRenderer(table.GetCell
                                                                                                                   (0, 1)) };
            CellRenderer[] row2 = new CellRenderer[] { new CellRenderer(table.GetCell(1, 0)), new CellRenderer(table.GetCell
                                                                                                                   (1, 1)) };
            tableRenderer.rows[0] = row1;
            tableRenderer.rows[1] = row2;
            table.SetBorder(new SolidBorder(ColorConstants.GREEN, 5));
            tableRenderer.bordersHandler = new SeparatedTableBorders(tableRenderer.rows, table.GetNumberOfColumns(), tableRenderer
                                                                     .GetBorders());
            TableWidths tableWidths            = new TableWidths(tableRenderer, 150, true, 15, 15);
            IList <TableWidths.CellInfo> cells = tableWidths.AutoLayoutCustom();

            foreach (TableWidths.CellInfo cell in cells)
            {
                tableWidths.ProcessCell(cell);
            }
        }
 protected internal override TableBorders UpdateBordersOnNewPage(bool isOriginalNonSplitRenderer, bool isFooterOrHeader
                                                                 , TableRenderer currentRenderer, TableRenderer headerRenderer, TableRenderer footerRenderer)
 {
     if (!isFooterOrHeader)
     {
         // collapse all cell borders
         if (isOriginalNonSplitRenderer)
         {
             if (null != rows)
             {
                 ProcessAllBordersAndEmptyRows();
                 rightBorderMaxWidth = GetMaxRightWidth();
                 leftBorderMaxWidth  = GetMaxLeftWidth();
             }
         }
     }
     if (null != footerRenderer)
     {
         float rightFooterBorderWidth = footerRenderer.bordersHandler.GetMaxRightWidth();
         float leftFooterBorderWidth  = footerRenderer.bordersHandler.GetMaxLeftWidth();
         leftBorderMaxWidth  = Math.Max(leftBorderMaxWidth, leftFooterBorderWidth);
         rightBorderMaxWidth = Math.Max(rightBorderMaxWidth, rightFooterBorderWidth);
     }
     if (null != headerRenderer)
     {
         float rightHeaderBorderWidth = headerRenderer.bordersHandler.GetMaxRightWidth();
         float leftHeaderBorderWidth  = headerRenderer.bordersHandler.GetMaxLeftWidth();
         leftBorderMaxWidth  = Math.Max(leftBorderMaxWidth, leftHeaderBorderWidth);
         rightBorderMaxWidth = Math.Max(rightBorderMaxWidth, rightHeaderBorderWidth);
     }
     return(this);
 }
 public virtual void CalculateColumnWidthsNotPointValue()
 {
     NUnit.Framework.Assert.That(() => {
         PdfDocument pdfDoc          = new PdfDocument(new PdfWriter(new FileStream("table_out.pdf", FileMode.Create)));
         Document doc                = new Document(pdfDoc);
         LayoutArea area             = new LayoutArea(1, new Rectangle(0, 0, 100, 100));
         LayoutContext layoutContext = new LayoutContext(area);
         Rectangle layoutBox         = area.GetBBox().Clone();
         Table table = new Table(UnitValue.CreatePercentArray(new float[] { 10, 10, 80 }));
         table.SetProperty(Property.MARGIN_RIGHT, UnitValue.CreatePercentValue(7));
         table.SetProperty(Property.MARGIN_LEFT, UnitValue.CreatePercentValue(7));
         table.SetProperty(Property.PADDING_RIGHT, UnitValue.CreatePercentValue(7));
         table.SetProperty(Property.PADDING_LEFT, UnitValue.CreatePercentValue(7));
         table.AddCell("Col a");
         table.AddCell("Col b");
         table.AddCell("Col c");
         table.AddCell("Value a");
         table.AddCell("Value b");
         table.AddCell("This is a long description for column c. " + "It needs much more space hence we made sure that the third column is wider."
                       );
         doc.Add(table);
         TableRenderer tableRenderer = (TableRenderer)table.GetRenderer();
         tableRenderer.ApplyMarginsAndPaddingsAndCalculateColumnWidths(layoutBox);
     }
                                 , NUnit.Framework.Throws.InstanceOf <NullReferenceException>())
     ;
 }
Beispiel #13
0
        public virtual void TestProcessCellsRemainWidth02()
        {
            TableRenderer tableRenderer        = CreateTableRendererWithDiffColspan(320);
            TableWidths   tableWidths          = new TableWidths(tableRenderer, 150, true, 15, 15);
            IList <TableWidths.CellInfo> cells = tableWidths.AutoLayoutCustom();

            foreach (TableWidths.CellInfo cell in cells)
            {
                tableWidths.ProcessCell(cell);
            }
        }
        public TableRenderer CreateTable()
        {
            var table = new TableRenderer();

            table.SetHeaders(Globalization.UIGlobalization.Id,
                             Globalization.UIGlobalization.Name,
                             Globalization.UIGlobalization.Energy,
                             Globalization.UIGlobalization.Protein,
                             Globalization.UIGlobalization.Fat,
                             Globalization.UIGlobalization.Carbohydrates);
            return(table);
        }
        public virtual void TestIsOriginalNonSplitRenderer()
        {
            Table table = new Table(1);

            table.AddCell(new Cell());
            table.AddCell(new Cell());
            table.AddCell(new Cell());
            TableRenderer original = (TableRenderer)table.CreateRendererSubTree();

            TableRenderer[] children      = original.Split(1);
            TableRenderer[] grandChildren = children[1].Split(1);
            NUnit.Framework.Assert.IsFalse(grandChildren[0].isOriginalNonSplitRenderer);
        }
Beispiel #16
0
        /// <summary>Creates a renderer subtree with root in the current table element.</summary>
        /// <remarks>
        /// Creates a renderer subtree with root in the current table element.
        /// Compared to
        /// <see cref="GetRenderer()"/>
        /// , the renderer returned by this method should contain all the child
        /// renderers for children of the current element.
        /// </remarks>
        /// <returns>
        /// a
        /// <see cref="iText.Layout.Renderer.TableRenderer"/>
        /// subtree for this element
        /// </returns>
        public override IRenderer CreateRendererSubTree()
        {
            TableRenderer rendererRoot = (TableRenderer)GetRenderer();

            foreach (IElement child in childElements)
            {
                bool childShouldBeAdded = isComplete || CellBelongsToAnyRowGroup((Cell)child, lastAddedRowGroups);
                if (childShouldBeAdded)
                {
                    rendererRoot.AddChild(child.CreateRendererSubTree());
                }
            }
            return(rendererRoot);
        }
Beispiel #17
0
            public TableHeaderEventHandler(Document doc)
            {
                this.doc = doc;
                InitTable();

                TableRenderer renderer = (TableRenderer)table.CreateRendererSubTree();

                renderer.SetParent(new DocumentRenderer(doc));

                // Simulate the positioning of the renderer to find out how much space the header table will occupy.
                LayoutResult result = renderer.Layout(new LayoutContext(new LayoutArea(0, PageSize.A4)));

                tableHeight = result.GetOccupiedArea().GetBBox().GetHeight();
            }
Beispiel #18
0
 public override CommandResultCode Execute(IExecutionContext context, CommandArguments args)
 {
     Columns[0].ResetWidth();
     Columns[1].ResetWidth();
     TableRenderer table = new TableRenderer(Columns, Out);
     foreach(KeyValuePair<string, string> alias in Application.Commands.Aliases) {
         ColumnValue[] row = new ColumnValue[2];
         row[0] = new ColumnValue(alias.Key);
         row[1] = new ColumnValue(alias.Value);
         table.AddRow(row);
     }
     table.CloseTable();
     return CommandResultCode.Success;
 }
Beispiel #19
0
        public virtual void TableRendererAddByIDTest()
        {
            DocumentRenderer documentRenderer = new DocumentRenderer(null);
            TableRenderer    tableRenderer    = new TableRenderer(new Table(5));

            tableRenderer.SetParent(documentRenderer);
            String id = "id5";

            tableRenderer.SetProperty(Property.ID, id);
            LayoutContext layoutContext = new LayoutContext(new LayoutArea(4, new Rectangle(50, 50)));

            tableRenderer.Layout(layoutContext);
            documentRenderer.GetTargetCounterHandler().PrepareHandlerToRelayout();
            NUnit.Framework.Assert.AreEqual((int?)4, TargetCounterHandler.GetPageByID(tableRenderer, id));
        }
Beispiel #20
0
        public override CommandResultCode Execute(IExecutionContext context, CommandArguments args)
        {
            Columns[0].ResetWidth();
            Columns[1].ResetWidth();
            TableRenderer table = new TableRenderer(Columns, Out);

            foreach (KeyValuePair <string, string> alias in Application.Commands.Aliases)
            {
                ColumnValue[] row = new ColumnValue[2];
                row[0] = new ColumnValue(alias.Key);
                row[1] = new ColumnValue(alias.Value);
                table.AddRow(row);
            }
            table.CloseTable();
            return(CommandResultCode.Success);
        }
Beispiel #21
0
        public override CommandResultCode Execute(IExecutionContext context, CommandArguments args)
        {
            IInformationProvider provider = Application as IInformationProvider;

            if (provider == null)
            {
                Error.WriteLine("The current context does not support information.");
                return(CommandResultCode.ExecutionFailed);
            }

            if (!args.MoveNext())
            {
                return(CommandResultCode.SyntaxError);
            }

            string infoName = args.Current;

            if (!provider.IsInfoSupported(infoName))
            {
                Error.WriteLine("Information " + infoName + " is not supported by the current context.");
                return(CommandResultCode.ExecutionFailed);
            }

            ColumnDesign[] columns = provider.GetColumns(infoName);
            for (int i = 0; i < columns.Length; i++)
            {
                columns[i].ResetWidth();
            }

            TableRenderer renderer = new TableRenderer(columns, Out);

            // TODO: make it configurable ...
            renderer.EnableHeader = true;
            renderer.EnableFooter = true;

            IList <ColumnValue[]> values = provider.GetValues(infoName);

            for (int i = 0; i < values.Count; i++)
            {
                ColumnValue[] rowValues = values[i];
                renderer.AddRow(rowValues);
            }

            renderer.Flush();
            renderer.CloseTable();
            return(CommandResultCode.Success);
        }
Beispiel #22
0
        private TableRenderer CreateTableRendererWithDiffColspan(int maxWidth)
        {
            Table         table         = CreateTableWithDiffColspan(maxWidth);
            TableRenderer tableRenderer = new TableRenderer(table);

            CellRenderer[] row1 = new CellRenderer[] { new CellRenderer(table.GetCell(0, 0)), null, null };
            CellRenderer[] row2 = new CellRenderer[] { null, new CellRenderer(table.GetCell(1, 1)), new CellRenderer(table
                                                                                                                     .GetCell(1, 2)) };
            CellRenderer[] row3 = new CellRenderer[] { new CellRenderer(table.GetCell(1, 0)), new CellRenderer(table.GetCell
                                                                                                                   (2, 1)), new CellRenderer(table.GetCell(2, 2)) };
            tableRenderer.rows[0]        = row1;
            tableRenderer.rows[1]        = row2;
            tableRenderer.rows[2]        = row3;
            tableRenderer.bordersHandler = new SeparatedTableBorders(tableRenderer.rows, table.GetNumberOfColumns(), tableRenderer
                                                                     .GetBorders());
            return(tableRenderer);
        }
Beispiel #23
0
        public virtual void TestProcessCellsWithPercentWidth02()
        {
            PdfDocument pdfDoc = new PdfDocument(new PdfWriter(new MemoryStream()));
            Document    doc    = new Document(pdfDoc);
            Table       table  = new Table(UnitValue.CreatePercentArray(new float[] { 2, 1, 1 }));

            table.SetWidth(UnitValue.CreatePercentValue(80));
            table.SetHorizontalAlignment(HorizontalAlignment.CENTER);
            Cell c1 = new Cell(1, 3);

            c1.SetProperty(Property.WIDTH, UnitValue.CreatePercentValue(90));
            c1.Add(new Paragraph("Cell with colspan 3"));
            table.AddCell(c1);
            Cell c2 = new Cell(2, 1);

            c2.Add(new Paragraph("Cell with rowspan 2"));
            c2.SetProperty(Property.WIDTH, UnitValue.CreatePercentValue(50));
            table.AddCell(c2);
            table.AddCell(new Cell().Add(new Paragraph("row 1; cell 1")).SetMinWidth(200));
            table.AddCell(new Cell().Add(new Paragraph("row 1; cell 2")).SetMaxWidth(50));
            table.AddCell("row 2; cell 1");
            table.AddCell("row 2; cell 2");
            TableRenderer tableRenderer = new TableRenderer(table);

            CellRenderer[] row1 = new CellRenderer[] { new CellRenderer(table.GetCell(0, 0)), null, null };
            CellRenderer[] row2 = new CellRenderer[] { null, new CellRenderer(table.GetCell(1, 1)), new CellRenderer(table
                                                                                                                     .GetCell(1, 2)) };
            CellRenderer[] row3 = new CellRenderer[] { new CellRenderer(table.GetCell(1, 0)), new CellRenderer(table.GetCell
                                                                                                                   (2, 1)), new CellRenderer(table.GetCell(2, 2)) };
            tableRenderer.rows[0] = row1;
            tableRenderer.rows[1] = row2;
            tableRenderer.rows[2] = row3;
            table.SetBorder(new SolidBorder(ColorConstants.GREEN, 5));
            tableRenderer.bordersHandler = new SeparatedTableBorders(tableRenderer.rows, table.GetNumberOfColumns(), tableRenderer
                                                                     .GetBorders());
            TableWidths tableWidths            = new TableWidths(tableRenderer, 150, true, 15, 15);
            IList <TableWidths.CellInfo> cells = tableWidths.AutoLayoutCustom();

            foreach (TableWidths.CellInfo cell in cells)
            {
                tableWidths.ProcessCell(cell);
            }
            tableWidths.Recalculate(200);
            doc.Add(table);
            doc.Close();
        }
Beispiel #24
0
        private void ShowFree(NetworkContext context)
        {
            // Refresh
            context.Network.Refresh();

            MachineProfile[] machines = context.Network.GetAllMachineProfiles();
            if (machines.Length == 0)
            {
                Out.WriteLine("No machines in the network.");
            }
            else
            {
                ColumnDesign[] columns = new ColumnDesign[4];
                columns[0] = new ColumnDesign("Machine");
                columns[1] = new ColumnDesign("Used Memory");
                columns[2] = new ColumnDesign("Used Disk");
                columns[3] = new ColumnDesign("Notes");

                TableRenderer table = new TableRenderer(columns, Out);

                foreach (var machine in machines)
                {
                    ColumnValue[] row = new ColumnValue[4];
                    if (machine.IsError)
                    {
                        row[3] = new ColumnValue(" ERROR: " + machine.ErrorMessage);
                    }
                    else
                    {
                        row[0] = new ColumnValue(machine.ServiceAddress.ToString());
                        row[1] = new ColumnValue(MemoryReport(machine.MemoryUsed, machine.MemoryTotal));
                        row[2] = new ColumnValue(MemoryReport(machine.DiskUsed, machine.DiskTotal));
                        if (machine.DiskUsed > ((double)machine.DiskTotal * 0.85d))
                        {
                            row[3] = new ColumnValue(" WARNING: Node is close to full - used storage within 85% of total");
                        }
                    }

                    table.AddRow(row);
                }

                table.CloseTable();
            }
        }
Beispiel #25
0
 internal static void AdjustFloatedTableLayoutBox(TableRenderer tableRenderer, Rectangle layoutBox, float tableWidth
                                                  , IList <Rectangle> floatRendererAreas, FloatPropertyValue?floatPropertyValue)
 {
     tableRenderer.SetProperty(Property.HORIZONTAL_ALIGNMENT, null);
     UnitValue[] margins = tableRenderer.GetMargins();
     if (!margins[1].IsPointValue())
     {
         ILog logger = LogManager.GetLogger(typeof(iText.Layout.Renderer.FloatingHelper));
         logger.Error(MessageFormatUtil.Format(iText.IO.LogMessageConstant.PROPERTY_IN_PERCENTS_NOT_SUPPORTED, Property
                                               .MARGIN_RIGHT));
     }
     if (!margins[3].IsPointValue())
     {
         ILog logger = LogManager.GetLogger(typeof(iText.Layout.Renderer.FloatingHelper));
         logger.Error(MessageFormatUtil.Format(iText.IO.LogMessageConstant.PROPERTY_IN_PERCENTS_NOT_SUPPORTED, Property
                                               .MARGIN_LEFT));
     }
     AdjustBlockAreaAccordingToFloatRenderers(floatRendererAreas, layoutBox, tableWidth + margins[1].GetValue()
                                              + margins[3].GetValue(), FloatPropertyValue.LEFT.Equals(floatPropertyValue));
 }
Beispiel #26
0
        public async Task Table_Rendering_Does_Not_Crash()
        {
            var result = await _fixture.Table.GetAsync(_fixture.Request);

            var renderer        = new TableRenderer();
            var table           = renderer.Render(_fixture.Table, result);
            var orderedEntities = _fixture.DataSource.Get().OrderBy(x => x.Id).ToArray();

            Assert.Equal(orderedEntities.Length, table.Rows.Length);
            for (int i = 0; i < table.Rows.Length; i++)
            {
                Assert.Equal(table.DataTable.Columns.Length, table.Rows[i].Columns.Length);
                Assert.Equal(orderedEntities[i].Id, (int)table.Rows[i]["Id"].Value);
                Assert.Equal(orderedEntities[i].Name, (string)table.Rows[i]["Name"].Value);
                for (int j = 0; j < table.Columns.Length; j++)
                {
                    Assert.Equal(table.DataTable.Columns.Single(x => x.Target == j).Name, table.Rows[i][j].Column.Name);
                    Assert.Equal(table.DataTable.Columns[j].Name, table.Rows[i][j].Column.Name);
                }
            }
        }
Beispiel #27
0
        public override CommandResultCode Execute(IExecutionContext context, CommandArguments args)
        {
            ISettingsHandler handler = Application as ISettingsHandler;

            if (handler == null)
            {
                Error.WriteLine("The application doesn't support settings.");
                return(CommandResultCode.ExecutionFailed);
            }

            if (args.MoveNext())
            {
                return(CommandResultCode.SyntaxError);
            }

            VarColumns[0].ResetWidth();
            VarColumns[1].ResetWidth();

            TableRenderer table = new TableRenderer(VarColumns, Out);

            table.EnableHeader = true;
            table.EnableFooter = true;
            foreach (KeyValuePair <string, string> setting in handler.Settings)
            {
                if (setting.Key == ApplicationSettings.SpecialLastCommand)
                {
                    continue;
                }

                ColumnValue[] row = new ColumnValue[4];
                row[0] = new ColumnValue(setting.Key);
                row[1] = new ColumnValue(setting.Value);
                table.AddRow(row);
            }

            table.CloseTable();
            Error.WriteLine();

            return(CommandResultCode.Success);
        }
Beispiel #28
0
        public void Execute(int maxDegreeOfParallelism)
        {
            var semaphore     = new SemaphoreSlim(maxDegreeOfParallelism);
            var tableRenderer = new TableRenderer(_table, Output.Fancy);

            Parallel.ForEach(_parameters, (parameter, state, index) =>
            {
                try
                {
                    semaphore.Wait();
                    var progress = new CustomProgress <TReport>((report) => _progressHandler(report, _table.GetRow((int)index)));

                    _executor(parameter, progress);
                }
                finally
                {
                    semaphore.Release();
                }
            });

            tableRenderer.Dispose();
        }
Beispiel #29
0
    /// <inheritdoc/>
    protected override IEnumerable <Segment> Render(RenderContext context, int maxWidth)
    {
        if (context is null)
        {
            throw new ArgumentNullException(nameof(context));
        }

        var measurer = new TableMeasurer(this, context);

        // Calculate the column and table width
        var totalCellWidth = measurer.CalculateTotalCellWidth(maxWidth);
        var columnWidths   = measurer.CalculateColumnWidths(totalCellWidth);
        var tableWidth     = columnWidths.Sum() + measurer.GetNonColumnWidth();

        // Get the rows to render
        var rows = GetRenderableRows();

        // Render the table
        return(TableRenderer.Render(
                   new TableRendererContext(this, context, rows, tableWidth, maxWidth),
                   columnWidths));
    }
        public TableDto Execute(GetQueryResultsQuery dataQuery)
        {
            if (dataQuery == null)
            {
                throw new ArgumentNullException(nameof(dataQuery));
            }

            KeyValuePair <string, string>[] parameters = null;

            if (dataQuery.Parameters != null)
            {
                parameters = dataQuery.Parameters
                             .Select(_ => new KeyValuePair <string, string>(_.Key, _.Value))
                             .ToArray();
            }

            var queryResult = _queryExecutor.Execute(dataQuery.QueryId, dataQuery.UserId, parameters);

            var result = new TableRenderer().Render(queryResult);

            return(result);
        }
Beispiel #31
0
        public override CommandResultCode Execute(IExecutionContext context, CommandArguments args)
        {
            PropertyRegistry properties = Properties;

            if (properties == null)
            {
                Application.Error.WriteLine("the current context does not support properties.");
                return(CommandResultCode.ExecutionFailed);
            }

            if (args.MoveNext())
            {
                string         name   = args.Current;
                PropertyHolder holder = properties.GetProperty(name);
                if (holder == null)
                {
                    return(CommandResultCode.ExecutionFailed);
                }

                PrintDescription(name, holder, Application.Error);
                return(CommandResultCode.Success);
            }

            ProperiesColumns[0].ResetWidth();
            ProperiesColumns[1].ResetWidth();
            TableRenderer table = new TableRenderer(ProperiesColumns, Application.Out);

            foreach (KeyValuePair <string, PropertyHolder> entry in properties)
            {
                ColumnValue[]  row    = new ColumnValue[3];
                PropertyHolder holder = entry.Value;
                row[0] = new ColumnValue(entry.Key);
                row[1] = new ColumnValue(holder.Value);
                row[2] = new ColumnValue(holder.ShortDescription);
                table.AddRow(row);
            }
            table.CloseTable();
            return(CommandResultCode.Success);
        }
        public TableDto Execute(GetProjectTasksQuery dataQuery)
        {
            if (dataQuery == null)
            {
                throw new ArgumentNullException(nameof(dataQuery));
            }

            if (!_userAuthorityValidator.HasUserAuthorities(
                    dataQuery.UserId,
                    new[]
            {
                Authorities.UI.Project.Tasks.View
            },
                    dataQuery.ProjectId))
            {
                throw new UnauthorizedAccessException();
            }

            var user = _userProvider.Get(dataQuery.UserId);

            var role = _userRoleProvider.GetUserPreferedRoleForProject(user, dataQuery.ProjectId);

            if (role == null)
            {
                throw new UnauthorizedAccessException();
            }

            var request = _queryExecutor.Execute(
                role.TasksQueryId,
                dataQuery.UserId,
                new KeyValuePair <string, string>(
                    Variables.ProjectId,
                    dataQuery.ProjectId.ToString()));

            var result = new TableRenderer().Render(request);

            return(result);
        }
Beispiel #33
0
        public TableRendererTest()
        {
            ITableNodeParser nodeParser = Substitute.For <ITableNodeParser>();

            _tableState = new TableState
            {
                Filter   = new Dictionary <string, string>(), Page = 1, PageSize = 3,
                SortProp = "SortProp", AscSort = true
            };
            _tableConfig = Substitute.For <ITableConfig <TableEntity> >();
            _tableConfig.Columns.Returns(new Dictionary <string, ColumnConfig>());
            _tableConfig.Paging.Returns(new PagingConfig());
            _tableConfig.Footer.Returns(new FooterConfig());
            _tableConfig.Sorting.Returns(new SortingConfig());
            _tableConfig.Update.Returns(new UpdateConfig
            {
                Url   = "Url", BusyIndicatorId = "BusyId", Start = "start", Success = "success",
                Error = "error",
            });
            _tableConfig.Paging.Returns(new PagingConfig());
            nodeParser.Parse(Arg.Do <IEnumerable <TableNode> >(n => _nodes = n)).Returns(new HtmlString("Content"));
            _renderer = new TableRenderer <TableEntity>(_tableState, nodeParser);
        }
Beispiel #34
0
        public override CommandResultCode Execute(IExecutionContext context, CommandArguments args)
        {
            IInformationProvider provider = Application as IInformationProvider;
            if (provider == null) {
                Error.WriteLine("The current context does not support information.");
                return CommandResultCode.ExecutionFailed;
            }

            if (!args.MoveNext())
                return CommandResultCode.SyntaxError;

            string infoName = args.Current;
            if (!provider.IsInfoSupported(infoName)) {
                Error.WriteLine("Information " + infoName + " is not supported by the current context.");
                return CommandResultCode.ExecutionFailed;
            }

            ColumnDesign[] columns = provider.GetColumns(infoName);
            for (int i = 0; i < columns.Length; i++)
                columns[i].ResetWidth();

            TableRenderer renderer = new TableRenderer(columns, Out);
            // TODO: make it configurable ...
            renderer.EnableHeader = true;
            renderer.EnableFooter = true;

            IList<ColumnValue[]> values = provider.GetValues(infoName);
            for (int i = 0; i < values.Count; i++) {
                ColumnValue[] rowValues = values[i];
                renderer.AddRow(rowValues);
            }

            renderer.Flush();
            renderer.CloseTable();
            return CommandResultCode.Success;
        }
Beispiel #35
0
        public virtual void HeaderFooterTableTest()
        {
            String   outFileName = destinationFolder + "headerFooterTableTest.pdf";
            String   cmpFileName = sourceFolder + "cmp_headerFooterTableTest.pdf";
            Document doc         = new Document(new PdfDocument(new PdfWriter(outFileName)));
            Cell     bigCell     = new Cell().Add(new Paragraph("veryveryveryvery big cell")).SetBorder(new SolidBorder(ColorConstants
                                                                                                                        .RED, 40)).SetBorderBottom(Border.NO_BORDER).SetBorderTop(Border.NO_BORDER).SetPadding(0);
            Cell mediumCell = new Cell().Add(new Paragraph("mediumsize cell")).SetBorder(new SolidBorder(ColorConstants
                                                                                                         .GREEN, 30)).SetBorderBottom(Border.NO_BORDER).SetBorderTop(Border.NO_BORDER).SetPadding(0);
            Cell cell = new Cell().Add(new Paragraph("cell")).SetBorder(new SolidBorder(ColorConstants.BLUE, 10)).SetBorderBottom
                            (Border.NO_BORDER).SetBorderTop(Border.NO_BORDER).SetPadding(0);
            Table table = new Table(UnitValue.CreatePercentArray(3)).UseAllAvailableWidth().SetBorder(new SolidBorder(
                                                                                                          ColorConstants.BLACK, 20)).AddCell(mediumCell.Clone(true)).AddCell(mediumCell.Clone(true)).AddCell(mediumCell
                                                                                                                                                                                                             .Clone(true)).AddFooterCell(cell.Clone(true)).AddFooterCell(cell.Clone(true)).AddFooterCell(bigCell.Clone
                                                                                                                                                                                                                                                                                                             (true)).AddHeaderCell(bigCell.Clone(true)).AddHeaderCell(cell.Clone(true)).AddHeaderCell(cell.Clone(true
                                                                                                                                                                                                                                                                                                                                                                                                                 ));
            TableRenderer renderer    = (TableRenderer)table.CreateRendererSubTree().SetParent(doc.GetRenderer());
            MinMaxWidth   minMaxWidth = renderer.GetMinMaxWidth();
            Table         minTable    = new Table(new float[] { -1, -1, -1 }).SetWidth(UnitValue.CreatePointValue(1)).SetBorder(new
                                                                                                                                SolidBorder(ColorConstants.BLACK, 20)).SetMarginTop(20).AddCell(mediumCell.Clone(true)).AddCell(mediumCell
                                                                                                                                                                                                                                .Clone(true)).AddCell(mediumCell.Clone(true)).AddFooterCell(cell.Clone(true)).AddFooterCell(cell.Clone
                                                                                                                                                                                                                                                                                                                                (true)).AddFooterCell(bigCell.Clone(true)).AddHeaderCell(bigCell.Clone(true)).AddHeaderCell(cell.Clone
                                                                                                                                                                                                                                                                                                                                                                                                                                (true)).AddHeaderCell(cell.Clone(true));
            Table maxTable = new Table(new float[] { -1, -1, -1 }).SetBorder(new SolidBorder(ColorConstants.BLACK, 20)
                                                                             ).SetMarginTop(20).AddCell(mediumCell.Clone(true)).AddCell(mediumCell.Clone(true)).AddCell(mediumCell.
                                                                                                                                                                        Clone(true)).AddFooterCell(cell.Clone(true)).AddFooterCell(cell.Clone(true)).AddFooterCell(bigCell.Clone
                                                                                                                                                                                                                                                                       (true)).AddHeaderCell(bigCell.Clone(true)).AddHeaderCell(cell.Clone(true)).AddHeaderCell(cell.Clone(true
                                                                                                                                                                                                                                                                                                                                                                           ));

            doc.Add(table);
            doc.Add(minTable);
            doc.Add(maxTable);
            doc.Close();
            NUnit.Framework.Assert.IsNull(new CompareTool().CompareByContent(outFileName, cmpFileName, destinationFolder
                                                                             , "diff"));
        }