Search in sources :

Example 1 with RadioCheckField

use of com.lowagie.text.pdf.RadioCheckField in project dhis2-core by dhis2.

the class PdfFieldCell method cellLayout.

@Override
public void cellLayout(PdfPCell cell, Rectangle rect, PdfContentByte[] canvases) {
    try {
        PdfContentByte canvasText = canvases[PdfPTable.TEXTCANVAS];
        if (type == TYPE_RADIOBUTTON) {
            if (parent != null) {
                float leftLoc = rect.getLeft();
                float rightLoc = rect.getLeft() + RADIOBUTTON_WIDTH;
                String text;
                String value;
                for (int i = 0; i < texts.length; i++) {
                    text = texts[i];
                    value = values[i];
                    Rectangle radioRec = new Rectangle(leftLoc, rect.getTop() - height, rightLoc, rect.getTop());
                    RadioCheckField rf = new RadioCheckField(writer, radioRec, "RDBtn_" + text, value);
                    if (value != null && value.equals(checkValue)) {
                        rf.setChecked(true);
                    }
                    rf.setBorderColor(GrayColor.GRAYBLACK);
                    rf.setBackgroundColor(GrayColor.GRAYWHITE);
                    rf.setCheckType(RadioCheckField.TYPE_CIRCLE);
                    parent.addKid(rf.getRadioField());
                    leftLoc = rightLoc;
                    rightLoc += width;
                    ColumnText.showTextAligned(canvasText, Element.ALIGN_LEFT, new Phrase(text), leftLoc + RADIOBUTTON_TEXTOFFSET, height, 0);
                    leftLoc = rightLoc;
                    rightLoc += RADIOBUTTON_WIDTH;
                }
                writer.addAnnotation(parent);
            }
        } else if (type == TYPE_BUTTON) {
            // Add the push button
            PushbuttonField button = new PushbuttonField(writer, rect, name);
            button.setBackgroundColor(new GrayColor(0.75f));
            button.setBorderColor(GrayColor.GRAYBLACK);
            button.setBorderWidth(1);
            button.setBorderStyle(PdfBorderDictionary.STYLE_BEVELED);
            button.setTextColor(GrayColor.GRAYBLACK);
            button.setFontSize(PdfDataEntryFormUtil.UNITSIZE_DEFAULT);
            button.setText(text);
            button.setLayout(PushbuttonField.LAYOUT_ICON_LEFT_LABEL_RIGHT);
            button.setScaleIcon(PushbuttonField.SCALE_ICON_ALWAYS);
            button.setProportionalIcon(true);
            button.setIconHorizontalAdjustment(0);
            formField = button.getField();
            formField.setAction(PdfAction.javaScript(jsAction, writer));
        } else if (type == TYPE_CHECKBOX) {
            float extraCheckBoxOffset_Left = 2.0f;
            float extraCheckBoxOffset_Top = 1.5f;
            formField.setWidget(new Rectangle(rect.getLeft() + OFFSET_LEFT + extraCheckBoxOffset_Left, rect.getTop() - height - OFFSET_TOP - extraCheckBoxOffset_Top, rect.getLeft() + width + OFFSET_LEFT + extraCheckBoxOffset_Left, rect.getTop() - OFFSET_TOP - extraCheckBoxOffset_Top), PdfAnnotation.HIGHLIGHT_NONE);
        } else {
            if (type == TYPE_TEXT_ORGUNIT) {
                formField.setAdditionalActions(PdfName.BL, PdfAction.javaScript("if(event.value == '') app.alert('Please enter org unit identifier');", writer));
            }
            // TYPE_TEXT_NUMBER and TYPE_CHECKBOX cases included as well here
            formField.setWidget(new Rectangle(rect.getLeft() + OFFSET_LEFT, rect.getTop() - height - OFFSET_TOP, rect.getLeft() + width + OFFSET_LEFT, rect.getTop() - OFFSET_TOP), PdfAnnotation.HIGHLIGHT_NONE);
        }
        writer.addAnnotation(formField);
    } catch (DocumentException ex) {
        throw new RuntimeException(ex.getMessage());
    } catch (IOException ex) {
        throw new RuntimeException(ex.getMessage());
    }
}
Also used : RadioCheckField(com.lowagie.text.pdf.RadioCheckField) DocumentException(com.lowagie.text.DocumentException) Rectangle(com.lowagie.text.Rectangle) PdfContentByte(com.lowagie.text.pdf.PdfContentByte) Phrase(com.lowagie.text.Phrase) GrayColor(com.lowagie.text.pdf.GrayColor) IOException(java.io.IOException) PushbuttonField(com.lowagie.text.pdf.PushbuttonField)

Example 2 with RadioCheckField

use of com.lowagie.text.pdf.RadioCheckField in project dhis2-core by dhis2.

the class DefaultPdfDataEntryFormService method addCell_WithCheckBox.

private void addCell_WithCheckBox(PdfPTable table, PdfWriter writer, PdfPCell cell, String strfldName) throws IOException, DocumentException {
    float sizeDefault = PdfDataEntryFormUtil.UNITSIZE_DEFAULT;
    RadioCheckField checkbox = new RadioCheckField(writer, new Rectangle(sizeDefault, sizeDefault), "Yes", "On");
    checkbox.setBorderWidth(1);
    checkbox.setBorderColor(Color.BLACK);
    PdfFormField checkboxfield = checkbox.getCheckField();
    checkboxfield.setFieldName(strfldName + "_" + PdfFieldCell.TPYEDEFINE_NAME + PdfFieldCell.TYPE_CHECKBOX);
    setCheckboxAppearance(checkboxfield, writer.getDirectContent(), sizeDefault);
    cell.setCellEvent(new PdfFieldCell(checkboxfield, sizeDefault, sizeDefault, PdfFieldCell.TYPE_CHECKBOX, writer));
    table.addCell(cell);
}
Also used : RadioCheckField(com.lowagie.text.pdf.RadioCheckField) PdfFormField(com.lowagie.text.pdf.PdfFormField) Rectangle(com.lowagie.text.Rectangle)

Aggregations

Rectangle (com.lowagie.text.Rectangle)2 RadioCheckField (com.lowagie.text.pdf.RadioCheckField)2 DocumentException (com.lowagie.text.DocumentException)1 Phrase (com.lowagie.text.Phrase)1 GrayColor (com.lowagie.text.pdf.GrayColor)1 PdfContentByte (com.lowagie.text.pdf.PdfContentByte)1 PdfFormField (com.lowagie.text.pdf.PdfFormField)1 PushbuttonField (com.lowagie.text.pdf.PushbuttonField)1 IOException (java.io.IOException)1