//Show the current value above the column name
int yOffset = 0;
GroupLayout layout = group.getLayout();
//Only the value in header
PropertyColumn column = group.getColumnToGroupBy();
Integer height = group.getHeaderVariablesHeight()!=null
? group.getHeaderVariablesHeight()
:getReport().getOptions().getDetailHeight();
//VALUE_IN_HEADER,
//VALUE_IN_HEADER_WITH_HEADERS,
//VALUE_IN_HEADER_AND_FOR_EACH,
//VALUE_IN_HEADER_AND_FOR_EACH_WITH_HEADERS
if (layout.isShowValueInHeader() && layout.isHideColumn() && !layout.isShowColumnName()){
//textfield for the current value
JRDesignTextField currentValue = generateTextFieldFromColumn(column, height.intValue(), group);
currentValue.setPositionType(JRDesignElement.POSITION_TYPE_FIX_RELATIVE_TO_TOP);
//The width will be all the page, except for the width of the header variables
int headerVariablesWidth = getReport().getOptions().getPrintableWidth();
if (!group.getHeaderVariables().isEmpty()){
DJGroupVariable leftmostcol = findLeftMostColumn(group.getHeaderVariables());
headerVariablesWidth = leftmostcol.getColumnToApplyOperation().getPosX().intValue();
if (groupLabelsPresent(group.getHeaderVariables())){
currentValue.setY(height.intValue());
currentValue.setHeight(getHeaderVariablesHeight(group));
}
}
currentValue.setWidth(headerVariablesWidth);
//fix the height depending on the font size
// currentValue.setHeight(FontHelper.getHeightFor(column.getStyle().getFont())); //XXX CAREFULL
yOffset += currentValue.getHeight();
//Move down existing elements in the band.
LayoutUtils.moveBandsElemnts(yOffset-1, headerBand); //Don't know why, but without the "-1" it wont show the headers
if (group.getLayout().isPrintHeaders()){
headerOffset += group.getHeaderHeight().intValue() + getReport().getOptions().getDetailHeight().intValue();
}
headerBand.addElement(currentValue);
}
//DEFAULT and DEFAULT_WITH_HEADER
else if (layout.isShowValueInHeader() && !layout.isHideColumn() && !layout.isShowColumnName()){
headerOffset = changeHeaderBandHeightForVariables(headerBand, group);
insertValueInHeader(headerBand, group, headerOffset);
}
//VALUE_IN_HEADER_WITH_HEADERS_AND_COLUMN_NAME
else if (layout.isShowValueInHeader() && layout.isHideColumn() && layout.isShowColumnName()){
//Create the element for the column name
JRDesignTextField columnNameTf = createColumnNameTextField(group, column);
columnNameTf.setY(columnNameTf.getY() + headerOffset);
//textfield for the current value
JRDesignTextField currentValue = generateTextFieldFromColumn(column, height.intValue(), group);
//The width will be (width of the page) - (column name width)
currentValue.setWidth(getReport().getOptions().getPrintableWidth() - columnNameTf.getWidth());
//The x position for the current value is right next to the column name
currentValue.setX(columnNameTf.getWidth());
//fix the height depending on the font size
currentValue.setHeight(FontHelper.getHeightFor(column.getStyle().getFont()));
columnNameTf.setHeight(currentValue.getHeight());
yOffset += currentValue.getHeight();
//Move down existing elements in the band.