field.setValueClass(Object.class);
}
templateDesign.addField(field);
// Add a Header Field to the headerBand
JRDesignTextField colHeaderField = new JRDesignTextField();
colHeaderField.setX(headerPosX);
colHeaderField.setY(headerPosY);
colHeaderField.setWidth(columnWidth);
colHeaderField.setHeight(headerHeight);
colHeaderField.setHorizontalAlignment(HorizontalAlignEnum.LEFT);
colHeaderField.setStyle(columnHeaderStyle);
colHeaderField.setStretchWithOverflow(true);
colHeaderField.setStretchType(StretchTypeEnum.RELATIVE_TO_TALLEST_OBJECT);
JRDesignExpression headerExpression = new JRDesignExpression();
headerExpression.setText('"' + columnName + '"');
colHeaderField.setExpression(headerExpression);
headerBand.addElement(colHeaderField);
// Add fields to the detailBand
if (this.converters.isEmpty()) {
// if no converters are used, create a field depending on the type
JRDesignElement designElement;
if (RenderedImage.class.isAssignableFrom(valueClass)) {
designElement = createImageElement(templateDesign, columnName);
addElement(detailBand, designElement, detailPosX, detailPosY,
columnWidth, detailHeight, columnDetailStyle);
} else {
JRDesignTextField textField = createTextField(columnName);
addElement(detailBand, textField, detailPosX, detailPosY,
columnWidth, detailHeight, columnDetailStyle);
}
} else {
// image element
JRDesignElement imageElement = createImageElement(templateDesign, columnName);
// condition: use this element for images
JRDesignExpression printWhenExpression = new JRDesignExpression();
printWhenExpression.setText("new Boolean($F{" + columnName + "}.getClass().equals(java.awt.image.BufferedImage.class))");
imageElement.setPrintWhenExpression(printWhenExpression);
addElement(detailBand, imageElement, detailPosX, detailPosY,
columnWidth, detailHeight, columnDetailStyle);
// text field element
JRDesignTextField textField = createTextField(columnName);
// condition: use this element for non-images
printWhenExpression = new JRDesignExpression();
printWhenExpression.setText("new Boolean(!$F{" + columnName + "}.getClass().equals(java.awt.image.BufferedImage.class))");
textField.setPrintWhenExpression(printWhenExpression);
addElement(detailBand, textField, detailPosX, detailPosY,
columnWidth, detailHeight, columnDetailStyle);
}