-
Type:
Bug
-
Resolution: Fixed
-
Priority:
Normal
-
Affects Version/s: None
-
Component/s: None
Define getColumnSize() in custom PivotRenderer, the actual output did not present as desired.
Sample code from pivottable-demo in SimplePivotConfigurator.java:
@Override
public PivotRenderer getRenderer() {
return new PivotRenderer() {
private DecimalFormat _fnf = new DecimalFormat("##,###.00");
private DecimalFormat _nnf = new DecimalFormat("##,###");
@Override
public String renderCell(Object data, Pivottable table,
PivotHeaderContext rowContext,
PivotHeaderContext columnContext, PivotField dataField) {
return data == null ? "" :
data instanceof Integer ? _nnf.format(data) : _fnf.format(data);
}
@Override
public String renderField(Object data, Pivottable table,
PivotField field) {
return field.getArea() == PivotField.AREA_DATA ?
field.getTitle() : String.valueOf(data);
}
@Override
public String renderSubtotalField(Object data, Pivottable table,
PivotField field, Calculator calculator) {
String calLabel = Texts.capitalize(calculator.getType());
String dataLabel = data == null ? "Null" : data.toString();
return dataLabel + " " + calLabel;
}
@Override
public String renderGrandTotalField(Pivottable table, PivotField field) {
if (field == null) return "Grand Total";
return "Grand Total of " + field.getTitle();
}
@Override
public int getColumnSize(Pivottable table, PivotHeaderContext columnContext, PivotField field) {
int columnSize = 100; //default column size
if(columnContext.isGrandTotal() && field != null) {
columnSize = 150;
} else {
if("Customer".equals(field.getTitle()))
columnSize = 300;
if("Price".equals(field.getTitle()))
columnSize = 90;
}
return columnSize;
}
@Override
public int getRowSize(Pivottable table,
PivotHeaderContext rowContext, PivotField field) {
return 20;
}
};
//return null; // use default renderer
}