List of usage examples for com.lowagie.text.pdf PdfPTable PdfPTable
public PdfPTable(PdfPTable table)
PdfPTable
. From source file:org.areasy.common.doclet.document.Members.java
License:Open Source License
/** * Prints member information.// ww w . j a va 2 s.c om * * @param declaration The modifiers ("public static final.."). * @param returnType Phrase with the return type text (might be * a hyperlink) * @param parms Parameters of a method or constructor, null for a field. * @param thrownExceptions Exceptions of a method, null for a field or constructor. * @param isFirst True if it is the first field/method/constructor in the list. * @param isField True if it is a field. * @param isConstructor True if it is a constructor. * @throws Exception */ public static void printMember(String declaration, Phrase returnType, ProgramElementDoc commentDoc, Parameter[] parms, ClassDoc[] thrownExceptions, boolean isFirst, boolean isField, boolean isConstructor, boolean isDeprecated, Phrase deprecatedPhrase, Object constantValue) throws Exception { String name = commentDoc.name(); State.setCurrentMember(State.getCurrentClass() + "." + name); State.setCurrentDoc(commentDoc); // Returns the text, resolving any "inheritDoc" inline tags String commentText = DocletUtility.getComment(commentDoc); // TODO: The following line may set the wrong page number // in the index, when the member gets printed on a // new page completely (because it is in one table). // Solution unknown yet. Probably split up table. Doclet.getIndex().addToMemberList(State.getCurrentMember()); // Prepare list of exceptions (if it throws any) String throwsText = "throws"; int parmsColumn = declaration.length() + (name.length() - throwsText.length()); // First output text line (declaration of method and first parameter or "()" ). // This first line is a special case because the class name is bold, // while the rest is regular plain text, so it must be built using three Chunks. Paragraph declarationParagraph = new Paragraph((float) 10.0); // left part / declaration ("public static..") Chunk leftPart = new Chunk(declaration, Fonts.getFont(CODE_FONT, 10)); declarationParagraph.add(leftPart); if (returnType != null) { // left middle part / declaration ("public static..") declarationParagraph.add(returnType); declarationParagraph.add(new Chunk(" ", Fonts.getFont(CODE_FONT, 10))); parmsColumn = 2; } // right middle part / bold class name declarationParagraph.add(new Chunk(name, Fonts.getFont(CODE_FONT, BOLD, 10))); if (!isField) { // 1st parameter or empty brackets if ((parms != null) && (parms.length > 0)) { Phrase wholePhrase = new Phrase("(", Fonts.getFont(CODE_FONT, 10)); // create link for parameter type wholePhrase.add(PDFUtility.getParameterTypePhrase(parms[0], 10)); // then normal text for parameter name wholePhrase.add(" " + parms[0].name()); if (parms.length > 1) { wholePhrase.add(","); } else { wholePhrase.add(")"); } // In order to have the parameter types in the bookmark, // make the current state text more detailled String txt = State.getCurrentMethod() + "("; for (int i = 0; i < parms.length; i++) { if (i > 0) txt = txt + ","; txt = txt + DocletUtility.getParameterType(parms[i]); } txt = txt + ")"; State.setCurrentMethod(txt); // right part / parameter and brackets declarationParagraph.add(wholePhrase); } else { String lastPart = "()"; State.setCurrentMethod(State.getCurrentMethod() + lastPart); // right part / parameter and brackets declarationParagraph.add(new Chunk(lastPart, Fonts.getFont(CODE_FONT, 10))); } } float[] widths = { (float) 6.0, (float) 94.0 }; PdfPTable table = new PdfPTable(widths); table.setWidthPercentage((float) 100); // Before the first constructor or method, create a coloured title bar if (isFirst) { PdfPCell colorTitleCell = null; // Some empty space... Document.add(new Paragraph((float) 6.0, " ")); if (isConstructor) colorTitleCell = new CustomPdfPCell("Constructors"); else if (isField) colorTitleCell = new CustomPdfPCell("Fields"); else colorTitleCell = new CustomPdfPCell("Methods"); colorTitleCell.setColspan(2); table.addCell(colorTitleCell); } // Method name (large, first line of a method description block) Phrase linkPhrase = Destinations.createDestination(commentDoc.name(), commentDoc, Fonts.getFont(TEXT_FONT, BOLD, 14)); Paragraph nameTitle = new Paragraph(linkPhrase); PdfPCell nameCell = new CellNoBorderNoPadding(nameTitle); if (isFirst) nameCell.setPaddingTop(10); else nameCell.setPaddingTop(0); nameCell.setPaddingBottom(8); nameCell.setColspan(1); // Create nested table in order to try to prevent the stuff inside // this table from being ripped appart over a page break. The method // name and the declaration/parm/exception line(s) should always be // together, because everything else just looks bad PdfPTable linesTable = new PdfPTable(1); linesTable.addCell(nameCell); linesTable.addCell(new CellNoBorderNoPadding(declarationParagraph)); if (!isField) { // Set up following declaration lines Paragraph[] params = PDFUtility.createParameters(parmsColumn, parms); Paragraph[] exceps = PDFUtility.createExceptions(parmsColumn, thrownExceptions); for (int i = 0; i < params.length; i++) { linesTable.addCell(new CellNoBorderNoPadding(params[i])); } for (int i = 0; i < exceps.length; i++) { linesTable.addCell(new CellNoBorderNoPadding(exceps[i])); } } // Create cell for inserting the nested table into the outer table PdfPCell cell = new PdfPCell(linesTable); cell.setPadding(5); cell.setBorder(Rectangle.NO_BORDER); cell.setColspan(2); table.addCell(cell); // The empty, left cell (the invisible indentation column) State.setContinued(true); PdfPCell leftCell = PDFUtility.createElementCell(5, new Phrase("", Fonts.getFont(TEXT_FONT, BOLD, 6))); PdfPCell spacingCell = new PdfPCell(); spacingCell.setFixedHeight((float) 8.0); spacingCell.setBorder(Rectangle.NO_BORDER); table.addCell(spacingCell); table.addCell(spacingCell); // The descriptive method explanation text if (isDeprecated) { Phrase commentPhrase = new Phrase(); commentPhrase .add(new Phrase(AbstractConfiguration.LB_DEPRECATED_TAG, Fonts.getFont(TEXT_FONT, BOLD, 10))); commentPhrase.add(deprecatedPhrase); table.addCell(leftCell); table.addCell(PDFUtility.createElementCell(0, commentPhrase)); commentPhrase = new Phrase(); commentPhrase.add(Chunk.NEWLINE); table.addCell(leftCell); table.addCell(PDFUtility.createElementCell(0, commentPhrase)); } Element[] objs = HtmlParserWrapper.createPdfObjects(commentText); if (objs.length == 1) { table.addCell(leftCell); table.addCell(PDFUtility.createElementCell(0, objs[0])); } else { table.addCell(leftCell); table.addCell(PDFUtility.createElementCell(0, Element.ALIGN_LEFT, objs)); } // TODO: FORMAT THIS CONSTANT VALUE OUTPUT CORRECTLY if (isField) { if (constantValue != null) { // Add 2nd comment line (left cell empty, right cell text) Chunk valueTextChunk = new Chunk("Constant value: ", Fonts.getFont(TEXT_FONT, PLAIN, 10)); Chunk valueContentChunk = new Chunk(constantValue.toString(), Fonts.getFont(CODE_FONT, BOLD, 10)); Phrase constantValuePhrase = new Phrase(""); constantValuePhrase.add(valueTextChunk); constantValuePhrase.add(valueContentChunk); table.addCell(leftCell); table.addCell(PDFUtility.createElementCell(0, constantValuePhrase)); } } // Add whole method block to document Document.add(table); }
From source file:org.areasy.common.doclet.document.Summary.java
License:Open Source License
/** * Prints inner classes summaries.//from ww w.j a va2 s . c o m * * @param name * @param destination * @param isDeprecated * @param deprecatedPhrase * @param mainTable * @throws Exception */ private static void printInnerClass(String name, String destination, boolean isDeprecated, Phrase deprecatedPhrase, PdfPTable mainTable) throws Exception { Element[] objs = HtmlParserWrapper.createPdfObjects(name); PdfPTable commentsTable = createColumnsAndDeprecated(objs, isDeprecated, deprecatedPhrase); PdfPTable anotherinnertable = new PdfPTable(1); anotherinnertable.setWidthPercentage(100f); anotherinnertable.getDefaultCell().setBorder(Rectangle.NO_BORDER); PdfPTable innerTable = addDeclaration("class", null); // right part of the table PdfPCell cell = PDFUtility.createElementCell(2, new LinkPhrase(destination, name, Fonts.getFont(CODE_FONT, 9))); cell.setPaddingTop((float) 2.0); cell.setPaddingLeft((float) 7.0); anotherinnertable.addCell(cell); anotherinnertable.addCell(commentsTable); innerTable.addCell(anotherinnertable); mainTable.addCell(innerTable); }
From source file:org.areasy.common.doclet.document.Summary.java
License:Open Source License
/** * Prints field summaries.//from w ww . java 2s. co m * @param constantValue * @param isDeprecated * @param deprecatedPhrase * @param mainTable * @throws Exception */ private static void printField(FieldDoc fieldDoc, Object constantValue, boolean isDeprecated, Phrase deprecatedPhrase, PdfPTable mainTable) throws Exception { String name = fieldDoc.name(); String modifier = fieldDoc.modifiers(); String commentText = DocletUtility.getFirstSentence(fieldDoc); String destination = fieldDoc.qualifiedName(); Element[] objs = HtmlParserWrapper.createPdfObjects(commentText); PdfPTable commentsTable = createColumnsAndDeprecated(objs, isDeprecated, deprecatedPhrase); if (constantValue != null) { // Add 2nd comment line (left cell empty, right cell text) commentsTable.addCell(new Phrase("")); Chunk valueTextChunk = new Chunk("Value: ", Fonts.getFont(TEXT_FONT, PLAIN, 10)); Chunk valueContentChunk = new Chunk(constantValue.toString(), Fonts.getFont(CODE_FONT, BOLD, 10)); Phrase constantValuePhrase = new Phrase(""); constantValuePhrase.add(valueTextChunk); constantValuePhrase.add(valueContentChunk); commentsTable.addCell(constantValuePhrase); } PdfPTable anotherinnertable = new PdfPTable(1); anotherinnertable.setWidthPercentage(100f); anotherinnertable.getDefaultCell().setBorder(Rectangle.NO_BORDER); PdfPTable innerTable = addDeclaration(modifier, null); // Link to field LinkPhrase linkPhrase = new LinkPhrase(destination, name, Fonts.getFont(CODE_FONT, 9)); // right part of the table PdfPCell cell = PDFUtility.createElementCell(2, linkPhrase); cell.setPaddingTop((float) 2.0); cell.setPaddingLeft((float) 7.0); anotherinnertable.addCell(cell); anotherinnertable.addCell(commentsTable); innerTable.addCell(anotherinnertable); mainTable.addCell(innerTable); }
From source file:org.areasy.common.doclet.document.Summary.java
License:Open Source License
/** * Prints constructor summaries.// w ww . ja v a 2 s. com * @param isDeprecated * @param deprecatedPhrase * @param mainTable * @throws Exception */ private static void printConstructor(ConstructorDoc constructorDoc, boolean isDeprecated, Phrase deprecatedPhrase, PdfPTable mainTable) throws Exception { String name = constructorDoc.name(); String modifier = constructorDoc.modifiers(); String commentText = DocletUtility.getFirstSentence(constructorDoc); String destination = constructorDoc.qualifiedName() + constructorDoc.signature(); Parameter[] parms = constructorDoc.parameters(); Element[] objs = HtmlParserWrapper.createPdfObjects(commentText); PdfPTable commentsTable = createColumnsAndDeprecated(objs, isDeprecated, deprecatedPhrase); PdfPTable anotherinnertable = new PdfPTable(1); anotherinnertable.setWidthPercentage(100f); anotherinnertable.getDefaultCell().setBorder(Rectangle.NO_BORDER); // Link to constructor Font constructorFont = Fonts.getFont(CODE_FONT, 9); Phrase phrase = new Phrase("", constructorFont); phrase.add(new LinkPhrase(destination, name, constructorFont)); phrase.add("("); if ((parms != null) && (parms.length > 0)) { for (int i = 0; i < parms.length; i++) { phrase.add(PDFUtility.getParameterTypePhrase(parms[i], 9)); phrase.add(" "); phrase.add(parms[i].name()); if (i != (parms.length - 1)) { phrase.add(", "); } } } phrase.add(")"); PdfPCell cell = PDFUtility.createElementCell(2, phrase); cell.setPaddingLeft((float) 7.0); anotherinnertable.addCell(cell); anotherinnertable.addCell(commentsTable); PdfPTable innerTable = addDeclaration(modifier, null); innerTable.addCell(anotherinnertable); mainTable.addCell(innerTable); }
From source file:org.areasy.common.doclet.document.Summary.java
License:Open Source License
/** * Prints the summary tables for a method. * @param modifier//from ww w . java 2s. c o m * @param returnType * @param isDeprecated * @param deprecatedPhrase * @param mainTable * @throws Exception */ private static void printMethod(MethodDoc methodDoc, String modifier, Phrase returnType, boolean isDeprecated, Phrase deprecatedPhrase, PdfPTable mainTable) throws Exception { String name = methodDoc.name(); String destination = methodDoc.qualifiedName() + methodDoc.signature(); String commentText = DocletUtility.getFirstSentence(methodDoc); Parameter[] parms = methodDoc.parameters(); // Create inner table for both columns (left column already filled in) PdfPTable rowTable = addDeclaration(modifier, returnType); // Inner table with 1st sentence of javadoc of this method. // We use a table in order to be able to create two cells // in it (1st an empty one for intendation) Element[] objs = HtmlParserWrapper.createPdfObjects(commentText); // Phrase descPhr = new Phrase(); PdfPTable commentsTable = createColumnsAndDeprecated(objs, isDeprecated, deprecatedPhrase); // Table with 1 column and 2 rows (row 1 is parameters etc., // row 2 is the description PdfPTable rightColumnInnerTable = new PdfPTable(1); rightColumnInnerTable.setWidthPercentage(100f); rightColumnInnerTable.getDefaultCell().setBorder(Rectangle.NO_BORDER); // Link to method Font methodFont = Fonts.getFont(CODE_FONT, 9); Phrase phrase = new Phrase("", methodFont); phrase.add(new LinkPhrase(destination, name, methodFont)); phrase.add("("); if ((parms != null) && (parms.length > 0)) { for (int i = 0; i < parms.length; i++) { phrase.add(PDFUtility.getParameterTypePhrase(parms[i], 9)); phrase.add(" "); phrase.add(parms[i].name()); if (i != (parms.length - 1)) { phrase.add(", "); } } } phrase.add(")"); PdfPCell cell = PDFUtility.createElementCell(2, phrase); cell.setPaddingLeft((float) 7.0); rightColumnInnerTable.addCell(cell); rightColumnInnerTable.addCell(commentsTable); // Now fill in right column as well rowTable.addCell(rightColumnInnerTable); // And add inner table to main summary table as a new row mainTable.addCell(rowTable); }
From source file:org.areasy.common.doclet.document.Summary.java
License:Open Source License
/** * Creates the inner table for both columns. The left column * already contains the declaration text part. * * @param text The text (like "static final"..) *///from w w w . j av a 2s. c om private static PdfPTable addDeclaration(String text, Phrase returnType) throws DocumentException { PdfPTable innerTable = new PdfPTable(2); innerTable.setWidthPercentage(100f); innerTable.getDefaultCell().setBorder(Rectangle.NO_BORDER); innerTable.setWidths(new int[] { 24, 76 }); Paragraph declarationParagraph = new Paragraph((float) 9.0); Chunk leftPart = new Chunk(text, Fonts.getFont(CODE_FONT, 9)); declarationParagraph.add(leftPart); if (returnType != null) { declarationParagraph.add(returnType); declarationParagraph.add(new Chunk(" ", Fonts.getFont(CODE_FONT, 9))); } PdfPCell cell = new CustomPdfPCell(Rectangle.RIGHT, declarationParagraph, 1, Color.gray); cell.setPaddingTop((float) 4.0); cell.setVerticalAlignment(PdfPCell.ALIGN_TOP); innerTable.addCell(cell); return innerTable; }
From source file:org.areasy.common.doclet.document.Summary.java
License:Open Source License
/** * Creates the two columns for the summary table and, if necessary, * fills in the "Deprecated" text. Otherwise, the given elements * are filled in.//from ww w . j av a 2 s . c om * * @param objs The description elements. * @param isDeprecated If true, the whole class/method is deprecated. * @param deprecatedPhrase The phrase for the deprecated text. * @return The summary table columns. * @throws DocumentException If something failed. */ private static PdfPTable createColumnsAndDeprecated(Element[] objs, boolean isDeprecated, Phrase deprecatedPhrase) throws DocumentException { PdfPTable commentsTable = null; commentsTable = new PdfPTable(2); commentsTable.setWidths(new int[] { 5, 95 }); commentsTable.setWidthPercentage(100f); commentsTable.getDefaultCell().setBorder(Rectangle.NO_BORDER); commentsTable.addCell(new Phrase("")); Phrase descPhr = new Phrase(); CellNoBorderNoPadding cell = new CellNoBorderNoPadding(descPhr); commentsTable.addCell(cell); if (isDeprecated) { // if the method is deprecated... // do not print the comment text... // just print the deprecated text descPhr.add(new Phrase(AbstractConfiguration.LB_DEPRECATED_TAG, Fonts.getFont(TEXT_FONT, BOLD, 10))); descPhr.add(deprecatedPhrase); } else if (objs.length != 0) { for (int i = 0; i < objs.length; i++) { if (objs[i] instanceof List) { cell.addElement(objs[i]); descPhr = new Phrase(""); cell.addElement(descPhr); } else { descPhr.add(objs[i]); } } } return commentsTable; }
From source file:org.areasy.common.doclet.document.TagLists.java
License:Open Source License
/** * Prints tags of a class member (method, field). * * @param title The bold face title text for the tag (like "Parameters:") * @param tags The list of tags to be printed. * @param compress If true, the text of all the given tags will be concatenated * into one, comma separated. This is used for the author tag, * for example, where several separate author tags should be * printed as one only.//from w w w .j av a 2 s. com * @param isMember If true, the whole tag paragraph is printed with additional * intendation (because it's a tag of a method, like the * "Parameters:" tag). * @throws Exception */ private static void printTags(String title, Tag[] tags, boolean compress, boolean isMember) throws Exception { if ((tags != null) && (tags.length > 0)) { float[] widthsMember = { (float) 6.0, (float) 4.0, (float) 94.0 }; float[] widthsClass = { (float) 6.0, (float) 94.0 }; PdfPTable table = null; if (isMember) { table = new PdfPTable(widthsMember); } else { table = new PdfPTable(widthsClass); } table.setWidthPercentage((float) 100); Paragraph empty = new Paragraph(" "); // Add empty line after the title ("Parameters:" etc.) if (isMember) { table.addCell(new CellNoBorderNoPadding(empty)); table.addCell(new CellNoBorderNoPadding(empty)); table.addCell(new CellNoBorderNoPadding(empty)); } PdfPCell titleCell = new CellNoBorderNoPadding( new Paragraph((float) 24.0, title, Fonts.getFont(TEXT_FONT, BOLD, 10))); titleCell.setColspan(2); if (isMember) { table.addCell(new CellNoBorderNoPadding(empty)); // indentation // column } table.addCell(titleCell); int number = tags.length; String tagText = ""; if (compress) { number = 1; for (int i = 0; i < tags.length; i++) { tagText = tagText + getTagText(tags[i]); if (i < tags.length - 1) { tagText = tagText + ", "; } } } for (int i = 0; i < number; i++) { // indentation columns if (isMember) { table.addCell(new CellNoBorderNoPadding(empty)); table.addCell(new CellNoBorderNoPadding(empty)); } else { table.addCell(new CellNoBorderNoPadding(empty)); } if (!compress) { tagText = getTagText(tags[i]); } Element[] elements = HtmlParserWrapper.createPdfObjects(tagText); table.addCell(PDFUtility.createElementCell(0, Element.ALIGN_LEFT, elements)); } // Add whole method block to document Document.instance().add(table); } }
From source file:org.areasy.common.doclet.document.tags.TagTABLE.java
License:Open Source License
private void createTable(int numcols) { table = new PdfPTable(numcols); String width = getAttribute("width"); if (width == null) table.setWidthPercentage(100);//w w w. j a v a2 s . c om else if (width.endsWith("%")) table.setWidthPercentage(HtmlTagUtility.parseFloat(width, 100f)); else table.setTotalWidth(HtmlTagUtility.parseFloat(width, 400f)); table.getDefaultCell().setPadding(HtmlTagUtility.parseFloat(getAttribute("cellpadding"), 2.0f)); table.getDefaultCell().setBackgroundColor(HtmlTagUtility.getColor(getAttribute("bgcolor"))); table.setHorizontalAlignment(HtmlTagUtility.getAlignment(getAttribute("align"), Element.ALIGN_CENTER)); /* Border doesn't have to have a value set */ if (getAttribute("border") != null) { table.getDefaultCell().setBorder(Rectangle.BOX); table.getDefaultCell().setBorderWidth(HtmlTagUtility.parseFloat(getAttribute("border"), 1.0f)); table.getDefaultCell().setBorderColor(HtmlTagUtility.getColor("gray")); } else { table.getDefaultCell().setBorder(Rectangle.NO_BORDER); table.getDefaultCell().setBorderWidth(0.0f); } //set width data for columns. setTableWidthsForCells(); }
From source file:org.areasy.common.doclet.utilities.PDFUtility.java
License:Open Source License
/** * Create a cell element.//from ww w . j a v a 2s . c o m */ public static PdfPCell createElementCell(int padding, int alignment, Element[] elements) { Element mainElement; // If there are no nested tables in content if (!hasTablesOrLists(elements)) { Paragraph para = new Paragraph(); para.setAlignment(alignment); for (int i = 0; i < elements.length; i++) { try { para.add(elements[i]); } catch (Exception e) { String msg = "Failed to add element to paragraph: " + e.toString(); DocletUtility.error(msg); } } mainElement = para; } else { PdfPTable cellTable = new PdfPTable(1); Paragraph currInnerPara = null; for (int i = 0; i < elements.length; i++) { Element element = elements[i]; /* Check for special element created by TagTABLE */ if (element instanceof TableParagraph) element = ((TableParagraph) elements[i]).getTable(); if (element instanceof PdfPTable || element instanceof List) { if (currInnerPara != null) { PdfPCell innerCell = createElementCell(0, alignment, currInnerPara); innerCell.setUseDescender(true); // needs newer iText innerCell.setUseAscender(true); // needs newer iText innerCell.setPaddingBottom(2.0f); cellTable.addCell(innerCell); } currInnerPara = null; cellTable.addCell(createElementCell(0, alignment, element)); } else { if (currInnerPara == null) { currInnerPara = new Paragraph(); currInnerPara.setAlignment(alignment); } try { currInnerPara.add(element); } catch (Exception e) { String msg = "Failed to add element to inner paragraph: " + e.toString(); DocletUtility.error(msg); } } } if (currInnerPara != null) cellTable.addCell(createElementCell(0, alignment, currInnerPara)); mainElement = cellTable; } return createElementCell(padding, alignment, mainElement); }